Compare commits

...

22 Commits

Author SHA1 Message Date
Leonmmcoset
e5ff77ccb4 版本号 2026-04-21 22:48:27 +08:00
Leonmmcoset
46b7bf4fbc Wine适配1 2026-04-21 22:22:31 +08:00
LeonMMcoset
b0e58bd241 Merge pull request #5 from CLeonOS/codex/style-autofix-24725341745-1 2026-04-21 21:37:06 +08:00
Leonmmcoset
b5c8b64e27 style: auto-format C/C++ sources with clang-format 2026-04-21 13:34:30 +00:00
Leonmmcoset
d889ca93b9 Merge branch 'main' of https://github.com/Leonmmcoset/cleonos 2026-04-21 21:33:55 +08:00
Leonmmcoset
3eba641be3 panic切换页面 2026-04-21 21:33:51 +08:00
LeonMMcoset
7148243992 Merge pull request #4 from CLeonOS/codex/style-autofix-24723046469-1 2026-04-21 21:05:41 +08:00
Leonmmcoset
316545e74b style: auto-format C/C++ sources with clang-format 2026-04-21 12:45:02 +00:00
Leonmmcoset
a25362d3d4 修复actions 2026-04-21 20:44:28 +08:00
Leonmmcoset
5c7d66e3a6 linux同款panic二维码 2026-04-21 20:28:37 +08:00
Leonmmcoset
ad77805f7f 修复gitmodules 2026-04-21 18:51:42 +08:00
Leonmmcoset
de119e1be6 Makefile+QRCode增强 2026-04-21 18:45:56 +08:00
Leonmmcoset
201c5531eb 统计 2026-04-21 02:42:11 +08:00
LeonMMcoset
14293c9ca0 Merge pull request #3 from Leonmmcoset/codex/style-autofix-24683759803-1
style: auto-format C/C++ sources with clang-format
2026-04-21 02:39:57 +08:00
Leonmmcoset
cc6faf787a style: auto-format C/C++ sources with clang-format 2026-04-20 18:37:02 +00:00
Leonmmcoset
73728ebd91 1 2026-04-21 02:36:27 +08:00
Leonmmcoset
80f4327e79 w 2026-04-21 02:24:47 +08:00
Leonmmcoset
11d87f16a5 一堆代码 2026-04-21 02:12:12 +08:00
Leonmmcoset
27a51a0986 doom3 2026-04-20 23:46:16 +08:00
Leonmmcoset
16855e4b98 doom2 2026-04-20 23:09:38 +08:00
Leonmmcoset
dbd88505e6 Merge branch 'main' of https://github.com/Leonmmcoset/cleonos 2026-04-20 21:53:33 +08:00
Leonmmcoset
d7e1cb62ee doom1 2026-04-20 21:53:28 +08:00
73 changed files with 15272 additions and 1580 deletions

View File

@@ -1,180 +0,0 @@
# Details
Date : 2026-04-14 20:12:49
Directory d:\\Projects\\C\\cleonos
Total : 165 files, 13838 codes, 10 comments, 3547 blanks, all 17395 lines
[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
## Files
| filename | language | code | comment | blank | total |
| :--- | :--- | ---: | ---: | ---: | ---: |
| [CMakeLists.txt](/CMakeLists.txt) | CMake | 579 | 0 | 84 | 663 |
| [Makefile](/Makefile) | Makefile | 100 | 0 | 22 | 122 |
| [cleonos/c/apps/ansi\_main.c](/cleonos/c/apps/ansi_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/append\_main.c](/cleonos/c/apps/append_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/cat\_main.c](/cleonos/c/apps/cat_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/cd\_main.c](/cleonos/c/apps/cd_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/clear\_main.c](/cleonos/c/apps/clear_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/cp\_main.c](/cleonos/c/apps/cp_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/dmesg\_main.c](/cleonos/c/apps/dmesg_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/elfrunner\_kmain.c](/cleonos/c/apps/elfrunner_kmain.c) | C | 6 | 0 | 3 | 9 |
| [cleonos/c/apps/elfrunner\_main.c](/cleonos/c/apps/elfrunner_main.c) | C | 6 | 0 | 3 | 9 |
| [cleonos/c/apps/exec\_main.c](/cleonos/c/apps/exec_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/exit\_main.c](/cleonos/c/apps/exit_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/fsstat\_main.c](/cleonos/c/apps/fsstat_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/hello\_main.c](/cleonos/c/apps/hello_main.c) | C | 6 | 0 | 2 | 8 |
| [cleonos/c/apps/help\_main.c](/cleonos/c/apps/help_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/kbdstat\_main.c](/cleonos/c/apps/kbdstat_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/ls\_main.c](/cleonos/c/apps/ls_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/memc\_kmain.c](/cleonos/c/apps/memc_kmain.c) | C | 6 | 0 | 3 | 9 |
| [cleonos/c/apps/memc\_main.c](/cleonos/c/apps/memc_main.c) | C | 8 | 0 | 3 | 11 |
| [cleonos/c/apps/memstat\_main.c](/cleonos/c/apps/memstat_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/mkdir\_main.c](/cleonos/c/apps/mkdir_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/mv\_main.c](/cleonos/c/apps/mv_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/pid\_main.c](/cleonos/c/apps/pid_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/pwd\_main.c](/cleonos/c/apps/pwd_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/restart\_main.c](/cleonos/c/apps/restart_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/rm\_main.c](/cleonos/c/apps/rm_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/shell/shell\_cmd.c](/cleonos/c/apps/shell/shell_cmd.c) | C | 776 | 0 | 182 | 958 |
| [cleonos/c/apps/shell/shell\_external.c](/cleonos/c/apps/shell/shell_external.c) | C | 223 | 0 | 75 | 298 |
| [cleonos/c/apps/shell/shell\_input.c](/cleonos/c/apps/shell/shell_input.c) | C | 255 | 0 | 68 | 323 |
| [cleonos/c/apps/shell/shell\_internal.h](/cleonos/c/apps/shell/shell_internal.h) | C++ | 84 | 0 | 19 | 103 |
| [cleonos/c/apps/shell/shell\_path.c](/cleonos/c/apps/shell/shell_path.c) | C | 153 | 0 | 50 | 203 |
| [cleonos/c/apps/shell/shell\_script.c](/cleonos/c/apps/shell/shell_script.c) | C | 35 | 0 | 12 | 47 |
| [cleonos/c/apps/shell/shell\_util.c](/cleonos/c/apps/shell/shell_util.c) | C | 211 | 0 | 66 | 277 |
| [cleonos/c/apps/shell\_main.c](/cleonos/c/apps/shell_main.c) | C | 19 | 0 | 6 | 25 |
| [cleonos/c/apps/shstat\_main.c](/cleonos/c/apps/shstat_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/shutdown\_main.c](/cleonos/c/apps/shutdown_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/sleep\_main.c](/cleonos/c/apps/sleep_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/spawn\_main.c](/cleonos/c/apps/spawn_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/stats\_main.c](/cleonos/c/apps/stats_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/taskstat\_main.c](/cleonos/c/apps/taskstat_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/touch\_main.c](/cleonos/c/apps/touch_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/tty\_main.c](/cleonos/c/apps/tty_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/ttydrv\_main.c](/cleonos/c/apps/ttydrv_main.c) | C | 6 | 0 | 3 | 9 |
| [cleonos/c/apps/userstat\_main.c](/cleonos/c/apps/userstat_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/wait\_main.c](/cleonos/c/apps/wait_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/write\_main.c](/cleonos/c/apps/write_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/yield\_main.c](/cleonos/c/apps/yield_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/include/cleonos\_rust\_bridge.h](/cleonos/c/include/cleonos_rust_bridge.h) | C++ | 6 | 0 | 4 | 10 |
| [cleonos/c/include/cleonos\_syscall.h](/cleonos/c/include/cleonos_syscall.h) | C++ | 102 | 0 | 6 | 108 |
| [cleonos/c/src/runtime.c](/cleonos/c/src/runtime.c) | C | 8 | 0 | 5 | 13 |
| [cleonos/c/src/syscall.c](/cleonos/c/src/syscall.c) | C | 152 | 0 | 50 | 202 |
| [cleonos/c/stub.c](/cleonos/c/stub.c) | C | 3 | 4 | 2 | 9 |
| [cleonos/rust/src/lib.rs](/cleonos/rust/src/lib.rs) | Rust | 23 | 0 | 9 | 32 |
| [clks/arch/aarch64/boot.c](/clks/arch/aarch64/boot.c) | C | 6 | 0 | 1 | 7 |
| [clks/arch/x86\_64/boot.c](/clks/arch/x86_64/boot.c) | C | 6 | 0 | 1 | 7 |
| [clks/arch/x86\_64/exec\_stack\_call.S](/clks/arch/x86_64/exec_stack_call.S) | Go Assembly | 14 | 0 | 6 | 20 |
| [clks/arch/x86\_64/interrupt\_stubs.S](/clks/arch/x86_64/interrupt_stubs.S) | Go Assembly | 108 | 0 | 12 | 120 |
| [clks/drivers/serial/serial.c](/clks/drivers/serial/serial.c) | C | 52 | 0 | 16 | 68 |
| [clks/drivers/video/font8x8.c](/clks/drivers/video/font8x8.c) | C | 67 | 0 | 8 | 75 |
| [clks/drivers/video/font8x8.h](/clks/drivers/video/font8x8.h) | C++ | 5 | 0 | 3 | 8 |
| [clks/drivers/video/framebuffer.c](/clks/drivers/video/framebuffer.c) | C | 230 | 0 | 64 | 294 |
| [clks/drivers/video/psf\_font.c](/clks/drivers/video/psf_font.c) | C | 230 | 0 | 56 | 286 |
| [clks/drivers/video/psf\_font.h](/clks/drivers/video/psf_font.h) | C++ | 15 | 0 | 5 | 20 |
| [clks/include/clks/boot.h](/clks/include/clks/boot.h) | C++ | 11 | 0 | 4 | 15 |
| [clks/include/clks/compiler.h](/clks/include/clks/compiler.h) | C++ | 13 | 0 | 4 | 17 |
| [clks/include/clks/cpu.h](/clks/include/clks/cpu.h) | C++ | 20 | 0 | 4 | 24 |
| [clks/include/clks/desktop.h](/clks/include/clks/desktop.h) | C++ | 7 | 0 | 4 | 11 |
| [clks/include/clks/driver.h](/clks/include/clks/driver.h) | C++ | 28 | 0 | 8 | 36 |
| [clks/include/clks/elf64.h](/clks/include/clks/elf64.h) | C++ | 32 | 0 | 9 | 41 |
| [clks/include/clks/elfrunner.h](/clks/include/clks/elfrunner.h) | C++ | 6 | 0 | 3 | 9 |
| [clks/include/clks/exec.h](/clks/include/clks/exec.h) | C++ | 18 | 0 | 4 | 22 |
| [clks/include/clks/framebuffer.h](/clks/include/clks/framebuffer.h) | C++ | 23 | 0 | 5 | 28 |
| [clks/include/clks/fs.h](/clks/include/clks/fs.h) | C++ | 23 | 0 | 7 | 30 |
| [clks/include/clks/heap.h](/clks/include/clks/heap.h) | C++ | 15 | 0 | 4 | 19 |
| [clks/include/clks/interrupts.h](/clks/include/clks/interrupts.h) | C++ | 6 | 0 | 3 | 9 |
| [clks/include/clks/kelf.h](/clks/include/clks/kelf.h) | C++ | 9 | 0 | 5 | 14 |
| [clks/include/clks/kernel.h](/clks/include/clks/kernel.h) | C++ | 4 | 0 | 2 | 6 |
| [clks/include/clks/keyboard.h](/clks/include/clks/keyboard.h) | C++ | 20 | 0 | 5 | 25 |
| [clks/include/clks/limine.h](/clks/include/clks/limine.h) | C++ | 132 | 0 | 24 | 156 |
| [clks/include/clks/log.h](/clks/include/clks/log.h) | C++ | 14 | 0 | 5 | 19 |
| [clks/include/clks/mouse.h](/clks/include/clks/mouse.h) | C++ | 20 | 0 | 6 | 26 |
| [clks/include/clks/panic.h](/clks/include/clks/panic.h) | C++ | 7 | 0 | 3 | 10 |
| [clks/include/clks/pmm.h](/clks/include/clks/pmm.h) | C++ | 16 | 0 | 5 | 21 |
| [clks/include/clks/ramdisk.h](/clks/include/clks/ramdisk.h) | C++ | 17 | 0 | 8 | 25 |
| [clks/include/clks/scheduler.h](/clks/include/clks/scheduler.h) | C++ | 18 | 0 | 5 | 23 |
| [clks/include/clks/serial.h](/clks/include/clks/serial.h) | C++ | 6 | 0 | 2 | 8 |
| [clks/include/clks/service.h](/clks/include/clks/service.h) | C++ | 31 | 0 | 8 | 39 |
| [clks/include/clks/shell.h](/clks/include/clks/shell.h) | C++ | 7 | 0 | 3 | 10 |
| [clks/include/clks/string.h](/clks/include/clks/string.h) | C++ | 9 | 0 | 3 | 12 |
| [clks/include/clks/syscall.h](/clks/include/clks/syscall.h) | C++ | 55 | 0 | 4 | 59 |
| [clks/include/clks/task.h](/clks/include/clks/task.h) | C++ | 24 | 0 | 7 | 31 |
| [clks/include/clks/tty.h](/clks/include/clks/tty.h) | C++ | 14 | 0 | 4 | 18 |
| [clks/include/clks/types.h](/clks/include/clks/types.h) | C++ | 17 | 0 | 6 | 23 |
| [clks/include/clks/userland.h](/clks/include/clks/userland.h) | C++ | 12 | 0 | 4 | 16 |
| [clks/kernel/desktop.c](/clks/kernel/desktop.c) | C | 321 | 0 | 86 | 407 |
| [clks/kernel/driver.c](/clks/kernel/driver.c) | C | 163 | 0 | 48 | 211 |
| [clks/kernel/elf64.c](/clks/kernel/elf64.c) | C | 239 | 0 | 73 | 312 |
| [clks/kernel/elfrunner.c](/clks/kernel/elfrunner.c) | C | 30 | 0 | 8 | 38 |
| [clks/kernel/exec.c](/clks/kernel/exec.c) | C | 555 | 0 | 166 | 721 |
| [clks/kernel/fs.c](/clks/kernel/fs.c) | C | 698 | 0 | 220 | 918 |
| [clks/kernel/heap.c](/clks/kernel/heap.c) | C | 134 | 0 | 42 | 176 |
| [clks/kernel/interrupts.c](/clks/kernel/interrupts.c) | C | 302 | 0 | 43 | 345 |
| [clks/kernel/kelf.c](/clks/kernel/kelf.c) | C | 203 | 1 | 53 | 257 |
| [clks/kernel/keyboard.c](/clks/kernel/keyboard.c) | C | 259 | 0 | 64 | 323 |
| [clks/kernel/kmain.c](/clks/kernel/kmain.c) | C | 198 | 1 | 52 | 251 |
| [clks/kernel/limine\_requests.c](/clks/kernel/limine_requests.c) | C | 76 | 0 | 26 | 102 |
| [clks/kernel/log.c](/clks/kernel/log.c) | C | 123 | 0 | 33 | 156 |
| [clks/kernel/mouse.c](/clks/kernel/mouse.c) | C | 246 | 0 | 63 | 309 |
| [clks/kernel/panic.c](/clks/kernel/panic.c) | C | 179 | 0 | 60 | 239 |
| [clks/kernel/pmm.c](/clks/kernel/pmm.c) | C | 82 | 0 | 23 | 105 |
| [clks/kernel/ramdisk.c](/clks/kernel/ramdisk.c) | C | 172 | 0 | 50 | 222 |
| [clks/kernel/scheduler.c](/clks/kernel/scheduler.c) | C | 136 | 0 | 44 | 180 |
| [clks/kernel/service.c](/clks/kernel/service.c) | C | 113 | 0 | 34 | 147 |
| [clks/kernel/shell.c](/clks/kernel/shell.c) | C | 1,249 | 0 | 317 | 1,566 |
| [clks/kernel/syscall.c](/clks/kernel/syscall.c) | C | 492 | 0 | 110 | 602 |
| [clks/kernel/tty.c](/clks/kernel/tty.c) | C | 629 | 0 | 167 | 796 |
| [clks/kernel/userland.c](/clks/kernel/userland.c) | C | 124 | 0 | 35 | 159 |
| [clks/lib/libc\_compat.c](/clks/lib/libc_compat.c) | C | 25 | 0 | 7 | 32 |
| [clks/lib/string.c](/clks/lib/string.c) | C | 54 | 0 | 16 | 70 |
| [clks/rust/src/lib.rs](/clks/rust/src/lib.rs) | Rust | 21 | 0 | 6 | 27 |
| [cmake/check\_tools.cmake](/cmake/check_tools.cmake) | CMake | 32 | 0 | 6 | 38 |
| [cmake/log.cmake](/cmake/log.cmake) | CMake | 30 | 0 | 6 | 36 |
| [cmake/log\_emit.cmake](/cmake/log_emit.cmake) | CMake | 23 | 0 | 6 | 29 |
| [cmake/setup\_limine.cmake](/cmake/setup_limine.cmake) | CMake | 100 | 0 | 18 | 118 |
| [configs/limine.conf](/configs/limine.conf) | Properties | 6 | 0 | 1 | 7 |
| [docs/README.md](/docs/README.md) | Markdown | 31 | 0 | 4 | 35 |
| [docs/stage1.md](/docs/stage1.md) | Markdown | 41 | 0 | 5 | 46 |
| [docs/stage10.md](/docs/stage10.md) | Markdown | 34 | 0 | 6 | 40 |
| [docs/stage11.md](/docs/stage11.md) | Markdown | 36 | 0 | 5 | 41 |
| [docs/stage12.md](/docs/stage12.md) | Markdown | 40 | 0 | 6 | 46 |
| [docs/stage13.md](/docs/stage13.md) | Markdown | 34 | 0 | 6 | 40 |
| [docs/stage14.md](/docs/stage14.md) | Markdown | 44 | 0 | 8 | 52 |
| [docs/stage15.md](/docs/stage15.md) | Markdown | 47 | 0 | 7 | 54 |
| [docs/stage2.md](/docs/stage2.md) | Markdown | 30 | 0 | 5 | 35 |
| [docs/stage20.md](/docs/stage20.md) | Markdown | 46 | 0 | 6 | 52 |
| [docs/stage21.md](/docs/stage21.md) | Markdown | 72 | 0 | 7 | 79 |
| [docs/stage22.md](/docs/stage22.md) | Markdown | 68 | 0 | 7 | 75 |
| [docs/stage23.md](/docs/stage23.md) | Markdown | 41 | 0 | 6 | 47 |
| [docs/stage24.md](/docs/stage24.md) | Markdown | 42 | 0 | 7 | 49 |
| [docs/stage25.md](/docs/stage25.md) | Markdown | 58 | 0 | 7 | 65 |
| [docs/stage26.md](/docs/stage26.md) | Markdown | 32 | 0 | 7 | 39 |
| [docs/stage27.md](/docs/stage27.md) | Markdown | 28 | 0 | 7 | 35 |
| [docs/stage28.md](/docs/stage28.md) | Markdown | 37 | 0 | 7 | 44 |
| [docs/stage29.md](/docs/stage29.md) | Markdown | 33 | 0 | 7 | 40 |
| [docs/stage3.md](/docs/stage3.md) | Markdown | 29 | 0 | 5 | 34 |
| [docs/stage4.md](/docs/stage4.md) | Markdown | 30 | 0 | 5 | 35 |
| [docs/stage5.md](/docs/stage5.md) | Markdown | 29 | 0 | 5 | 34 |
| [docs/stage6.md](/docs/stage6.md) | Markdown | 30 | 0 | 6 | 36 |
| [docs/stage7.md](/docs/stage7.md) | Markdown | 34 | 0 | 6 | 40 |
| [docs/stage8.md](/docs/stage8.md) | Markdown | 31 | 0 | 6 | 37 |
| [docs/stage9.md](/docs/stage9.md) | Markdown | 31 | 0 | 6 | 37 |
| [docs/syscall.md](/docs/syscall.md) | Markdown | 251 | 0 | 124 | 375 |
| [ramdisk/shell/init.cmd](/ramdisk/shell/init.cmd) | Batch | 4 | 0 | 2 | 6 |
| [scripts/gen-tty-psf.ps1](/scripts/gen-tty-psf.ps1) | PowerShell | 171 | 2 | 42 | 215 |
| [wine/README.md](/wine/README.md) | Markdown | 37 | 0 | 14 | 51 |
| [wine/cleonos\_wine.py](/wine/cleonos_wine.py) | Python | 3 | 1 | 3 | 7 |
| [wine/cleonos\_wine\_lib/\_\_init\_\_.py](/wine/cleonos_wine_lib/__init__.py) | Python | 4 | 0 | 1 | 5 |
| [wine/cleonos\_wine\_lib/cli.py](/wine/cleonos_wine_lib/cli.py) | Python | 44 | 0 | 10 | 54 |
| [wine/cleonos\_wine\_lib/constants.py](/wine/cleonos_wine_lib/constants.py) | Python | 63 | 1 | 10 | 74 |
| [wine/cleonos\_wine\_lib/input\_pump.py](/wine/cleonos_wine_lib/input_pump.py) | Python | 82 | 0 | 17 | 99 |
| [wine/cleonos\_wine\_lib/platform.py](/wine/cleonos_wine_lib/platform.py) | Python | 37 | 0 | 4 | 41 |
| [wine/cleonos\_wine\_lib/runner.py](/wine/cleonos_wine_lib/runner.py) | Python | 753 | 0 | 137 | 890 |
| [wine/cleonos\_wine\_lib/state.py](/wine/cleonos_wine_lib/state.py) | Python | 104 | 0 | 27 | 131 |
| [wine/requirements.txt](/wine/requirements.txt) | pip requirements | 1 | 0 | 1 | 2 |
[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)

View File

@@ -1,113 +0,0 @@
# Diff Details
Date : 2026-04-14 20:12:49
Directory d:\\Projects\\C\\cleonos
Total : 98 files, 6203 codes, 2 comments, 1653 blanks, all 7858 lines
[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details
## Files
| filename | language | code | comment | blank | total |
| :--- | :--- | ---: | ---: | ---: | ---: |
| [CMakeLists.txt](/CMakeLists.txt) | CMake | 44 | 0 | 9 | 53 |
| [cleonos/c/apps/ansi\_main.c](/cleonos/c/apps/ansi_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/append\_main.c](/cleonos/c/apps/append_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/cat\_main.c](/cleonos/c/apps/cat_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/cd\_main.c](/cleonos/c/apps/cd_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/clear\_main.c](/cleonos/c/apps/clear_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/cp\_main.c](/cleonos/c/apps/cp_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/dmesg\_main.c](/cleonos/c/apps/dmesg_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/exec\_main.c](/cleonos/c/apps/exec_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/exit\_main.c](/cleonos/c/apps/exit_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/fsstat\_main.c](/cleonos/c/apps/fsstat_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/hello\_main.c](/cleonos/c/apps/hello_main.c) | C | 6 | 0 | 2 | 8 |
| [cleonos/c/apps/help\_main.c](/cleonos/c/apps/help_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/kbdstat\_main.c](/cleonos/c/apps/kbdstat_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/ls\_main.c](/cleonos/c/apps/ls_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/memstat\_main.c](/cleonos/c/apps/memstat_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/mkdir\_main.c](/cleonos/c/apps/mkdir_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/mv\_main.c](/cleonos/c/apps/mv_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/pid\_main.c](/cleonos/c/apps/pid_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/pwd\_main.c](/cleonos/c/apps/pwd_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/restart\_main.c](/cleonos/c/apps/restart_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/rm\_main.c](/cleonos/c/apps/rm_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/shell/shell\_cmd.c](/cleonos/c/apps/shell/shell_cmd.c) | C | 776 | 0 | 182 | 958 |
| [cleonos/c/apps/shell/shell\_external.c](/cleonos/c/apps/shell/shell_external.c) | C | 223 | 0 | 75 | 298 |
| [cleonos/c/apps/shell/shell\_input.c](/cleonos/c/apps/shell/shell_input.c) | C | 255 | 0 | 68 | 323 |
| [cleonos/c/apps/shell/shell\_internal.h](/cleonos/c/apps/shell/shell_internal.h) | C++ | 84 | 0 | 19 | 103 |
| [cleonos/c/apps/shell/shell\_path.c](/cleonos/c/apps/shell/shell_path.c) | C | 153 | 0 | 50 | 203 |
| [cleonos/c/apps/shell/shell\_script.c](/cleonos/c/apps/shell/shell_script.c) | C | 35 | 0 | 12 | 47 |
| [cleonos/c/apps/shell/shell\_util.c](/cleonos/c/apps/shell/shell_util.c) | C | 211 | 0 | 66 | 277 |
| [cleonos/c/apps/shell\_main.c](/cleonos/c/apps/shell_main.c) | C | -377 | 0 | -118 | -495 |
| [cleonos/c/apps/shstat\_main.c](/cleonos/c/apps/shstat_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/shutdown\_main.c](/cleonos/c/apps/shutdown_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/sleep\_main.c](/cleonos/c/apps/sleep_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/spawn\_main.c](/cleonos/c/apps/spawn_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/stats\_main.c](/cleonos/c/apps/stats_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/taskstat\_main.c](/cleonos/c/apps/taskstat_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/touch\_main.c](/cleonos/c/apps/touch_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/tty\_main.c](/cleonos/c/apps/tty_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/userstat\_main.c](/cleonos/c/apps/userstat_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/wait\_main.c](/cleonos/c/apps/wait_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/write\_main.c](/cleonos/c/apps/write_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/apps/yield\_main.c](/cleonos/c/apps/yield_main.c) | C | 4 | 0 | 3 | 7 |
| [cleonos/c/include/cleonos\_syscall.h](/cleonos/c/include/cleonos_syscall.h) | C++ | 42 | 0 | 1 | 43 |
| [cleonos/c/src/runtime.c](/cleonos/c/src/runtime.c) | C | -3 | 0 | -1 | -4 |
| [cleonos/c/src/syscall.c](/cleonos/c/src/syscall.c) | C | 63 | 0 | 21 | 84 |
| [clks/arch/x86\_64/exec\_stack\_call.S](/clks/arch/x86_64/exec_stack_call.S) | Go Assembly | 14 | 0 | 6 | 20 |
| [clks/drivers/video/framebuffer.c](/clks/drivers/video/framebuffer.c) | C | 68 | 0 | 22 | 90 |
| [clks/drivers/video/psf\_font.c](/clks/drivers/video/psf_font.c) | C | 71 | 0 | 21 | 92 |
| [clks/drivers/video/psf\_font.h](/clks/drivers/video/psf_font.h) | C++ | 1 | 0 | 1 | 2 |
| [clks/include/clks/desktop.h](/clks/include/clks/desktop.h) | C++ | 7 | 0 | 4 | 11 |
| [clks/include/clks/elf64.h](/clks/include/clks/elf64.h) | C++ | 5 | 0 | 1 | 6 |
| [clks/include/clks/exec.h](/clks/include/clks/exec.h) | C++ | 10 | 0 | 1 | 11 |
| [clks/include/clks/framebuffer.h](/clks/include/clks/framebuffer.h) | C++ | 3 | 0 | 1 | 4 |
| [clks/include/clks/keyboard.h](/clks/include/clks/keyboard.h) | C++ | 1 | 0 | 0 | 1 |
| [clks/include/clks/log.h](/clks/include/clks/log.h) | C++ | 2 | 0 | 1 | 3 |
| [clks/include/clks/mouse.h](/clks/include/clks/mouse.h) | C++ | 20 | 0 | 6 | 26 |
| [clks/include/clks/panic.h](/clks/include/clks/panic.h) | C++ | 7 | 0 | 3 | 10 |
| [clks/include/clks/syscall.h](/clks/include/clks/syscall.h) | C++ | 21 | 0 | 0 | 21 |
| [clks/include/clks/tty.h](/clks/include/clks/tty.h) | C++ | 2 | 0 | -1 | 1 |
| [clks/include/clks/userland.h](/clks/include/clks/userland.h) | C++ | 1 | 0 | 0 | 1 |
| [clks/kernel/desktop.c](/clks/kernel/desktop.c) | C | 321 | 0 | 86 | 407 |
| [clks/kernel/elf64.c](/clks/kernel/elf64.c) | C | 69 | 0 | 21 | 90 |
| [clks/kernel/exec.c](/clks/kernel/exec.c) | C | 504 | 0 | 151 | 655 |
| [clks/kernel/interrupts.c](/clks/kernel/interrupts.c) | C | 4 | 0 | 0 | 4 |
| [clks/kernel/keyboard.c](/clks/kernel/keyboard.c) | C | 60 | 0 | 22 | 82 |
| [clks/kernel/kmain.c](/clks/kernel/kmain.c) | C | 18 | 0 | 2 | 20 |
| [clks/kernel/log.c](/clks/kernel/log.c) | C | 44 | 0 | 16 | 60 |
| [clks/kernel/mouse.c](/clks/kernel/mouse.c) | C | 246 | 0 | 63 | 309 |
| [clks/kernel/panic.c](/clks/kernel/panic.c) | C | 179 | 0 | 60 | 239 |
| [clks/kernel/scheduler.c](/clks/kernel/scheduler.c) | C | 9 | 0 | 2 | 11 |
| [clks/kernel/shell.c](/clks/kernel/shell.c) | C | 389 | 0 | 87 | 476 |
| [clks/kernel/syscall.c](/clks/kernel/syscall.c) | C | 249 | 0 | 60 | 309 |
| [clks/kernel/tty.c](/clks/kernel/tty.c) | C | 354 | 0 | 90 | 444 |
| [clks/kernel/userland.c](/clks/kernel/userland.c) | C | 11 | 0 | 3 | 14 |
| [clks/lib/libc\_compat.c](/clks/lib/libc_compat.c) | C | 25 | 0 | 7 | 32 |
| [clks/rust/src/lib.rs](/clks/rust/src/lib.rs) | Rust | 21 | 0 | 6 | 27 |
| [docs/README.md](/docs/README.md) | Markdown | 9 | 0 | 2 | 11 |
| [docs/stage22.md](/docs/stage22.md) | Markdown | 68 | 0 | 7 | 75 |
| [docs/stage23.md](/docs/stage23.md) | Markdown | 41 | 0 | 6 | 47 |
| [docs/stage24.md](/docs/stage24.md) | Markdown | 42 | 0 | 7 | 49 |
| [docs/stage25.md](/docs/stage25.md) | Markdown | 58 | 0 | 7 | 65 |
| [docs/stage26.md](/docs/stage26.md) | Markdown | 32 | 0 | 7 | 39 |
| [docs/stage27.md](/docs/stage27.md) | Markdown | 28 | 0 | 7 | 35 |
| [docs/stage28.md](/docs/stage28.md) | Markdown | 37 | 0 | 7 | 44 |
| [docs/stage29.md](/docs/stage29.md) | Markdown | 33 | 0 | 7 | 40 |
| [docs/syscall.md](/docs/syscall.md) | Markdown | 251 | 0 | 124 | 375 |
| [ramdisk/shell/init.cmd](/ramdisk/shell/init.cmd) | Batch | -7 | 0 | 0 | -7 |
| [scripts/gen-tty-psf.ps1](/scripts/gen-tty-psf.ps1) | PowerShell | 107 | 0 | 24 | 131 |
| [wine/README.md](/wine/README.md) | Markdown | 37 | 0 | 14 | 51 |
| [wine/cleonos\_wine.py](/wine/cleonos_wine.py) | Python | 3 | 1 | 3 | 7 |
| [wine/cleonos\_wine\_lib/\_\_init\_\_.py](/wine/cleonos_wine_lib/__init__.py) | Python | 4 | 0 | 1 | 5 |
| [wine/cleonos\_wine\_lib/cli.py](/wine/cleonos_wine_lib/cli.py) | Python | 44 | 0 | 10 | 54 |
| [wine/cleonos\_wine\_lib/constants.py](/wine/cleonos_wine_lib/constants.py) | Python | 63 | 1 | 10 | 74 |
| [wine/cleonos\_wine\_lib/input\_pump.py](/wine/cleonos_wine_lib/input_pump.py) | Python | 82 | 0 | 17 | 99 |
| [wine/cleonos\_wine\_lib/platform.py](/wine/cleonos_wine_lib/platform.py) | Python | 37 | 0 | 4 | 41 |
| [wine/cleonos\_wine\_lib/runner.py](/wine/cleonos_wine_lib/runner.py) | Python | 753 | 0 | 137 | 890 |
| [wine/cleonos\_wine\_lib/state.py](/wine/cleonos_wine_lib/state.py) | Python | 104 | 0 | 27 | 131 |
| [wine/requirements.txt](/wine/requirements.txt) | pip requirements | 1 | 0 | 1 | 2 |
[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details

View File

@@ -1,100 +0,0 @@
"filename", "language", "pip requirements", "Python", "CMake", "Markdown", "Batch", "Rust", "C", "C++", "PowerShell", "Go Assembly", "comment", "blank", "total"
"d:\Projects\C\cleonos\CMakeLists.txt", "CMake", 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 9, 53
"d:\Projects\C\cleonos\cleonos\c\apps\ansi_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\append_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\cat_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\cd_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\clear_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\cp_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\dmesg_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\exec_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\exit_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\fsstat_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\hello_main.c", "C", 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 2, 8
"d:\Projects\C\cleonos\cleonos\c\apps\help_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\kbdstat_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\ls_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\memstat_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\mkdir_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\mv_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\pid_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\pwd_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\restart_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\rm_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_cmd.c", "C", 0, 0, 0, 0, 0, 0, 776, 0, 0, 0, 0, 182, 958
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_external.c", "C", 0, 0, 0, 0, 0, 0, 223, 0, 0, 0, 0, 75, 298
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_input.c", "C", 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 68, 323
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_internal.h", "C++", 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 19, 103
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_path.c", "C", 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 50, 203
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_script.c", "C", 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 12, 47
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_util.c", "C", 0, 0, 0, 0, 0, 0, 211, 0, 0, 0, 0, 66, 277
"d:\Projects\C\cleonos\cleonos\c\apps\shell_main.c", "C", 0, 0, 0, 0, 0, 0, -377, 0, 0, 0, 0, -118, -495
"d:\Projects\C\cleonos\cleonos\c\apps\shstat_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\shutdown_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\sleep_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\spawn_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\stats_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\taskstat_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\touch_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\tty_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\userstat_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\wait_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\write_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\yield_main.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\include\cleonos_syscall.h", "C++", 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 1, 43
"d:\Projects\C\cleonos\cleonos\c\src\runtime.c", "C", 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, -1, -4
"d:\Projects\C\cleonos\cleonos\c\src\syscall.c", "C", 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 21, 84
"d:\Projects\C\cleonos\clks\arch\x86_64\exec_stack_call.S", "Go Assembly", 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 6, 20
"d:\Projects\C\cleonos\clks\drivers\video\framebuffer.c", "C", 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 22, 90
"d:\Projects\C\cleonos\clks\drivers\video\psf_font.c", "C", 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 21, 92
"d:\Projects\C\cleonos\clks\drivers\video\psf_font.h", "C++", 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 2
"d:\Projects\C\cleonos\clks\include\clks\desktop.h", "C++", 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 4, 11
"d:\Projects\C\cleonos\clks\include\clks\elf64.h", "C++", 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 6
"d:\Projects\C\cleonos\clks\include\clks\exec.h", "C++", 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 1, 11
"d:\Projects\C\cleonos\clks\include\clks\framebuffer.h", "C++", 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 4
"d:\Projects\C\cleonos\clks\include\clks\keyboard.h", "C++", 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1
"d:\Projects\C\cleonos\clks\include\clks\log.h", "C++", 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 3
"d:\Projects\C\cleonos\clks\include\clks\mouse.h", "C++", 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 6, 26
"d:\Projects\C\cleonos\clks\include\clks\panic.h", "C++", 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 3, 10
"d:\Projects\C\cleonos\clks\include\clks\syscall.h", "C++", 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 21
"d:\Projects\C\cleonos\clks\include\clks\tty.h", "C++", 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, -1, 1
"d:\Projects\C\cleonos\clks\include\clks\userland.h", "C++", 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1
"d:\Projects\C\cleonos\clks\kernel\desktop.c", "C", 0, 0, 0, 0, 0, 0, 321, 0, 0, 0, 0, 86, 407
"d:\Projects\C\cleonos\clks\kernel\elf64.c", "C", 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 21, 90
"d:\Projects\C\cleonos\clks\kernel\exec.c", "C", 0, 0, 0, 0, 0, 0, 504, 0, 0, 0, 0, 151, 655
"d:\Projects\C\cleonos\clks\kernel\interrupts.c", "C", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 4
"d:\Projects\C\cleonos\clks\kernel\keyboard.c", "C", 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 22, 82
"d:\Projects\C\cleonos\clks\kernel\kmain.c", "C", 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 2, 20
"d:\Projects\C\cleonos\clks\kernel\log.c", "C", 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 16, 60
"d:\Projects\C\cleonos\clks\kernel\mouse.c", "C", 0, 0, 0, 0, 0, 0, 246, 0, 0, 0, 0, 63, 309
"d:\Projects\C\cleonos\clks\kernel\panic.c", "C", 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 60, 239
"d:\Projects\C\cleonos\clks\kernel\scheduler.c", "C", 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 2, 11
"d:\Projects\C\cleonos\clks\kernel\shell.c", "C", 0, 0, 0, 0, 0, 0, 389, 0, 0, 0, 0, 87, 476
"d:\Projects\C\cleonos\clks\kernel\syscall.c", "C", 0, 0, 0, 0, 0, 0, 249, 0, 0, 0, 0, 60, 309
"d:\Projects\C\cleonos\clks\kernel\tty.c", "C", 0, 0, 0, 0, 0, 0, 354, 0, 0, 0, 0, 90, 444
"d:\Projects\C\cleonos\clks\kernel\userland.c", "C", 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 3, 14
"d:\Projects\C\cleonos\clks\lib\libc_compat.c", "C", 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 7, 32
"d:\Projects\C\cleonos\clks\rust\src\lib.rs", "Rust", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 6, 27
"d:\Projects\C\cleonos\docs\README.md", "Markdown", 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 2, 11
"d:\Projects\C\cleonos\docs\stage22.md", "Markdown", 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 7, 75
"d:\Projects\C\cleonos\docs\stage23.md", "Markdown", 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 6, 47
"d:\Projects\C\cleonos\docs\stage24.md", "Markdown", 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 7, 49
"d:\Projects\C\cleonos\docs\stage25.md", "Markdown", 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 7, 65
"d:\Projects\C\cleonos\docs\stage26.md", "Markdown", 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 7, 39
"d:\Projects\C\cleonos\docs\stage27.md", "Markdown", 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 7, 35
"d:\Projects\C\cleonos\docs\stage28.md", "Markdown", 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 7, 44
"d:\Projects\C\cleonos\docs\stage29.md", "Markdown", 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 7, 40
"d:\Projects\C\cleonos\docs\syscall.md", "Markdown", 0, 0, 0, 251, 0, 0, 0, 0, 0, 0, 0, 124, 375
"d:\Projects\C\cleonos\ramdisk\shell\init.cmd", "Batch", 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, -7
"d:\Projects\C\cleonos\scripts\gen-tty-psf.ps1", "PowerShell", 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 24, 131
"d:\Projects\C\cleonos\wine\README.md", "Markdown", 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 14, 51
"d:\Projects\C\cleonos\wine\cleonos_wine.py", "Python", 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 7
"d:\Projects\C\cleonos\wine\cleonos_wine_lib\__init__.py", "Python", 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5
"d:\Projects\C\cleonos\wine\cleonos_wine_lib\cli.py", "Python", 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 54
"d:\Projects\C\cleonos\wine\cleonos_wine_lib\constants.py", "Python", 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 10, 74
"d:\Projects\C\cleonos\wine\cleonos_wine_lib\input_pump.py", "Python", 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 99
"d:\Projects\C\cleonos\wine\cleonos_wine_lib\platform.py", "Python", 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 41
"d:\Projects\C\cleonos\wine\cleonos_wine_lib\runner.py", "Python", 0, 753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 890
"d:\Projects\C\cleonos\wine\cleonos_wine_lib\state.py", "Python", 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 131
"d:\Projects\C\cleonos\wine\requirements.txt", "pip requirements", 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2
"Total", "-", 1, 1090, 44, 636, -7, 21, 4091, 206, 107, 14, 2, 1653, 7858
1 filename language pip requirements Python CMake Markdown Batch Rust C C++ PowerShell Go Assembly comment blank total
2 d:\Projects\C\cleonos\CMakeLists.txt CMake 0 0 44 0 0 0 0 0 0 0 0 9 53
3 d:\Projects\C\cleonos\cleonos\c\apps\ansi_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
4 d:\Projects\C\cleonos\cleonos\c\apps\append_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
5 d:\Projects\C\cleonos\cleonos\c\apps\cat_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
6 d:\Projects\C\cleonos\cleonos\c\apps\cd_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
7 d:\Projects\C\cleonos\cleonos\c\apps\clear_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
8 d:\Projects\C\cleonos\cleonos\c\apps\cp_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
9 d:\Projects\C\cleonos\cleonos\c\apps\dmesg_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
10 d:\Projects\C\cleonos\cleonos\c\apps\exec_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
11 d:\Projects\C\cleonos\cleonos\c\apps\exit_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
12 d:\Projects\C\cleonos\cleonos\c\apps\fsstat_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
13 d:\Projects\C\cleonos\cleonos\c\apps\hello_main.c C 0 0 0 0 0 0 6 0 0 0 0 2 8
14 d:\Projects\C\cleonos\cleonos\c\apps\help_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
15 d:\Projects\C\cleonos\cleonos\c\apps\kbdstat_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
16 d:\Projects\C\cleonos\cleonos\c\apps\ls_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
17 d:\Projects\C\cleonos\cleonos\c\apps\memstat_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
18 d:\Projects\C\cleonos\cleonos\c\apps\mkdir_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
19 d:\Projects\C\cleonos\cleonos\c\apps\mv_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
20 d:\Projects\C\cleonos\cleonos\c\apps\pid_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
21 d:\Projects\C\cleonos\cleonos\c\apps\pwd_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
22 d:\Projects\C\cleonos\cleonos\c\apps\restart_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
23 d:\Projects\C\cleonos\cleonos\c\apps\rm_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
24 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_cmd.c C 0 0 0 0 0 0 776 0 0 0 0 182 958
25 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_external.c C 0 0 0 0 0 0 223 0 0 0 0 75 298
26 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_input.c C 0 0 0 0 0 0 255 0 0 0 0 68 323
27 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_internal.h C++ 0 0 0 0 0 0 0 84 0 0 0 19 103
28 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_path.c C 0 0 0 0 0 0 153 0 0 0 0 50 203
29 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_script.c C 0 0 0 0 0 0 35 0 0 0 0 12 47
30 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_util.c C 0 0 0 0 0 0 211 0 0 0 0 66 277
31 d:\Projects\C\cleonos\cleonos\c\apps\shell_main.c C 0 0 0 0 0 0 -377 0 0 0 0 -118 -495
32 d:\Projects\C\cleonos\cleonos\c\apps\shstat_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
33 d:\Projects\C\cleonos\cleonos\c\apps\shutdown_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
34 d:\Projects\C\cleonos\cleonos\c\apps\sleep_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
35 d:\Projects\C\cleonos\cleonos\c\apps\spawn_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
36 d:\Projects\C\cleonos\cleonos\c\apps\stats_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
37 d:\Projects\C\cleonos\cleonos\c\apps\taskstat_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
38 d:\Projects\C\cleonos\cleonos\c\apps\touch_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
39 d:\Projects\C\cleonos\cleonos\c\apps\tty_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
40 d:\Projects\C\cleonos\cleonos\c\apps\userstat_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
41 d:\Projects\C\cleonos\cleonos\c\apps\wait_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
42 d:\Projects\C\cleonos\cleonos\c\apps\write_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
43 d:\Projects\C\cleonos\cleonos\c\apps\yield_main.c C 0 0 0 0 0 0 4 0 0 0 0 3 7
44 d:\Projects\C\cleonos\cleonos\c\include\cleonos_syscall.h C++ 0 0 0 0 0 0 0 42 0 0 0 1 43
45 d:\Projects\C\cleonos\cleonos\c\src\runtime.c C 0 0 0 0 0 0 -3 0 0 0 0 -1 -4
46 d:\Projects\C\cleonos\cleonos\c\src\syscall.c C 0 0 0 0 0 0 63 0 0 0 0 21 84
47 d:\Projects\C\cleonos\clks\arch\x86_64\exec_stack_call.S Go Assembly 0 0 0 0 0 0 0 0 0 14 0 6 20
48 d:\Projects\C\cleonos\clks\drivers\video\framebuffer.c C 0 0 0 0 0 0 68 0 0 0 0 22 90
49 d:\Projects\C\cleonos\clks\drivers\video\psf_font.c C 0 0 0 0 0 0 71 0 0 0 0 21 92
50 d:\Projects\C\cleonos\clks\drivers\video\psf_font.h C++ 0 0 0 0 0 0 0 1 0 0 0 1 2
51 d:\Projects\C\cleonos\clks\include\clks\desktop.h C++ 0 0 0 0 0 0 0 7 0 0 0 4 11
52 d:\Projects\C\cleonos\clks\include\clks\elf64.h C++ 0 0 0 0 0 0 0 5 0 0 0 1 6
53 d:\Projects\C\cleonos\clks\include\clks\exec.h C++ 0 0 0 0 0 0 0 10 0 0 0 1 11
54 d:\Projects\C\cleonos\clks\include\clks\framebuffer.h C++ 0 0 0 0 0 0 0 3 0 0 0 1 4
55 d:\Projects\C\cleonos\clks\include\clks\keyboard.h C++ 0 0 0 0 0 0 0 1 0 0 0 0 1
56 d:\Projects\C\cleonos\clks\include\clks\log.h C++ 0 0 0 0 0 0 0 2 0 0 0 1 3
57 d:\Projects\C\cleonos\clks\include\clks\mouse.h C++ 0 0 0 0 0 0 0 20 0 0 0 6 26
58 d:\Projects\C\cleonos\clks\include\clks\panic.h C++ 0 0 0 0 0 0 0 7 0 0 0 3 10
59 d:\Projects\C\cleonos\clks\include\clks\syscall.h C++ 0 0 0 0 0 0 0 21 0 0 0 0 21
60 d:\Projects\C\cleonos\clks\include\clks\tty.h C++ 0 0 0 0 0 0 0 2 0 0 0 -1 1
61 d:\Projects\C\cleonos\clks\include\clks\userland.h C++ 0 0 0 0 0 0 0 1 0 0 0 0 1
62 d:\Projects\C\cleonos\clks\kernel\desktop.c C 0 0 0 0 0 0 321 0 0 0 0 86 407
63 d:\Projects\C\cleonos\clks\kernel\elf64.c C 0 0 0 0 0 0 69 0 0 0 0 21 90
64 d:\Projects\C\cleonos\clks\kernel\exec.c C 0 0 0 0 0 0 504 0 0 0 0 151 655
65 d:\Projects\C\cleonos\clks\kernel\interrupts.c C 0 0 0 0 0 0 4 0 0 0 0 0 4
66 d:\Projects\C\cleonos\clks\kernel\keyboard.c C 0 0 0 0 0 0 60 0 0 0 0 22 82
67 d:\Projects\C\cleonos\clks\kernel\kmain.c C 0 0 0 0 0 0 18 0 0 0 0 2 20
68 d:\Projects\C\cleonos\clks\kernel\log.c C 0 0 0 0 0 0 44 0 0 0 0 16 60
69 d:\Projects\C\cleonos\clks\kernel\mouse.c C 0 0 0 0 0 0 246 0 0 0 0 63 309
70 d:\Projects\C\cleonos\clks\kernel\panic.c C 0 0 0 0 0 0 179 0 0 0 0 60 239
71 d:\Projects\C\cleonos\clks\kernel\scheduler.c C 0 0 0 0 0 0 9 0 0 0 0 2 11
72 d:\Projects\C\cleonos\clks\kernel\shell.c C 0 0 0 0 0 0 389 0 0 0 0 87 476
73 d:\Projects\C\cleonos\clks\kernel\syscall.c C 0 0 0 0 0 0 249 0 0 0 0 60 309
74 d:\Projects\C\cleonos\clks\kernel\tty.c C 0 0 0 0 0 0 354 0 0 0 0 90 444
75 d:\Projects\C\cleonos\clks\kernel\userland.c C 0 0 0 0 0 0 11 0 0 0 0 3 14
76 d:\Projects\C\cleonos\clks\lib\libc_compat.c C 0 0 0 0 0 0 25 0 0 0 0 7 32
77 d:\Projects\C\cleonos\clks\rust\src\lib.rs Rust 0 0 0 0 0 21 0 0 0 0 0 6 27
78 d:\Projects\C\cleonos\docs\README.md Markdown 0 0 0 9 0 0 0 0 0 0 0 2 11
79 d:\Projects\C\cleonos\docs\stage22.md Markdown 0 0 0 68 0 0 0 0 0 0 0 7 75
80 d:\Projects\C\cleonos\docs\stage23.md Markdown 0 0 0 41 0 0 0 0 0 0 0 6 47
81 d:\Projects\C\cleonos\docs\stage24.md Markdown 0 0 0 42 0 0 0 0 0 0 0 7 49
82 d:\Projects\C\cleonos\docs\stage25.md Markdown 0 0 0 58 0 0 0 0 0 0 0 7 65
83 d:\Projects\C\cleonos\docs\stage26.md Markdown 0 0 0 32 0 0 0 0 0 0 0 7 39
84 d:\Projects\C\cleonos\docs\stage27.md Markdown 0 0 0 28 0 0 0 0 0 0 0 7 35
85 d:\Projects\C\cleonos\docs\stage28.md Markdown 0 0 0 37 0 0 0 0 0 0 0 7 44
86 d:\Projects\C\cleonos\docs\stage29.md Markdown 0 0 0 33 0 0 0 0 0 0 0 7 40
87 d:\Projects\C\cleonos\docs\syscall.md Markdown 0 0 0 251 0 0 0 0 0 0 0 124 375
88 d:\Projects\C\cleonos\ramdisk\shell\init.cmd Batch 0 0 0 0 -7 0 0 0 0 0 0 0 -7
89 d:\Projects\C\cleonos\scripts\gen-tty-psf.ps1 PowerShell 0 0 0 0 0 0 0 0 107 0 0 24 131
90 d:\Projects\C\cleonos\wine\README.md Markdown 0 0 0 37 0 0 0 0 0 0 0 14 51
91 d:\Projects\C\cleonos\wine\cleonos_wine.py Python 0 3 0 0 0 0 0 0 0 0 1 3 7
92 d:\Projects\C\cleonos\wine\cleonos_wine_lib\__init__.py Python 0 4 0 0 0 0 0 0 0 0 0 1 5
93 d:\Projects\C\cleonos\wine\cleonos_wine_lib\cli.py Python 0 44 0 0 0 0 0 0 0 0 0 10 54
94 d:\Projects\C\cleonos\wine\cleonos_wine_lib\constants.py Python 0 63 0 0 0 0 0 0 0 0 1 10 74
95 d:\Projects\C\cleonos\wine\cleonos_wine_lib\input_pump.py Python 0 82 0 0 0 0 0 0 0 0 0 17 99
96 d:\Projects\C\cleonos\wine\cleonos_wine_lib\platform.py Python 0 37 0 0 0 0 0 0 0 0 0 4 41
97 d:\Projects\C\cleonos\wine\cleonos_wine_lib\runner.py Python 0 753 0 0 0 0 0 0 0 0 0 137 890
98 d:\Projects\C\cleonos\wine\cleonos_wine_lib\state.py Python 0 104 0 0 0 0 0 0 0 0 0 27 131
99 d:\Projects\C\cleonos\wine\requirements.txt pip requirements 1 0 0 0 0 0 0 0 0 0 0 1 2
100 Total - 1 1090 44 636 -7 21 4091 206 107 14 2 1653 7858

View File

@@ -1,56 +0,0 @@
# Diff Summary
Date : 2026-04-14 20:12:49
Directory d:\\Projects\\C\\cleonos
Total : 98 files, 6203 codes, 2 comments, 1653 blanks, all 7858 lines
[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)
## Languages
| language | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| C | 59 | 4,091 | 0 | 1,166 | 5,257 |
| Python | 8 | 1,090 | 2 | 209 | 1,301 |
| Markdown | 11 | 636 | 0 | 195 | 831 |
| C++ | 14 | 206 | 0 | 37 | 243 |
| PowerShell | 1 | 107 | 0 | 24 | 131 |
| CMake | 1 | 44 | 0 | 9 | 53 |
| Rust | 1 | 21 | 0 | 6 | 27 |
| Go Assembly | 1 | 14 | 0 | 6 | 20 |
| pip requirements | 1 | 1 | 0 | 1 | 2 |
| Batch | 1 | -7 | 0 | 0 | -7 |
## Directories
| path | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| . | 98 | 6,203 | 2 | 1,653 | 7,858 |
| . (Files) | 1 | 44 | 0 | 9 | 53 |
| cleonos | 44 | 1,596 | 0 | 473 | 2,069 |
| cleonos\\c | 44 | 1,596 | 0 | 473 | 2,069 |
| cleonos\\c\\apps | 41 | 1,494 | 0 | 452 | 1,946 |
| cleonos\\c\\apps (Files) | 34 | -243 | 0 | -20 | -263 |
| cleonos\\c\\apps\\shell | 7 | 1,737 | 0 | 472 | 2,209 |
| cleonos\\c\\include | 1 | 42 | 0 | 1 | 43 |
| cleonos\\c\\src | 2 | 60 | 0 | 20 | 80 |
| clks | 31 | 2,736 | 0 | 742 | 3,478 |
| clks\\arch | 1 | 14 | 0 | 6 | 20 |
| clks\\arch\\x86_64 | 1 | 14 | 0 | 6 | 20 |
| clks\\drivers | 3 | 140 | 0 | 44 | 184 |
| clks\\drivers\\video | 3 | 140 | 0 | 44 | 184 |
| clks\\include | 11 | 79 | 0 | 16 | 95 |
| clks\\include\\clks | 11 | 79 | 0 | 16 | 95 |
| clks\\kernel | 14 | 2,457 | 0 | 663 | 3,120 |
| clks\\lib | 1 | 25 | 0 | 7 | 32 |
| clks\\rust | 1 | 21 | 0 | 6 | 27 |
| clks\\rust\\src | 1 | 21 | 0 | 6 | 27 |
| docs | 10 | 599 | 0 | 181 | 780 |
| ramdisk | 1 | -7 | 0 | 0 | -7 |
| ramdisk\\shell | 1 | -7 | 0 | 0 | -7 |
| scripts | 1 | 107 | 0 | 24 | 131 |
| wine | 10 | 1,128 | 2 | 224 | 1,354 |
| wine (Files) | 3 | 41 | 1 | 18 | 60 |
| wine\\cleonos_wine_lib | 7 | 1,087 | 1 | 206 | 1,294 |
[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)

View File

@@ -1,157 +0,0 @@
Date : 2026-04-14 20:12:49
Directory : d:\Projects\C\cleonos
Total : 98 files, 6203 codes, 2 comments, 1653 blanks, all 7858 lines
Languages
+------------------+------------+------------+------------+------------+------------+
| language | files | code | comment | blank | total |
+------------------+------------+------------+------------+------------+------------+
| C | 59 | 4,091 | 0 | 1,166 | 5,257 |
| Python | 8 | 1,090 | 2 | 209 | 1,301 |
| Markdown | 11 | 636 | 0 | 195 | 831 |
| C++ | 14 | 206 | 0 | 37 | 243 |
| PowerShell | 1 | 107 | 0 | 24 | 131 |
| CMake | 1 | 44 | 0 | 9 | 53 |
| Rust | 1 | 21 | 0 | 6 | 27 |
| Go Assembly | 1 | 14 | 0 | 6 | 20 |
| pip requirements | 1 | 1 | 0 | 1 | 2 |
| Batch | 1 | -7 | 0 | 0 | -7 |
+------------------+------------+------------+------------+------------+------------+
Directories
+-------------------------------------------------------------+------------+------------+------------+------------+------------+
| path | files | code | comment | blank | total |
+-------------------------------------------------------------+------------+------------+------------+------------+------------+
| . | 98 | 6,203 | 2 | 1,653 | 7,858 |
| . (Files) | 1 | 44 | 0 | 9 | 53 |
| cleonos | 44 | 1,596 | 0 | 473 | 2,069 |
| cleonos\c | 44 | 1,596 | 0 | 473 | 2,069 |
| cleonos\c\apps | 41 | 1,494 | 0 | 452 | 1,946 |
| cleonos\c\apps (Files) | 34 | -243 | 0 | -20 | -263 |
| cleonos\c\apps\shell | 7 | 1,737 | 0 | 472 | 2,209 |
| cleonos\c\include | 1 | 42 | 0 | 1 | 43 |
| cleonos\c\src | 2 | 60 | 0 | 20 | 80 |
| clks | 31 | 2,736 | 0 | 742 | 3,478 |
| clks\arch | 1 | 14 | 0 | 6 | 20 |
| clks\arch\x86_64 | 1 | 14 | 0 | 6 | 20 |
| clks\drivers | 3 | 140 | 0 | 44 | 184 |
| clks\drivers\video | 3 | 140 | 0 | 44 | 184 |
| clks\include | 11 | 79 | 0 | 16 | 95 |
| clks\include\clks | 11 | 79 | 0 | 16 | 95 |
| clks\kernel | 14 | 2,457 | 0 | 663 | 3,120 |
| clks\lib | 1 | 25 | 0 | 7 | 32 |
| clks\rust | 1 | 21 | 0 | 6 | 27 |
| clks\rust\src | 1 | 21 | 0 | 6 | 27 |
| docs | 10 | 599 | 0 | 181 | 780 |
| ramdisk | 1 | -7 | 0 | 0 | -7 |
| ramdisk\shell | 1 | -7 | 0 | 0 | -7 |
| scripts | 1 | 107 | 0 | 24 | 131 |
| wine | 10 | 1,128 | 2 | 224 | 1,354 |
| wine (Files) | 3 | 41 | 1 | 18 | 60 |
| wine\cleonos_wine_lib | 7 | 1,087 | 1 | 206 | 1,294 |
+-------------------------------------------------------------+------------+------------+------------+------------+------------+
Files
+-------------------------------------------------------------+------------------+------------+------------+------------+------------+
| filename | language | code | comment | blank | total |
+-------------------------------------------------------------+------------------+------------+------------+------------+------------+
| d:\Projects\C\cleonos\CMakeLists.txt | CMake | 44 | 0 | 9 | 53 |
| d:\Projects\C\cleonos\cleonos\c\apps\ansi_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\append_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\cat_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\cd_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\clear_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\cp_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\dmesg_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\exec_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\exit_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\fsstat_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\hello_main.c | C | 6 | 0 | 2 | 8 |
| d:\Projects\C\cleonos\cleonos\c\apps\help_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\kbdstat_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\ls_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\memstat_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\mkdir_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\mv_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\pid_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\pwd_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\restart_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\rm_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_cmd.c | C | 776 | 0 | 182 | 958 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_external.c | C | 223 | 0 | 75 | 298 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_input.c | C | 255 | 0 | 68 | 323 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_internal.h | C++ | 84 | 0 | 19 | 103 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_path.c | C | 153 | 0 | 50 | 203 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_script.c | C | 35 | 0 | 12 | 47 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_util.c | C | 211 | 0 | 66 | 277 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell_main.c | C | -377 | 0 | -118 | -495 |
| d:\Projects\C\cleonos\cleonos\c\apps\shstat_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\shutdown_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\sleep_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\spawn_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\stats_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\taskstat_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\touch_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\tty_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\userstat_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\wait_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\write_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\yield_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\include\cleonos_syscall.h | C++ | 42 | 0 | 1 | 43 |
| d:\Projects\C\cleonos\cleonos\c\src\runtime.c | C | -3 | 0 | -1 | -4 |
| d:\Projects\C\cleonos\cleonos\c\src\syscall.c | C | 63 | 0 | 21 | 84 |
| d:\Projects\C\cleonos\clks\arch\x86_64\exec_stack_call.S | Go Assembly | 14 | 0 | 6 | 20 |
| d:\Projects\C\cleonos\clks\drivers\video\framebuffer.c | C | 68 | 0 | 22 | 90 |
| d:\Projects\C\cleonos\clks\drivers\video\psf_font.c | C | 71 | 0 | 21 | 92 |
| d:\Projects\C\cleonos\clks\drivers\video\psf_font.h | C++ | 1 | 0 | 1 | 2 |
| d:\Projects\C\cleonos\clks\include\clks\desktop.h | C++ | 7 | 0 | 4 | 11 |
| d:\Projects\C\cleonos\clks\include\clks\elf64.h | C++ | 5 | 0 | 1 | 6 |
| d:\Projects\C\cleonos\clks\include\clks\exec.h | C++ | 10 | 0 | 1 | 11 |
| d:\Projects\C\cleonos\clks\include\clks\framebuffer.h | C++ | 3 | 0 | 1 | 4 |
| d:\Projects\C\cleonos\clks\include\clks\keyboard.h | C++ | 1 | 0 | 0 | 1 |
| d:\Projects\C\cleonos\clks\include\clks\log.h | C++ | 2 | 0 | 1 | 3 |
| d:\Projects\C\cleonos\clks\include\clks\mouse.h | C++ | 20 | 0 | 6 | 26 |
| d:\Projects\C\cleonos\clks\include\clks\panic.h | C++ | 7 | 0 | 3 | 10 |
| d:\Projects\C\cleonos\clks\include\clks\syscall.h | C++ | 21 | 0 | 0 | 21 |
| d:\Projects\C\cleonos\clks\include\clks\tty.h | C++ | 2 | 0 | -1 | 1 |
| d:\Projects\C\cleonos\clks\include\clks\userland.h | C++ | 1 | 0 | 0 | 1 |
| d:\Projects\C\cleonos\clks\kernel\desktop.c | C | 321 | 0 | 86 | 407 |
| d:\Projects\C\cleonos\clks\kernel\elf64.c | C | 69 | 0 | 21 | 90 |
| d:\Projects\C\cleonos\clks\kernel\exec.c | C | 504 | 0 | 151 | 655 |
| d:\Projects\C\cleonos\clks\kernel\interrupts.c | C | 4 | 0 | 0 | 4 |
| d:\Projects\C\cleonos\clks\kernel\keyboard.c | C | 60 | 0 | 22 | 82 |
| d:\Projects\C\cleonos\clks\kernel\kmain.c | C | 18 | 0 | 2 | 20 |
| d:\Projects\C\cleonos\clks\kernel\log.c | C | 44 | 0 | 16 | 60 |
| d:\Projects\C\cleonos\clks\kernel\mouse.c | C | 246 | 0 | 63 | 309 |
| d:\Projects\C\cleonos\clks\kernel\panic.c | C | 179 | 0 | 60 | 239 |
| d:\Projects\C\cleonos\clks\kernel\scheduler.c | C | 9 | 0 | 2 | 11 |
| d:\Projects\C\cleonos\clks\kernel\shell.c | C | 389 | 0 | 87 | 476 |
| d:\Projects\C\cleonos\clks\kernel\syscall.c | C | 249 | 0 | 60 | 309 |
| d:\Projects\C\cleonos\clks\kernel\tty.c | C | 354 | 0 | 90 | 444 |
| d:\Projects\C\cleonos\clks\kernel\userland.c | C | 11 | 0 | 3 | 14 |
| d:\Projects\C\cleonos\clks\lib\libc_compat.c | C | 25 | 0 | 7 | 32 |
| d:\Projects\C\cleonos\clks\rust\src\lib.rs | Rust | 21 | 0 | 6 | 27 |
| d:\Projects\C\cleonos\docs\README.md | Markdown | 9 | 0 | 2 | 11 |
| d:\Projects\C\cleonos\docs\stage22.md | Markdown | 68 | 0 | 7 | 75 |
| d:\Projects\C\cleonos\docs\stage23.md | Markdown | 41 | 0 | 6 | 47 |
| d:\Projects\C\cleonos\docs\stage24.md | Markdown | 42 | 0 | 7 | 49 |
| d:\Projects\C\cleonos\docs\stage25.md | Markdown | 58 | 0 | 7 | 65 |
| d:\Projects\C\cleonos\docs\stage26.md | Markdown | 32 | 0 | 7 | 39 |
| d:\Projects\C\cleonos\docs\stage27.md | Markdown | 28 | 0 | 7 | 35 |
| d:\Projects\C\cleonos\docs\stage28.md | Markdown | 37 | 0 | 7 | 44 |
| d:\Projects\C\cleonos\docs\stage29.md | Markdown | 33 | 0 | 7 | 40 |
| d:\Projects\C\cleonos\docs\syscall.md | Markdown | 251 | 0 | 124 | 375 |
| d:\Projects\C\cleonos\ramdisk\shell\init.cmd | Batch | -7 | 0 | 0 | -7 |
| d:\Projects\C\cleonos\scripts\gen-tty-psf.ps1 | PowerShell | 107 | 0 | 24 | 131 |
| d:\Projects\C\cleonos\wine\README.md | Markdown | 37 | 0 | 14 | 51 |
| d:\Projects\C\cleonos\wine\cleonos_wine.py | Python | 3 | 1 | 3 | 7 |
| d:\Projects\C\cleonos\wine\cleonos_wine_lib\__init__.py | Python | 4 | 0 | 1 | 5 |
| d:\Projects\C\cleonos\wine\cleonos_wine_lib\cli.py | Python | 44 | 0 | 10 | 54 |
| d:\Projects\C\cleonos\wine\cleonos_wine_lib\constants.py | Python | 63 | 1 | 10 | 74 |
| d:\Projects\C\cleonos\wine\cleonos_wine_lib\input_pump.py | Python | 82 | 0 | 17 | 99 |
| d:\Projects\C\cleonos\wine\cleonos_wine_lib\platform.py | Python | 37 | 0 | 4 | 41 |
| d:\Projects\C\cleonos\wine\cleonos_wine_lib\runner.py | Python | 753 | 0 | 137 | 890 |
| d:\Projects\C\cleonos\wine\cleonos_wine_lib\state.py | Python | 104 | 0 | 27 | 131 |
| d:\Projects\C\cleonos\wine\requirements.txt | pip requirements | 1 | 0 | 1 | 2 |
| Total | | 6,203 | 2 | 1,653 | 7,858 |
+-------------------------------------------------------------+------------------+------------+------------+------------+------------+

View File

@@ -1,167 +0,0 @@
"filename", "language", "pip requirements", "Python", "CMake", "Markdown", "Makefile", "Batch", "Rust", "C", "C++", "Properties", "PowerShell", "Go Assembly", "comment", "blank", "total"
"d:\Projects\C\cleonos\CMakeLists.txt", "CMake", 0, 0, 579, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 663
"d:\Projects\C\cleonos\Makefile", "Makefile", 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 22, 122
"d:\Projects\C\cleonos\cleonos\c\apps\ansi_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\append_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\cat_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\cd_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\clear_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\cp_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\dmesg_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\elfrunner_kmain.c", "C", 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 3, 9
"d:\Projects\C\cleonos\cleonos\c\apps\elfrunner_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 3, 9
"d:\Projects\C\cleonos\cleonos\c\apps\exec_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\exit_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\fsstat_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\hello_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 2, 8
"d:\Projects\C\cleonos\cleonos\c\apps\help_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\kbdstat_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\ls_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\memc_kmain.c", "C", 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 3, 9
"d:\Projects\C\cleonos\cleonos\c\apps\memc_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 3, 11
"d:\Projects\C\cleonos\cleonos\c\apps\memstat_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\mkdir_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\mv_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\pid_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\pwd_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\restart_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\rm_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_cmd.c", "C", 0, 0, 0, 0, 0, 0, 0, 776, 0, 0, 0, 0, 0, 182, 958
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_external.c", "C", 0, 0, 0, 0, 0, 0, 0, 223, 0, 0, 0, 0, 0, 75, 298
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_input.c", "C", 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 68, 323
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_internal.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 19, 103
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_path.c", "C", 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 0, 50, 203
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_script.c", "C", 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 12, 47
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_util.c", "C", 0, 0, 0, 0, 0, 0, 0, 211, 0, 0, 0, 0, 0, 66, 277
"d:\Projects\C\cleonos\cleonos\c\apps\shell_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 6, 25
"d:\Projects\C\cleonos\cleonos\c\apps\shstat_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\shutdown_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\sleep_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\spawn_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\stats_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\taskstat_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\touch_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\tty_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\ttydrv_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 3, 9
"d:\Projects\C\cleonos\cleonos\c\apps\userstat_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\wait_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\write_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\apps\yield_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\include\cleonos_rust_bridge.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 4, 10
"d:\Projects\C\cleonos\cleonos\c\include\cleonos_syscall.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 6, 108
"d:\Projects\C\cleonos\cleonos\c\src\runtime.c", "C", 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 5, 13
"d:\Projects\C\cleonos\cleonos\c\src\syscall.c", "C", 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 0, 50, 202
"d:\Projects\C\cleonos\cleonos\c\stub.c", "C", 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 2, 9
"d:\Projects\C\cleonos\cleonos\rust\src\lib.rs", "Rust", 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 9, 32
"d:\Projects\C\cleonos\clks\arch\aarch64\boot.c", "C", 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 1, 7
"d:\Projects\C\cleonos\clks\arch\x86_64\boot.c", "C", 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 1, 7
"d:\Projects\C\cleonos\clks\arch\x86_64\exec_stack_call.S", "Go Assembly", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 6, 20
"d:\Projects\C\cleonos\clks\arch\x86_64\interrupt_stubs.S", "Go Assembly", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 12, 120
"d:\Projects\C\cleonos\clks\drivers\serial\serial.c", "C", 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 16, 68
"d:\Projects\C\cleonos\clks\drivers\video\font8x8.c", "C", 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 8, 75
"d:\Projects\C\cleonos\clks\drivers\video\font8x8.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 3, 8
"d:\Projects\C\cleonos\clks\drivers\video\framebuffer.c", "C", 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 64, 294
"d:\Projects\C\cleonos\clks\drivers\video\psf_font.c", "C", 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 56, 286
"d:\Projects\C\cleonos\clks\drivers\video\psf_font.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 5, 20
"d:\Projects\C\cleonos\clks\include\clks\boot.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 4, 15
"d:\Projects\C\cleonos\clks\include\clks\compiler.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 4, 17
"d:\Projects\C\cleonos\clks\include\clks\cpu.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 4, 24
"d:\Projects\C\cleonos\clks\include\clks\desktop.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 4, 11
"d:\Projects\C\cleonos\clks\include\clks\driver.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 8, 36
"d:\Projects\C\cleonos\clks\include\clks\elf64.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 9, 41
"d:\Projects\C\cleonos\clks\include\clks\elfrunner.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 3, 9
"d:\Projects\C\cleonos\clks\include\clks\exec.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 4, 22
"d:\Projects\C\cleonos\clks\include\clks\framebuffer.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 5, 28
"d:\Projects\C\cleonos\clks\include\clks\fs.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 7, 30
"d:\Projects\C\cleonos\clks\include\clks\heap.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 4, 19
"d:\Projects\C\cleonos\clks\include\clks\interrupts.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 3, 9
"d:\Projects\C\cleonos\clks\include\clks\kelf.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 5, 14
"d:\Projects\C\cleonos\clks\include\clks\kernel.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 2, 6
"d:\Projects\C\cleonos\clks\include\clks\keyboard.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 5, 25
"d:\Projects\C\cleonos\clks\include\clks\limine.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 132, 0, 0, 0, 0, 24, 156
"d:\Projects\C\cleonos\clks\include\clks\log.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 5, 19
"d:\Projects\C\cleonos\clks\include\clks\mouse.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 6, 26
"d:\Projects\C\cleonos\clks\include\clks\panic.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 3, 10
"d:\Projects\C\cleonos\clks\include\clks\pmm.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 5, 21
"d:\Projects\C\cleonos\clks\include\clks\ramdisk.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 8, 25
"d:\Projects\C\cleonos\clks\include\clks\scheduler.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 5, 23
"d:\Projects\C\cleonos\clks\include\clks\serial.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 2, 8
"d:\Projects\C\cleonos\clks\include\clks\service.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 8, 39
"d:\Projects\C\cleonos\clks\include\clks\shell.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 3, 10
"d:\Projects\C\cleonos\clks\include\clks\string.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 3, 12
"d:\Projects\C\cleonos\clks\include\clks\syscall.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 4, 59
"d:\Projects\C\cleonos\clks\include\clks\task.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 7, 31
"d:\Projects\C\cleonos\clks\include\clks\tty.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 4, 18
"d:\Projects\C\cleonos\clks\include\clks\types.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 6, 23
"d:\Projects\C\cleonos\clks\include\clks\userland.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 4, 16
"d:\Projects\C\cleonos\clks\kernel\desktop.c", "C", 0, 0, 0, 0, 0, 0, 0, 321, 0, 0, 0, 0, 0, 86, 407
"d:\Projects\C\cleonos\clks\kernel\driver.c", "C", 0, 0, 0, 0, 0, 0, 0, 163, 0, 0, 0, 0, 0, 48, 211
"d:\Projects\C\cleonos\clks\kernel\elf64.c", "C", 0, 0, 0, 0, 0, 0, 0, 239, 0, 0, 0, 0, 0, 73, 312
"d:\Projects\C\cleonos\clks\kernel\elfrunner.c", "C", 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 8, 38
"d:\Projects\C\cleonos\clks\kernel\exec.c", "C", 0, 0, 0, 0, 0, 0, 0, 555, 0, 0, 0, 0, 0, 166, 721
"d:\Projects\C\cleonos\clks\kernel\fs.c", "C", 0, 0, 0, 0, 0, 0, 0, 698, 0, 0, 0, 0, 0, 220, 918
"d:\Projects\C\cleonos\clks\kernel\heap.c", "C", 0, 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, 0, 42, 176
"d:\Projects\C\cleonos\clks\kernel\interrupts.c", "C", 0, 0, 0, 0, 0, 0, 0, 302, 0, 0, 0, 0, 0, 43, 345
"d:\Projects\C\cleonos\clks\kernel\kelf.c", "C", 0, 0, 0, 0, 0, 0, 0, 203, 0, 0, 0, 0, 1, 53, 257
"d:\Projects\C\cleonos\clks\kernel\keyboard.c", "C", 0, 0, 0, 0, 0, 0, 0, 259, 0, 0, 0, 0, 0, 64, 323
"d:\Projects\C\cleonos\clks\kernel\kmain.c", "C", 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 1, 52, 251
"d:\Projects\C\cleonos\clks\kernel\limine_requests.c", "C", 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 26, 102
"d:\Projects\C\cleonos\clks\kernel\log.c", "C", 0, 0, 0, 0, 0, 0, 0, 123, 0, 0, 0, 0, 0, 33, 156
"d:\Projects\C\cleonos\clks\kernel\mouse.c", "C", 0, 0, 0, 0, 0, 0, 0, 246, 0, 0, 0, 0, 0, 63, 309
"d:\Projects\C\cleonos\clks\kernel\panic.c", "C", 0, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 60, 239
"d:\Projects\C\cleonos\clks\kernel\pmm.c", "C", 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 23, 105
"d:\Projects\C\cleonos\clks\kernel\ramdisk.c", "C", 0, 0, 0, 0, 0, 0, 0, 172, 0, 0, 0, 0, 0, 50, 222
"d:\Projects\C\cleonos\clks\kernel\scheduler.c", "C", 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, 0, 44, 180
"d:\Projects\C\cleonos\clks\kernel\service.c", "C", 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, 34, 147
"d:\Projects\C\cleonos\clks\kernel\shell.c", "C", 0, 0, 0, 0, 0, 0, 0, 1249, 0, 0, 0, 0, 0, 317, 1566
"d:\Projects\C\cleonos\clks\kernel\syscall.c", "C", 0, 0, 0, 0, 0, 0, 0, 492, 0, 0, 0, 0, 0, 110, 602
"d:\Projects\C\cleonos\clks\kernel\tty.c", "C", 0, 0, 0, 0, 0, 0, 0, 629, 0, 0, 0, 0, 0, 167, 796
"d:\Projects\C\cleonos\clks\kernel\userland.c", "C", 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 35, 159
"d:\Projects\C\cleonos\clks\lib\libc_compat.c", "C", 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 7, 32
"d:\Projects\C\cleonos\clks\lib\string.c", "C", 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 16, 70
"d:\Projects\C\cleonos\clks\rust\src\lib.rs", "Rust", 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 6, 27
"d:\Projects\C\cleonos\cmake\check_tools.cmake", "CMake", 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 38
"d:\Projects\C\cleonos\cmake\log.cmake", "CMake", 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 36
"d:\Projects\C\cleonos\cmake\log_emit.cmake", "CMake", 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 29
"d:\Projects\C\cleonos\cmake\setup_limine.cmake", "CMake", 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 118
"d:\Projects\C\cleonos\configs\limine.conf", "Properties", 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 1, 7
"d:\Projects\C\cleonos\docs\README.md", "Markdown", 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 35
"d:\Projects\C\cleonos\docs\stage1.md", "Markdown", 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 46
"d:\Projects\C\cleonos\docs\stage10.md", "Markdown", 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 40
"d:\Projects\C\cleonos\docs\stage11.md", "Markdown", 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 41
"d:\Projects\C\cleonos\docs\stage12.md", "Markdown", 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 46
"d:\Projects\C\cleonos\docs\stage13.md", "Markdown", 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 40
"d:\Projects\C\cleonos\docs\stage14.md", "Markdown", 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 52
"d:\Projects\C\cleonos\docs\stage15.md", "Markdown", 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 54
"d:\Projects\C\cleonos\docs\stage2.md", "Markdown", 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 35
"d:\Projects\C\cleonos\docs\stage20.md", "Markdown", 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 52
"d:\Projects\C\cleonos\docs\stage21.md", "Markdown", 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 79
"d:\Projects\C\cleonos\docs\stage22.md", "Markdown", 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 75
"d:\Projects\C\cleonos\docs\stage23.md", "Markdown", 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 47
"d:\Projects\C\cleonos\docs\stage24.md", "Markdown", 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 49
"d:\Projects\C\cleonos\docs\stage25.md", "Markdown", 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 65
"d:\Projects\C\cleonos\docs\stage26.md", "Markdown", 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 39
"d:\Projects\C\cleonos\docs\stage27.md", "Markdown", 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 35
"d:\Projects\C\cleonos\docs\stage28.md", "Markdown", 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 44
"d:\Projects\C\cleonos\docs\stage29.md", "Markdown", 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40
"d:\Projects\C\cleonos\docs\stage3.md", "Markdown", 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 34
"d:\Projects\C\cleonos\docs\stage4.md", "Markdown", 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 35
"d:\Projects\C\cleonos\docs\stage5.md", "Markdown", 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 34
"d:\Projects\C\cleonos\docs\stage6.md", "Markdown", 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 36
"d:\Projects\C\cleonos\docs\stage7.md", "Markdown", 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 40
"d:\Projects\C\cleonos\docs\stage8.md", "Markdown", 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 37
"d:\Projects\C\cleonos\docs\stage9.md", "Markdown", 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 37
"d:\Projects\C\cleonos\docs\syscall.md", "Markdown", 0, 0, 0, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 375
"d:\Projects\C\cleonos\ramdisk\shell\init.cmd", "Batch", 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 6
"d:\Projects\C\cleonos\scripts\gen-tty-psf.ps1", "PowerShell", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 0, 2, 42, 215
"d:\Projects\C\cleonos\wine\README.md", "Markdown", 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 51
"d:\Projects\C\cleonos\wine\cleonos_wine.py", "Python", 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 7
"d:\Projects\C\cleonos\wine\cleonos_wine_lib\__init__.py", "Python", 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5
"d:\Projects\C\cleonos\wine\cleonos_wine_lib\cli.py", "Python", 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 54
"d:\Projects\C\cleonos\wine\cleonos_wine_lib\constants.py", "Python", 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 10, 74
"d:\Projects\C\cleonos\wine\cleonos_wine_lib\input_pump.py", "Python", 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 99
"d:\Projects\C\cleonos\wine\cleonos_wine_lib\platform.py", "Python", 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 41
"d:\Projects\C\cleonos\wine\cleonos_wine_lib\runner.py", "Python", 0, 753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 890
"d:\Projects\C\cleonos\wine\cleonos_wine_lib\state.py", "Python", 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 131
"d:\Projects\C\cleonos\wine\requirements.txt", "pip requirements", 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2
"Total", "-", 1, 1090, 764, 1296, 100, 4, 44, 9394, 846, 6, 171, 122, 10, 3547, 17395
1 filename language pip requirements Python CMake Markdown Makefile Batch Rust C C++ Properties PowerShell Go Assembly comment blank total
2 d:\Projects\C\cleonos\CMakeLists.txt CMake 0 0 579 0 0 0 0 0 0 0 0 0 0 84 663
3 d:\Projects\C\cleonos\Makefile Makefile 0 0 0 0 100 0 0 0 0 0 0 0 0 22 122
4 d:\Projects\C\cleonos\cleonos\c\apps\ansi_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
5 d:\Projects\C\cleonos\cleonos\c\apps\append_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
6 d:\Projects\C\cleonos\cleonos\c\apps\cat_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
7 d:\Projects\C\cleonos\cleonos\c\apps\cd_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
8 d:\Projects\C\cleonos\cleonos\c\apps\clear_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
9 d:\Projects\C\cleonos\cleonos\c\apps\cp_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
10 d:\Projects\C\cleonos\cleonos\c\apps\dmesg_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
11 d:\Projects\C\cleonos\cleonos\c\apps\elfrunner_kmain.c C 0 0 0 0 0 0 0 6 0 0 0 0 0 3 9
12 d:\Projects\C\cleonos\cleonos\c\apps\elfrunner_main.c C 0 0 0 0 0 0 0 6 0 0 0 0 0 3 9
13 d:\Projects\C\cleonos\cleonos\c\apps\exec_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
14 d:\Projects\C\cleonos\cleonos\c\apps\exit_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
15 d:\Projects\C\cleonos\cleonos\c\apps\fsstat_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
16 d:\Projects\C\cleonos\cleonos\c\apps\hello_main.c C 0 0 0 0 0 0 0 6 0 0 0 0 0 2 8
17 d:\Projects\C\cleonos\cleonos\c\apps\help_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
18 d:\Projects\C\cleonos\cleonos\c\apps\kbdstat_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
19 d:\Projects\C\cleonos\cleonos\c\apps\ls_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
20 d:\Projects\C\cleonos\cleonos\c\apps\memc_kmain.c C 0 0 0 0 0 0 0 6 0 0 0 0 0 3 9
21 d:\Projects\C\cleonos\cleonos\c\apps\memc_main.c C 0 0 0 0 0 0 0 8 0 0 0 0 0 3 11
22 d:\Projects\C\cleonos\cleonos\c\apps\memstat_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
23 d:\Projects\C\cleonos\cleonos\c\apps\mkdir_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
24 d:\Projects\C\cleonos\cleonos\c\apps\mv_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
25 d:\Projects\C\cleonos\cleonos\c\apps\pid_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
26 d:\Projects\C\cleonos\cleonos\c\apps\pwd_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
27 d:\Projects\C\cleonos\cleonos\c\apps\restart_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
28 d:\Projects\C\cleonos\cleonos\c\apps\rm_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
29 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_cmd.c C 0 0 0 0 0 0 0 776 0 0 0 0 0 182 958
30 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_external.c C 0 0 0 0 0 0 0 223 0 0 0 0 0 75 298
31 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_input.c C 0 0 0 0 0 0 0 255 0 0 0 0 0 68 323
32 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_internal.h C++ 0 0 0 0 0 0 0 0 84 0 0 0 0 19 103
33 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_path.c C 0 0 0 0 0 0 0 153 0 0 0 0 0 50 203
34 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_script.c C 0 0 0 0 0 0 0 35 0 0 0 0 0 12 47
35 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_util.c C 0 0 0 0 0 0 0 211 0 0 0 0 0 66 277
36 d:\Projects\C\cleonos\cleonos\c\apps\shell_main.c C 0 0 0 0 0 0 0 19 0 0 0 0 0 6 25
37 d:\Projects\C\cleonos\cleonos\c\apps\shstat_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
38 d:\Projects\C\cleonos\cleonos\c\apps\shutdown_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
39 d:\Projects\C\cleonos\cleonos\c\apps\sleep_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
40 d:\Projects\C\cleonos\cleonos\c\apps\spawn_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
41 d:\Projects\C\cleonos\cleonos\c\apps\stats_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
42 d:\Projects\C\cleonos\cleonos\c\apps\taskstat_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
43 d:\Projects\C\cleonos\cleonos\c\apps\touch_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
44 d:\Projects\C\cleonos\cleonos\c\apps\tty_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
45 d:\Projects\C\cleonos\cleonos\c\apps\ttydrv_main.c C 0 0 0 0 0 0 0 6 0 0 0 0 0 3 9
46 d:\Projects\C\cleonos\cleonos\c\apps\userstat_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
47 d:\Projects\C\cleonos\cleonos\c\apps\wait_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
48 d:\Projects\C\cleonos\cleonos\c\apps\write_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
49 d:\Projects\C\cleonos\cleonos\c\apps\yield_main.c C 0 0 0 0 0 0 0 4 0 0 0 0 0 3 7
50 d:\Projects\C\cleonos\cleonos\c\include\cleonos_rust_bridge.h C++ 0 0 0 0 0 0 0 0 6 0 0 0 0 4 10
51 d:\Projects\C\cleonos\cleonos\c\include\cleonos_syscall.h C++ 0 0 0 0 0 0 0 0 102 0 0 0 0 6 108
52 d:\Projects\C\cleonos\cleonos\c\src\runtime.c C 0 0 0 0 0 0 0 8 0 0 0 0 0 5 13
53 d:\Projects\C\cleonos\cleonos\c\src\syscall.c C 0 0 0 0 0 0 0 152 0 0 0 0 0 50 202
54 d:\Projects\C\cleonos\cleonos\c\stub.c C 0 0 0 0 0 0 0 3 0 0 0 0 4 2 9
55 d:\Projects\C\cleonos\cleonos\rust\src\lib.rs Rust 0 0 0 0 0 0 23 0 0 0 0 0 0 9 32
56 d:\Projects\C\cleonos\clks\arch\aarch64\boot.c C 0 0 0 0 0 0 0 6 0 0 0 0 0 1 7
57 d:\Projects\C\cleonos\clks\arch\x86_64\boot.c C 0 0 0 0 0 0 0 6 0 0 0 0 0 1 7
58 d:\Projects\C\cleonos\clks\arch\x86_64\exec_stack_call.S Go Assembly 0 0 0 0 0 0 0 0 0 0 0 14 0 6 20
59 d:\Projects\C\cleonos\clks\arch\x86_64\interrupt_stubs.S Go Assembly 0 0 0 0 0 0 0 0 0 0 0 108 0 12 120
60 d:\Projects\C\cleonos\clks\drivers\serial\serial.c C 0 0 0 0 0 0 0 52 0 0 0 0 0 16 68
61 d:\Projects\C\cleonos\clks\drivers\video\font8x8.c C 0 0 0 0 0 0 0 67 0 0 0 0 0 8 75
62 d:\Projects\C\cleonos\clks\drivers\video\font8x8.h C++ 0 0 0 0 0 0 0 0 5 0 0 0 0 3 8
63 d:\Projects\C\cleonos\clks\drivers\video\framebuffer.c C 0 0 0 0 0 0 0 230 0 0 0 0 0 64 294
64 d:\Projects\C\cleonos\clks\drivers\video\psf_font.c C 0 0 0 0 0 0 0 230 0 0 0 0 0 56 286
65 d:\Projects\C\cleonos\clks\drivers\video\psf_font.h C++ 0 0 0 0 0 0 0 0 15 0 0 0 0 5 20
66 d:\Projects\C\cleonos\clks\include\clks\boot.h C++ 0 0 0 0 0 0 0 0 11 0 0 0 0 4 15
67 d:\Projects\C\cleonos\clks\include\clks\compiler.h C++ 0 0 0 0 0 0 0 0 13 0 0 0 0 4 17
68 d:\Projects\C\cleonos\clks\include\clks\cpu.h C++ 0 0 0 0 0 0 0 0 20 0 0 0 0 4 24
69 d:\Projects\C\cleonos\clks\include\clks\desktop.h C++ 0 0 0 0 0 0 0 0 7 0 0 0 0 4 11
70 d:\Projects\C\cleonos\clks\include\clks\driver.h C++ 0 0 0 0 0 0 0 0 28 0 0 0 0 8 36
71 d:\Projects\C\cleonos\clks\include\clks\elf64.h C++ 0 0 0 0 0 0 0 0 32 0 0 0 0 9 41
72 d:\Projects\C\cleonos\clks\include\clks\elfrunner.h C++ 0 0 0 0 0 0 0 0 6 0 0 0 0 3 9
73 d:\Projects\C\cleonos\clks\include\clks\exec.h C++ 0 0 0 0 0 0 0 0 18 0 0 0 0 4 22
74 d:\Projects\C\cleonos\clks\include\clks\framebuffer.h C++ 0 0 0 0 0 0 0 0 23 0 0 0 0 5 28
75 d:\Projects\C\cleonos\clks\include\clks\fs.h C++ 0 0 0 0 0 0 0 0 23 0 0 0 0 7 30
76 d:\Projects\C\cleonos\clks\include\clks\heap.h C++ 0 0 0 0 0 0 0 0 15 0 0 0 0 4 19
77 d:\Projects\C\cleonos\clks\include\clks\interrupts.h C++ 0 0 0 0 0 0 0 0 6 0 0 0 0 3 9
78 d:\Projects\C\cleonos\clks\include\clks\kelf.h C++ 0 0 0 0 0 0 0 0 9 0 0 0 0 5 14
79 d:\Projects\C\cleonos\clks\include\clks\kernel.h C++ 0 0 0 0 0 0 0 0 4 0 0 0 0 2 6
80 d:\Projects\C\cleonos\clks\include\clks\keyboard.h C++ 0 0 0 0 0 0 0 0 20 0 0 0 0 5 25
81 d:\Projects\C\cleonos\clks\include\clks\limine.h C++ 0 0 0 0 0 0 0 0 132 0 0 0 0 24 156
82 d:\Projects\C\cleonos\clks\include\clks\log.h C++ 0 0 0 0 0 0 0 0 14 0 0 0 0 5 19
83 d:\Projects\C\cleonos\clks\include\clks\mouse.h C++ 0 0 0 0 0 0 0 0 20 0 0 0 0 6 26
84 d:\Projects\C\cleonos\clks\include\clks\panic.h C++ 0 0 0 0 0 0 0 0 7 0 0 0 0 3 10
85 d:\Projects\C\cleonos\clks\include\clks\pmm.h C++ 0 0 0 0 0 0 0 0 16 0 0 0 0 5 21
86 d:\Projects\C\cleonos\clks\include\clks\ramdisk.h C++ 0 0 0 0 0 0 0 0 17 0 0 0 0 8 25
87 d:\Projects\C\cleonos\clks\include\clks\scheduler.h C++ 0 0 0 0 0 0 0 0 18 0 0 0 0 5 23
88 d:\Projects\C\cleonos\clks\include\clks\serial.h C++ 0 0 0 0 0 0 0 0 6 0 0 0 0 2 8
89 d:\Projects\C\cleonos\clks\include\clks\service.h C++ 0 0 0 0 0 0 0 0 31 0 0 0 0 8 39
90 d:\Projects\C\cleonos\clks\include\clks\shell.h C++ 0 0 0 0 0 0 0 0 7 0 0 0 0 3 10
91 d:\Projects\C\cleonos\clks\include\clks\string.h C++ 0 0 0 0 0 0 0 0 9 0 0 0 0 3 12
92 d:\Projects\C\cleonos\clks\include\clks\syscall.h C++ 0 0 0 0 0 0 0 0 55 0 0 0 0 4 59
93 d:\Projects\C\cleonos\clks\include\clks\task.h C++ 0 0 0 0 0 0 0 0 24 0 0 0 0 7 31
94 d:\Projects\C\cleonos\clks\include\clks\tty.h C++ 0 0 0 0 0 0 0 0 14 0 0 0 0 4 18
95 d:\Projects\C\cleonos\clks\include\clks\types.h C++ 0 0 0 0 0 0 0 0 17 0 0 0 0 6 23
96 d:\Projects\C\cleonos\clks\include\clks\userland.h C++ 0 0 0 0 0 0 0 0 12 0 0 0 0 4 16
97 d:\Projects\C\cleonos\clks\kernel\desktop.c C 0 0 0 0 0 0 0 321 0 0 0 0 0 86 407
98 d:\Projects\C\cleonos\clks\kernel\driver.c C 0 0 0 0 0 0 0 163 0 0 0 0 0 48 211
99 d:\Projects\C\cleonos\clks\kernel\elf64.c C 0 0 0 0 0 0 0 239 0 0 0 0 0 73 312
100 d:\Projects\C\cleonos\clks\kernel\elfrunner.c C 0 0 0 0 0 0 0 30 0 0 0 0 0 8 38
101 d:\Projects\C\cleonos\clks\kernel\exec.c C 0 0 0 0 0 0 0 555 0 0 0 0 0 166 721
102 d:\Projects\C\cleonos\clks\kernel\fs.c C 0 0 0 0 0 0 0 698 0 0 0 0 0 220 918
103 d:\Projects\C\cleonos\clks\kernel\heap.c C 0 0 0 0 0 0 0 134 0 0 0 0 0 42 176
104 d:\Projects\C\cleonos\clks\kernel\interrupts.c C 0 0 0 0 0 0 0 302 0 0 0 0 0 43 345
105 d:\Projects\C\cleonos\clks\kernel\kelf.c C 0 0 0 0 0 0 0 203 0 0 0 0 1 53 257
106 d:\Projects\C\cleonos\clks\kernel\keyboard.c C 0 0 0 0 0 0 0 259 0 0 0 0 0 64 323
107 d:\Projects\C\cleonos\clks\kernel\kmain.c C 0 0 0 0 0 0 0 198 0 0 0 0 1 52 251
108 d:\Projects\C\cleonos\clks\kernel\limine_requests.c C 0 0 0 0 0 0 0 76 0 0 0 0 0 26 102
109 d:\Projects\C\cleonos\clks\kernel\log.c C 0 0 0 0 0 0 0 123 0 0 0 0 0 33 156
110 d:\Projects\C\cleonos\clks\kernel\mouse.c C 0 0 0 0 0 0 0 246 0 0 0 0 0 63 309
111 d:\Projects\C\cleonos\clks\kernel\panic.c C 0 0 0 0 0 0 0 179 0 0 0 0 0 60 239
112 d:\Projects\C\cleonos\clks\kernel\pmm.c C 0 0 0 0 0 0 0 82 0 0 0 0 0 23 105
113 d:\Projects\C\cleonos\clks\kernel\ramdisk.c C 0 0 0 0 0 0 0 172 0 0 0 0 0 50 222
114 d:\Projects\C\cleonos\clks\kernel\scheduler.c C 0 0 0 0 0 0 0 136 0 0 0 0 0 44 180
115 d:\Projects\C\cleonos\clks\kernel\service.c C 0 0 0 0 0 0 0 113 0 0 0 0 0 34 147
116 d:\Projects\C\cleonos\clks\kernel\shell.c C 0 0 0 0 0 0 0 1249 0 0 0 0 0 317 1566
117 d:\Projects\C\cleonos\clks\kernel\syscall.c C 0 0 0 0 0 0 0 492 0 0 0 0 0 110 602
118 d:\Projects\C\cleonos\clks\kernel\tty.c C 0 0 0 0 0 0 0 629 0 0 0 0 0 167 796
119 d:\Projects\C\cleonos\clks\kernel\userland.c C 0 0 0 0 0 0 0 124 0 0 0 0 0 35 159
120 d:\Projects\C\cleonos\clks\lib\libc_compat.c C 0 0 0 0 0 0 0 25 0 0 0 0 0 7 32
121 d:\Projects\C\cleonos\clks\lib\string.c C 0 0 0 0 0 0 0 54 0 0 0 0 0 16 70
122 d:\Projects\C\cleonos\clks\rust\src\lib.rs Rust 0 0 0 0 0 0 21 0 0 0 0 0 0 6 27
123 d:\Projects\C\cleonos\cmake\check_tools.cmake CMake 0 0 32 0 0 0 0 0 0 0 0 0 0 6 38
124 d:\Projects\C\cleonos\cmake\log.cmake CMake 0 0 30 0 0 0 0 0 0 0 0 0 0 6 36
125 d:\Projects\C\cleonos\cmake\log_emit.cmake CMake 0 0 23 0 0 0 0 0 0 0 0 0 0 6 29
126 d:\Projects\C\cleonos\cmake\setup_limine.cmake CMake 0 0 100 0 0 0 0 0 0 0 0 0 0 18 118
127 d:\Projects\C\cleonos\configs\limine.conf Properties 0 0 0 0 0 0 0 0 0 6 0 0 0 1 7
128 d:\Projects\C\cleonos\docs\README.md Markdown 0 0 0 31 0 0 0 0 0 0 0 0 0 4 35
129 d:\Projects\C\cleonos\docs\stage1.md Markdown 0 0 0 41 0 0 0 0 0 0 0 0 0 5 46
130 d:\Projects\C\cleonos\docs\stage10.md Markdown 0 0 0 34 0 0 0 0 0 0 0 0 0 6 40
131 d:\Projects\C\cleonos\docs\stage11.md Markdown 0 0 0 36 0 0 0 0 0 0 0 0 0 5 41
132 d:\Projects\C\cleonos\docs\stage12.md Markdown 0 0 0 40 0 0 0 0 0 0 0 0 0 6 46
133 d:\Projects\C\cleonos\docs\stage13.md Markdown 0 0 0 34 0 0 0 0 0 0 0 0 0 6 40
134 d:\Projects\C\cleonos\docs\stage14.md Markdown 0 0 0 44 0 0 0 0 0 0 0 0 0 8 52
135 d:\Projects\C\cleonos\docs\stage15.md Markdown 0 0 0 47 0 0 0 0 0 0 0 0 0 7 54
136 d:\Projects\C\cleonos\docs\stage2.md Markdown 0 0 0 30 0 0 0 0 0 0 0 0 0 5 35
137 d:\Projects\C\cleonos\docs\stage20.md Markdown 0 0 0 46 0 0 0 0 0 0 0 0 0 6 52
138 d:\Projects\C\cleonos\docs\stage21.md Markdown 0 0 0 72 0 0 0 0 0 0 0 0 0 7 79
139 d:\Projects\C\cleonos\docs\stage22.md Markdown 0 0 0 68 0 0 0 0 0 0 0 0 0 7 75
140 d:\Projects\C\cleonos\docs\stage23.md Markdown 0 0 0 41 0 0 0 0 0 0 0 0 0 6 47
141 d:\Projects\C\cleonos\docs\stage24.md Markdown 0 0 0 42 0 0 0 0 0 0 0 0 0 7 49
142 d:\Projects\C\cleonos\docs\stage25.md Markdown 0 0 0 58 0 0 0 0 0 0 0 0 0 7 65
143 d:\Projects\C\cleonos\docs\stage26.md Markdown 0 0 0 32 0 0 0 0 0 0 0 0 0 7 39
144 d:\Projects\C\cleonos\docs\stage27.md Markdown 0 0 0 28 0 0 0 0 0 0 0 0 0 7 35
145 d:\Projects\C\cleonos\docs\stage28.md Markdown 0 0 0 37 0 0 0 0 0 0 0 0 0 7 44
146 d:\Projects\C\cleonos\docs\stage29.md Markdown 0 0 0 33 0 0 0 0 0 0 0 0 0 7 40
147 d:\Projects\C\cleonos\docs\stage3.md Markdown 0 0 0 29 0 0 0 0 0 0 0 0 0 5 34
148 d:\Projects\C\cleonos\docs\stage4.md Markdown 0 0 0 30 0 0 0 0 0 0 0 0 0 5 35
149 d:\Projects\C\cleonos\docs\stage5.md Markdown 0 0 0 29 0 0 0 0 0 0 0 0 0 5 34
150 d:\Projects\C\cleonos\docs\stage6.md Markdown 0 0 0 30 0 0 0 0 0 0 0 0 0 6 36
151 d:\Projects\C\cleonos\docs\stage7.md Markdown 0 0 0 34 0 0 0 0 0 0 0 0 0 6 40
152 d:\Projects\C\cleonos\docs\stage8.md Markdown 0 0 0 31 0 0 0 0 0 0 0 0 0 6 37
153 d:\Projects\C\cleonos\docs\stage9.md Markdown 0 0 0 31 0 0 0 0 0 0 0 0 0 6 37
154 d:\Projects\C\cleonos\docs\syscall.md Markdown 0 0 0 251 0 0 0 0 0 0 0 0 0 124 375
155 d:\Projects\C\cleonos\ramdisk\shell\init.cmd Batch 0 0 0 0 0 4 0 0 0 0 0 0 0 2 6
156 d:\Projects\C\cleonos\scripts\gen-tty-psf.ps1 PowerShell 0 0 0 0 0 0 0 0 0 0 171 0 2 42 215
157 d:\Projects\C\cleonos\wine\README.md Markdown 0 0 0 37 0 0 0 0 0 0 0 0 0 14 51
158 d:\Projects\C\cleonos\wine\cleonos_wine.py Python 0 3 0 0 0 0 0 0 0 0 0 0 1 3 7
159 d:\Projects\C\cleonos\wine\cleonos_wine_lib\__init__.py Python 0 4 0 0 0 0 0 0 0 0 0 0 0 1 5
160 d:\Projects\C\cleonos\wine\cleonos_wine_lib\cli.py Python 0 44 0 0 0 0 0 0 0 0 0 0 0 10 54
161 d:\Projects\C\cleonos\wine\cleonos_wine_lib\constants.py Python 0 63 0 0 0 0 0 0 0 0 0 0 1 10 74
162 d:\Projects\C\cleonos\wine\cleonos_wine_lib\input_pump.py Python 0 82 0 0 0 0 0 0 0 0 0 0 0 17 99
163 d:\Projects\C\cleonos\wine\cleonos_wine_lib\platform.py Python 0 37 0 0 0 0 0 0 0 0 0 0 0 4 41
164 d:\Projects\C\cleonos\wine\cleonos_wine_lib\runner.py Python 0 753 0 0 0 0 0 0 0 0 0 0 0 137 890
165 d:\Projects\C\cleonos\wine\cleonos_wine_lib\state.py Python 0 104 0 0 0 0 0 0 0 0 0 0 0 27 131
166 d:\Projects\C\cleonos\wine\requirements.txt pip requirements 1 0 0 0 0 0 0 0 0 0 0 0 0 1 2
167 Total - 1 1090 764 1296 100 4 44 9394 846 6 171 122 10 3547 17395

File diff suppressed because one or more lines are too long

View File

@@ -1,65 +0,0 @@
# Summary
Date : 2026-04-14 20:12:49
Directory d:\\Projects\\C\\cleonos
Total : 165 files, 13838 codes, 10 comments, 3547 blanks, all 17395 lines
Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
## Languages
| language | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| C | 79 | 9,394 | 6 | 2,615 | 12,015 |
| Markdown | 28 | 1,296 | 0 | 297 | 1,593 |
| Python | 8 | 1,090 | 2 | 209 | 1,301 |
| C++ | 36 | 846 | 0 | 205 | 1,051 |
| CMake | 5 | 764 | 0 | 120 | 884 |
| PowerShell | 1 | 171 | 2 | 42 | 215 |
| Go Assembly | 2 | 122 | 0 | 18 | 140 |
| Makefile | 1 | 100 | 0 | 22 | 122 |
| Rust | 2 | 44 | 0 | 15 | 59 |
| Properties | 1 | 6 | 0 | 1 | 7 |
| Batch | 1 | 4 | 0 | 2 | 6 |
| pip requirements | 1 | 1 | 0 | 1 | 2 |
## Directories
| path | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| . | 165 | 13,838 | 10 | 3,547 | 17,395 |
| . (Files) | 2 | 679 | 0 | 106 | 785 |
| cleonos | 52 | 2,216 | 4 | 667 | 2,887 |
| cleonos\\c | 51 | 2,193 | 4 | 658 | 2,855 |
| cleonos\\c (Files) | 1 | 3 | 4 | 2 | 9 |
| cleonos\\c\\apps | 46 | 1,922 | 0 | 591 | 2,513 |
| cleonos\\c\\apps (Files) | 39 | 185 | 0 | 119 | 304 |
| cleonos\\c\\apps\\shell | 7 | 1,737 | 0 | 472 | 2,209 |
| cleonos\\c\\include | 2 | 108 | 0 | 10 | 118 |
| cleonos\\c\\src | 2 | 160 | 0 | 55 | 215 |
| cleonos\\rust | 1 | 23 | 0 | 9 | 32 |
| cleonos\\rust\\src | 1 | 23 | 0 | 9 | 32 |
| clks | 67 | 8,190 | 2 | 2,186 | 10,378 |
| clks\\arch | 4 | 134 | 0 | 20 | 154 |
| clks\\arch\\aarch64 | 1 | 6 | 0 | 1 | 7 |
| clks\\arch\\x86_64 | 3 | 128 | 0 | 19 | 147 |
| clks\\drivers | 6 | 599 | 0 | 152 | 751 |
| clks\\drivers\\serial | 1 | 52 | 0 | 16 | 68 |
| clks\\drivers\\video | 5 | 547 | 0 | 136 | 683 |
| clks\\include | 31 | 634 | 0 | 168 | 802 |
| clks\\include\\clks | 31 | 634 | 0 | 168 | 802 |
| clks\\kernel | 23 | 6,723 | 2 | 1,817 | 8,542 |
| clks\\lib | 2 | 79 | 0 | 23 | 102 |
| clks\\rust | 1 | 21 | 0 | 6 | 27 |
| clks\\rust\\src | 1 | 21 | 0 | 6 | 27 |
| cmake | 4 | 185 | 0 | 36 | 221 |
| configs | 1 | 6 | 0 | 1 | 7 |
| docs | 27 | 1,259 | 0 | 283 | 1,542 |
| ramdisk | 1 | 4 | 0 | 2 | 6 |
| ramdisk\\shell | 1 | 4 | 0 | 2 | 6 |
| scripts | 1 | 171 | 2 | 42 | 215 |
| wine | 10 | 1,128 | 2 | 224 | 1,354 |
| wine (Files) | 3 | 41 | 1 | 18 | 60 |
| wine\\cleonos_wine_lib | 7 | 1,087 | 1 | 206 | 1,294 |
Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)

View File

@@ -1,233 +0,0 @@
Date : 2026-04-14 20:12:49
Directory : d:\Projects\C\cleonos
Total : 165 files, 13838 codes, 10 comments, 3547 blanks, all 17395 lines
Languages
+------------------+------------+------------+------------+------------+------------+
| language | files | code | comment | blank | total |
+------------------+------------+------------+------------+------------+------------+
| C | 79 | 9,394 | 6 | 2,615 | 12,015 |
| Markdown | 28 | 1,296 | 0 | 297 | 1,593 |
| Python | 8 | 1,090 | 2 | 209 | 1,301 |
| C++ | 36 | 846 | 0 | 205 | 1,051 |
| CMake | 5 | 764 | 0 | 120 | 884 |
| PowerShell | 1 | 171 | 2 | 42 | 215 |
| Go Assembly | 2 | 122 | 0 | 18 | 140 |
| Makefile | 1 | 100 | 0 | 22 | 122 |
| Rust | 2 | 44 | 0 | 15 | 59 |
| Properties | 1 | 6 | 0 | 1 | 7 |
| Batch | 1 | 4 | 0 | 2 | 6 |
| pip requirements | 1 | 1 | 0 | 1 | 2 |
+------------------+------------+------------+------------+------------+------------+
Directories
+---------------------------------------------------------------+------------+------------+------------+------------+------------+
| path | files | code | comment | blank | total |
+---------------------------------------------------------------+------------+------------+------------+------------+------------+
| . | 165 | 13,838 | 10 | 3,547 | 17,395 |
| . (Files) | 2 | 679 | 0 | 106 | 785 |
| cleonos | 52 | 2,216 | 4 | 667 | 2,887 |
| cleonos\c | 51 | 2,193 | 4 | 658 | 2,855 |
| cleonos\c (Files) | 1 | 3 | 4 | 2 | 9 |
| cleonos\c\apps | 46 | 1,922 | 0 | 591 | 2,513 |
| cleonos\c\apps (Files) | 39 | 185 | 0 | 119 | 304 |
| cleonos\c\apps\shell | 7 | 1,737 | 0 | 472 | 2,209 |
| cleonos\c\include | 2 | 108 | 0 | 10 | 118 |
| cleonos\c\src | 2 | 160 | 0 | 55 | 215 |
| cleonos\rust | 1 | 23 | 0 | 9 | 32 |
| cleonos\rust\src | 1 | 23 | 0 | 9 | 32 |
| clks | 67 | 8,190 | 2 | 2,186 | 10,378 |
| clks\arch | 4 | 134 | 0 | 20 | 154 |
| clks\arch\aarch64 | 1 | 6 | 0 | 1 | 7 |
| clks\arch\x86_64 | 3 | 128 | 0 | 19 | 147 |
| clks\drivers | 6 | 599 | 0 | 152 | 751 |
| clks\drivers\serial | 1 | 52 | 0 | 16 | 68 |
| clks\drivers\video | 5 | 547 | 0 | 136 | 683 |
| clks\include | 31 | 634 | 0 | 168 | 802 |
| clks\include\clks | 31 | 634 | 0 | 168 | 802 |
| clks\kernel | 23 | 6,723 | 2 | 1,817 | 8,542 |
| clks\lib | 2 | 79 | 0 | 23 | 102 |
| clks\rust | 1 | 21 | 0 | 6 | 27 |
| clks\rust\src | 1 | 21 | 0 | 6 | 27 |
| cmake | 4 | 185 | 0 | 36 | 221 |
| configs | 1 | 6 | 0 | 1 | 7 |
| docs | 27 | 1,259 | 0 | 283 | 1,542 |
| ramdisk | 1 | 4 | 0 | 2 | 6 |
| ramdisk\shell | 1 | 4 | 0 | 2 | 6 |
| scripts | 1 | 171 | 2 | 42 | 215 |
| wine | 10 | 1,128 | 2 | 224 | 1,354 |
| wine (Files) | 3 | 41 | 1 | 18 | 60 |
| wine\cleonos_wine_lib | 7 | 1,087 | 1 | 206 | 1,294 |
+---------------------------------------------------------------+------------+------------+------------+------------+------------+
Files
+---------------------------------------------------------------+------------------+------------+------------+------------+------------+
| filename | language | code | comment | blank | total |
+---------------------------------------------------------------+------------------+------------+------------+------------+------------+
| d:\Projects\C\cleonos\CMakeLists.txt | CMake | 579 | 0 | 84 | 663 |
| d:\Projects\C\cleonos\Makefile | Makefile | 100 | 0 | 22 | 122 |
| d:\Projects\C\cleonos\cleonos\c\apps\ansi_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\append_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\cat_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\cd_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\clear_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\cp_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\dmesg_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\elfrunner_kmain.c | C | 6 | 0 | 3 | 9 |
| d:\Projects\C\cleonos\cleonos\c\apps\elfrunner_main.c | C | 6 | 0 | 3 | 9 |
| d:\Projects\C\cleonos\cleonos\c\apps\exec_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\exit_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\fsstat_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\hello_main.c | C | 6 | 0 | 2 | 8 |
| d:\Projects\C\cleonos\cleonos\c\apps\help_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\kbdstat_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\ls_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\memc_kmain.c | C | 6 | 0 | 3 | 9 |
| d:\Projects\C\cleonos\cleonos\c\apps\memc_main.c | C | 8 | 0 | 3 | 11 |
| d:\Projects\C\cleonos\cleonos\c\apps\memstat_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\mkdir_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\mv_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\pid_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\pwd_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\restart_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\rm_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_cmd.c | C | 776 | 0 | 182 | 958 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_external.c | C | 223 | 0 | 75 | 298 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_input.c | C | 255 | 0 | 68 | 323 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_internal.h | C++ | 84 | 0 | 19 | 103 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_path.c | C | 153 | 0 | 50 | 203 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_script.c | C | 35 | 0 | 12 | 47 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_util.c | C | 211 | 0 | 66 | 277 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell_main.c | C | 19 | 0 | 6 | 25 |
| d:\Projects\C\cleonos\cleonos\c\apps\shstat_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\shutdown_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\sleep_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\spawn_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\stats_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\taskstat_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\touch_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\tty_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\ttydrv_main.c | C | 6 | 0 | 3 | 9 |
| d:\Projects\C\cleonos\cleonos\c\apps\userstat_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\wait_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\write_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\yield_main.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\include\cleonos_rust_bridge.h | C++ | 6 | 0 | 4 | 10 |
| d:\Projects\C\cleonos\cleonos\c\include\cleonos_syscall.h | C++ | 102 | 0 | 6 | 108 |
| d:\Projects\C\cleonos\cleonos\c\src\runtime.c | C | 8 | 0 | 5 | 13 |
| d:\Projects\C\cleonos\cleonos\c\src\syscall.c | C | 152 | 0 | 50 | 202 |
| d:\Projects\C\cleonos\cleonos\c\stub.c | C | 3 | 4 | 2 | 9 |
| d:\Projects\C\cleonos\cleonos\rust\src\lib.rs | Rust | 23 | 0 | 9 | 32 |
| d:\Projects\C\cleonos\clks\arch\aarch64\boot.c | C | 6 | 0 | 1 | 7 |
| d:\Projects\C\cleonos\clks\arch\x86_64\boot.c | C | 6 | 0 | 1 | 7 |
| d:\Projects\C\cleonos\clks\arch\x86_64\exec_stack_call.S | Go Assembly | 14 | 0 | 6 | 20 |
| d:\Projects\C\cleonos\clks\arch\x86_64\interrupt_stubs.S | Go Assembly | 108 | 0 | 12 | 120 |
| d:\Projects\C\cleonos\clks\drivers\serial\serial.c | C | 52 | 0 | 16 | 68 |
| d:\Projects\C\cleonos\clks\drivers\video\font8x8.c | C | 67 | 0 | 8 | 75 |
| d:\Projects\C\cleonos\clks\drivers\video\font8x8.h | C++ | 5 | 0 | 3 | 8 |
| d:\Projects\C\cleonos\clks\drivers\video\framebuffer.c | C | 230 | 0 | 64 | 294 |
| d:\Projects\C\cleonos\clks\drivers\video\psf_font.c | C | 230 | 0 | 56 | 286 |
| d:\Projects\C\cleonos\clks\drivers\video\psf_font.h | C++ | 15 | 0 | 5 | 20 |
| d:\Projects\C\cleonos\clks\include\clks\boot.h | C++ | 11 | 0 | 4 | 15 |
| d:\Projects\C\cleonos\clks\include\clks\compiler.h | C++ | 13 | 0 | 4 | 17 |
| d:\Projects\C\cleonos\clks\include\clks\cpu.h | C++ | 20 | 0 | 4 | 24 |
| d:\Projects\C\cleonos\clks\include\clks\desktop.h | C++ | 7 | 0 | 4 | 11 |
| d:\Projects\C\cleonos\clks\include\clks\driver.h | C++ | 28 | 0 | 8 | 36 |
| d:\Projects\C\cleonos\clks\include\clks\elf64.h | C++ | 32 | 0 | 9 | 41 |
| d:\Projects\C\cleonos\clks\include\clks\elfrunner.h | C++ | 6 | 0 | 3 | 9 |
| d:\Projects\C\cleonos\clks\include\clks\exec.h | C++ | 18 | 0 | 4 | 22 |
| d:\Projects\C\cleonos\clks\include\clks\framebuffer.h | C++ | 23 | 0 | 5 | 28 |
| d:\Projects\C\cleonos\clks\include\clks\fs.h | C++ | 23 | 0 | 7 | 30 |
| d:\Projects\C\cleonos\clks\include\clks\heap.h | C++ | 15 | 0 | 4 | 19 |
| d:\Projects\C\cleonos\clks\include\clks\interrupts.h | C++ | 6 | 0 | 3 | 9 |
| d:\Projects\C\cleonos\clks\include\clks\kelf.h | C++ | 9 | 0 | 5 | 14 |
| d:\Projects\C\cleonos\clks\include\clks\kernel.h | C++ | 4 | 0 | 2 | 6 |
| d:\Projects\C\cleonos\clks\include\clks\keyboard.h | C++ | 20 | 0 | 5 | 25 |
| d:\Projects\C\cleonos\clks\include\clks\limine.h | C++ | 132 | 0 | 24 | 156 |
| d:\Projects\C\cleonos\clks\include\clks\log.h | C++ | 14 | 0 | 5 | 19 |
| d:\Projects\C\cleonos\clks\include\clks\mouse.h | C++ | 20 | 0 | 6 | 26 |
| d:\Projects\C\cleonos\clks\include\clks\panic.h | C++ | 7 | 0 | 3 | 10 |
| d:\Projects\C\cleonos\clks\include\clks\pmm.h | C++ | 16 | 0 | 5 | 21 |
| d:\Projects\C\cleonos\clks\include\clks\ramdisk.h | C++ | 17 | 0 | 8 | 25 |
| d:\Projects\C\cleonos\clks\include\clks\scheduler.h | C++ | 18 | 0 | 5 | 23 |
| d:\Projects\C\cleonos\clks\include\clks\serial.h | C++ | 6 | 0 | 2 | 8 |
| d:\Projects\C\cleonos\clks\include\clks\service.h | C++ | 31 | 0 | 8 | 39 |
| d:\Projects\C\cleonos\clks\include\clks\shell.h | C++ | 7 | 0 | 3 | 10 |
| d:\Projects\C\cleonos\clks\include\clks\string.h | C++ | 9 | 0 | 3 | 12 |
| d:\Projects\C\cleonos\clks\include\clks\syscall.h | C++ | 55 | 0 | 4 | 59 |
| d:\Projects\C\cleonos\clks\include\clks\task.h | C++ | 24 | 0 | 7 | 31 |
| d:\Projects\C\cleonos\clks\include\clks\tty.h | C++ | 14 | 0 | 4 | 18 |
| d:\Projects\C\cleonos\clks\include\clks\types.h | C++ | 17 | 0 | 6 | 23 |
| d:\Projects\C\cleonos\clks\include\clks\userland.h | C++ | 12 | 0 | 4 | 16 |
| d:\Projects\C\cleonos\clks\kernel\desktop.c | C | 321 | 0 | 86 | 407 |
| d:\Projects\C\cleonos\clks\kernel\driver.c | C | 163 | 0 | 48 | 211 |
| d:\Projects\C\cleonos\clks\kernel\elf64.c | C | 239 | 0 | 73 | 312 |
| d:\Projects\C\cleonos\clks\kernel\elfrunner.c | C | 30 | 0 | 8 | 38 |
| d:\Projects\C\cleonos\clks\kernel\exec.c | C | 555 | 0 | 166 | 721 |
| d:\Projects\C\cleonos\clks\kernel\fs.c | C | 698 | 0 | 220 | 918 |
| d:\Projects\C\cleonos\clks\kernel\heap.c | C | 134 | 0 | 42 | 176 |
| d:\Projects\C\cleonos\clks\kernel\interrupts.c | C | 302 | 0 | 43 | 345 |
| d:\Projects\C\cleonos\clks\kernel\kelf.c | C | 203 | 1 | 53 | 257 |
| d:\Projects\C\cleonos\clks\kernel\keyboard.c | C | 259 | 0 | 64 | 323 |
| d:\Projects\C\cleonos\clks\kernel\kmain.c | C | 198 | 1 | 52 | 251 |
| d:\Projects\C\cleonos\clks\kernel\limine_requests.c | C | 76 | 0 | 26 | 102 |
| d:\Projects\C\cleonos\clks\kernel\log.c | C | 123 | 0 | 33 | 156 |
| d:\Projects\C\cleonos\clks\kernel\mouse.c | C | 246 | 0 | 63 | 309 |
| d:\Projects\C\cleonos\clks\kernel\panic.c | C | 179 | 0 | 60 | 239 |
| d:\Projects\C\cleonos\clks\kernel\pmm.c | C | 82 | 0 | 23 | 105 |
| d:\Projects\C\cleonos\clks\kernel\ramdisk.c | C | 172 | 0 | 50 | 222 |
| d:\Projects\C\cleonos\clks\kernel\scheduler.c | C | 136 | 0 | 44 | 180 |
| d:\Projects\C\cleonos\clks\kernel\service.c | C | 113 | 0 | 34 | 147 |
| d:\Projects\C\cleonos\clks\kernel\shell.c | C | 1,249 | 0 | 317 | 1,566 |
| d:\Projects\C\cleonos\clks\kernel\syscall.c | C | 492 | 0 | 110 | 602 |
| d:\Projects\C\cleonos\clks\kernel\tty.c | C | 629 | 0 | 167 | 796 |
| d:\Projects\C\cleonos\clks\kernel\userland.c | C | 124 | 0 | 35 | 159 |
| d:\Projects\C\cleonos\clks\lib\libc_compat.c | C | 25 | 0 | 7 | 32 |
| d:\Projects\C\cleonos\clks\lib\string.c | C | 54 | 0 | 16 | 70 |
| d:\Projects\C\cleonos\clks\rust\src\lib.rs | Rust | 21 | 0 | 6 | 27 |
| d:\Projects\C\cleonos\cmake\check_tools.cmake | CMake | 32 | 0 | 6 | 38 |
| d:\Projects\C\cleonos\cmake\log.cmake | CMake | 30 | 0 | 6 | 36 |
| d:\Projects\C\cleonos\cmake\log_emit.cmake | CMake | 23 | 0 | 6 | 29 |
| d:\Projects\C\cleonos\cmake\setup_limine.cmake | CMake | 100 | 0 | 18 | 118 |
| d:\Projects\C\cleonos\configs\limine.conf | Properties | 6 | 0 | 1 | 7 |
| d:\Projects\C\cleonos\docs\README.md | Markdown | 31 | 0 | 4 | 35 |
| d:\Projects\C\cleonos\docs\stage1.md | Markdown | 41 | 0 | 5 | 46 |
| d:\Projects\C\cleonos\docs\stage10.md | Markdown | 34 | 0 | 6 | 40 |
| d:\Projects\C\cleonos\docs\stage11.md | Markdown | 36 | 0 | 5 | 41 |
| d:\Projects\C\cleonos\docs\stage12.md | Markdown | 40 | 0 | 6 | 46 |
| d:\Projects\C\cleonos\docs\stage13.md | Markdown | 34 | 0 | 6 | 40 |
| d:\Projects\C\cleonos\docs\stage14.md | Markdown | 44 | 0 | 8 | 52 |
| d:\Projects\C\cleonos\docs\stage15.md | Markdown | 47 | 0 | 7 | 54 |
| d:\Projects\C\cleonos\docs\stage2.md | Markdown | 30 | 0 | 5 | 35 |
| d:\Projects\C\cleonos\docs\stage20.md | Markdown | 46 | 0 | 6 | 52 |
| d:\Projects\C\cleonos\docs\stage21.md | Markdown | 72 | 0 | 7 | 79 |
| d:\Projects\C\cleonos\docs\stage22.md | Markdown | 68 | 0 | 7 | 75 |
| d:\Projects\C\cleonos\docs\stage23.md | Markdown | 41 | 0 | 6 | 47 |
| d:\Projects\C\cleonos\docs\stage24.md | Markdown | 42 | 0 | 7 | 49 |
| d:\Projects\C\cleonos\docs\stage25.md | Markdown | 58 | 0 | 7 | 65 |
| d:\Projects\C\cleonos\docs\stage26.md | Markdown | 32 | 0 | 7 | 39 |
| d:\Projects\C\cleonos\docs\stage27.md | Markdown | 28 | 0 | 7 | 35 |
| d:\Projects\C\cleonos\docs\stage28.md | Markdown | 37 | 0 | 7 | 44 |
| d:\Projects\C\cleonos\docs\stage29.md | Markdown | 33 | 0 | 7 | 40 |
| d:\Projects\C\cleonos\docs\stage3.md | Markdown | 29 | 0 | 5 | 34 |
| d:\Projects\C\cleonos\docs\stage4.md | Markdown | 30 | 0 | 5 | 35 |
| d:\Projects\C\cleonos\docs\stage5.md | Markdown | 29 | 0 | 5 | 34 |
| d:\Projects\C\cleonos\docs\stage6.md | Markdown | 30 | 0 | 6 | 36 |
| d:\Projects\C\cleonos\docs\stage7.md | Markdown | 34 | 0 | 6 | 40 |
| d:\Projects\C\cleonos\docs\stage8.md | Markdown | 31 | 0 | 6 | 37 |
| d:\Projects\C\cleonos\docs\stage9.md | Markdown | 31 | 0 | 6 | 37 |
| d:\Projects\C\cleonos\docs\syscall.md | Markdown | 251 | 0 | 124 | 375 |
| d:\Projects\C\cleonos\ramdisk\shell\init.cmd | Batch | 4 | 0 | 2 | 6 |
| d:\Projects\C\cleonos\scripts\gen-tty-psf.ps1 | PowerShell | 171 | 2 | 42 | 215 |
| d:\Projects\C\cleonos\wine\README.md | Markdown | 37 | 0 | 14 | 51 |
| d:\Projects\C\cleonos\wine\cleonos_wine.py | Python | 3 | 1 | 3 | 7 |
| d:\Projects\C\cleonos\wine\cleonos_wine_lib\__init__.py | Python | 4 | 0 | 1 | 5 |
| d:\Projects\C\cleonos\wine\cleonos_wine_lib\cli.py | Python | 44 | 0 | 10 | 54 |
| d:\Projects\C\cleonos\wine\cleonos_wine_lib\constants.py | Python | 63 | 1 | 10 | 74 |
| d:\Projects\C\cleonos\wine\cleonos_wine_lib\input_pump.py | Python | 82 | 0 | 17 | 99 |
| d:\Projects\C\cleonos\wine\cleonos_wine_lib\platform.py | Python | 37 | 0 | 4 | 41 |
| d:\Projects\C\cleonos\wine\cleonos_wine_lib\runner.py | Python | 753 | 0 | 137 | 890 |
| d:\Projects\C\cleonos\wine\cleonos_wine_lib\state.py | Python | 104 | 0 | 27 | 131 |
| d:\Projects\C\cleonos\wine\requirements.txt | pip requirements | 1 | 0 | 1 | 2 |
| Total | | 13,838 | 10 | 3,547 | 17,395 |
+---------------------------------------------------------------+------------------+------------+------------+------------+------------+

View File

@@ -0,0 +1,584 @@
# Details
Date : 2026-04-21 02:41:45
Directory d:\\Projects\\C\\cleonos
Total : 569 files, 108044 codes, 13937 comments, 27927 blanks, all 149908 lines
[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
## Files
| filename | language | code | comment | blank | total |
| :--- | :--- | ---: | ---: | ---: | ---: |
| [.github/workflows/build-os.yml](/.github/workflows/build-os.yml) | YAML | 76 | 1 | 11 | 88 |
| [.github/workflows/style-check.yml](/.github/workflows/style-check.yml) | YAML | 109 | 0 | 19 | 128 |
| [CMakeLists.txt](/CMakeLists.txt) | CMake | 906 | 0 | 108 | 1,014 |
| [Makefile](/Makefile) | Makefile | 130 | 0 | 24 | 154 |
| [README.md](/README.md) | Markdown | 92 | 0 | 34 | 126 |
| [README.zh-CN.md](/README.zh-CN.md) | Markdown | 92 | 0 | 34 | 126 |
| [cleonos/c/apps/ansi\_main.c](/cleonos/c/apps/ansi_main.c) | C | 45 | 0 | 9 | 54 |
| [cleonos/c/apps/ansitest\_main.c](/cleonos/c/apps/ansitest_main.c) | C | 145 | 0 | 33 | 178 |
| [cleonos/c/apps/append\_main.c](/cleonos/c/apps/append_main.c) | C | 74 | 0 | 16 | 90 |
| [cleonos/c/apps/args\_main.c](/cleonos/c/apps/args_main.c) | C | 49 | 0 | 13 | 62 |
| [cleonos/c/apps/bg\_main.c](/cleonos/c/apps/bg_main.c) | C | 101 | 0 | 26 | 127 |
| [cleonos/c/apps/bmpview\_main.c](/cleonos/c/apps/bmpview_main.c) | C | 331 | 0 | 81 | 412 |
| [cleonos/c/apps/cat\_main.c](/cleonos/c/apps/cat_main.c) | C | 87 | 0 | 20 | 107 |
| [cleonos/c/apps/cd\_main.c](/cleonos/c/apps/cd_main.c) | C | 54 | 0 | 13 | 67 |
| [cleonos/c/apps/clear\_main.c](/cleonos/c/apps/clear_main.c) | C | 39 | 0 | 9 | 48 |
| [cleonos/c/apps/cmd\_runtime.c](/cleonos/c/apps/cmd_runtime.c) | C | 459 | 0 | 139 | 598 |
| [cleonos/c/apps/cmd\_runtime.h](/cleonos/c/apps/cmd_runtime.h) | C++ | 80 | 0 | 19 | 99 |
| [cleonos/c/apps/cp\_main.c](/cleonos/c/apps/cp_main.c) | C | 109 | 0 | 23 | 132 |
| [cleonos/c/apps/cut\_main.c](/cleonos/c/apps/cut_main.c) | C | 210 | 1 | 54 | 265 |
| [cleonos/c/apps/dltest\_main.c](/cleonos/c/apps/dltest_main.c) | C | 38 | 0 | 11 | 49 |
| [cleonos/c/apps/dmesg\_main.c](/cleonos/c/apps/dmesg_main.c) | C | 64 | 0 | 16 | 80 |
| [cleonos/c/apps/doom/doom\_compat.c](/cleonos/c/apps/doom/doom_compat.c) | C | 1,196 | 0 | 277 | 1,473 |
| [cleonos/c/apps/doom/doom\_shim.h](/cleonos/c/apps/doom/doom_shim.h) | C++ | 17 | 1 | 3 | 21 |
| [cleonos/c/apps/doom/doomgeneric\_clks.c](/cleonos/c/apps/doom/doomgeneric_clks.c) | C | 153 | 0 | 48 | 201 |
| [cleonos/c/apps/doom\_main.c](/cleonos/c/apps/doom_main.c) | C | 66 | 0 | 16 | 82 |
| [cleonos/c/apps/elfrunner\_kmain.c](/cleonos/c/apps/elfrunner_kmain.c) | C | 6 | 0 | 3 | 9 |
| [cleonos/c/apps/elfrunner\_main.c](/cleonos/c/apps/elfrunner_main.c) | C | 6 | 0 | 3 | 9 |
| [cleonos/c/apps/exec\_main.c](/cleonos/c/apps/exec_main.c) | C | 87 | 0 | 20 | 107 |
| [cleonos/c/apps/exit\_main.c](/cleonos/c/apps/exit_main.c) | C | 54 | 0 | 12 | 66 |
| [cleonos/c/apps/fastfetch\_main.c](/cleonos/c/apps/fastfetch_main.c) | C | 180 | 0 | 32 | 212 |
| [cleonos/c/apps/fg\_main.c](/cleonos/c/apps/fg_main.c) | C | 149 | 0 | 36 | 185 |
| [cleonos/c/apps/fsstat\_main.c](/cleonos/c/apps/fsstat_main.c) | C | 46 | 0 | 9 | 55 |
| [cleonos/c/apps/grep\_main.c](/cleonos/c/apps/grep_main.c) | C | 196 | 0 | 53 | 249 |
| [cleonos/c/apps/head\_main.c](/cleonos/c/apps/head_main.c) | C | 165 | 0 | 46 | 211 |
| [cleonos/c/apps/hello\_main.c](/cleonos/c/apps/hello_main.c) | C | 5 | 0 | 2 | 7 |
| [cleonos/c/apps/help\_main.c](/cleonos/c/apps/help_main.c) | C | 83 | 0 | 9 | 92 |
| [cleonos/c/apps/jobs\_main.c](/cleonos/c/apps/jobs_main.c) | C | 120 | 0 | 26 | 146 |
| [cleonos/c/apps/kbdstat\_main.c](/cleonos/c/apps/kbdstat_main.c) | C | 44 | 0 | 9 | 53 |
| [cleonos/c/apps/kdbg\_main.c](/cleonos/c/apps/kdbg_main.c) | C | 213 | 0 | 56 | 269 |
| [cleonos/c/apps/kill\_main.c](/cleonos/c/apps/kill_main.c) | C | 144 | 0 | 39 | 183 |
| [cleonos/c/apps/libctest\_main.c](/cleonos/c/apps/libctest_main.c) | C | 219 | 0 | 39 | 258 |
| [cleonos/c/apps/libdemo\_main.c](/cleonos/c/apps/libdemo_main.c) | C | 19 | 0 | 6 | 25 |
| [cleonos/c/apps/ls\_main.c](/cleonos/c/apps/ls_main.c) | C | 266 | 0 | 79 | 345 |
| [cleonos/c/apps/memc\_kmain.c](/cleonos/c/apps/memc_kmain.c) | C | 6 | 0 | 3 | 9 |
| [cleonos/c/apps/memc\_main.c](/cleonos/c/apps/memc_main.c) | C | 8 | 0 | 3 | 11 |
| [cleonos/c/apps/memstat\_main.c](/cleonos/c/apps/memstat_main.c) | C | 43 | 0 | 9 | 52 |
| [cleonos/c/apps/mkdir\_main.c](/cleonos/c/apps/mkdir_main.c) | C | 57 | 0 | 14 | 71 |
| [cleonos/c/apps/mv\_main.c](/cleonos/c/apps/mv_main.c) | C | 102 | 0 | 26 | 128 |
| [cleonos/c/apps/pid\_main.c](/cleonos/c/apps/pid_main.c) | C | 39 | 0 | 9 | 48 |
| [cleonos/c/apps/procstat\_main.c](/cleonos/c/apps/procstat_main.c) | C | 202 | 0 | 43 | 245 |
| [cleonos/c/apps/ps\_main.c](/cleonos/c/apps/ps_main.c) | C | 160 | 0 | 35 | 195 |
| [cleonos/c/apps/pwd\_main.c](/cleonos/c/apps/pwd_main.c) | C | 39 | 0 | 9 | 48 |
| [cleonos/c/apps/qrcode/qrcodegen.c](/cleonos/c/apps/qrcode/qrcodegen.c) | C | 759 | 176 | 96 | 1,031 |
| [cleonos/c/apps/qrcode/qrcodegen.h](/cleonos/c/apps/qrcode/qrcodegen.h) | C++ | 62 | 268 | 34 | 364 |
| [cleonos/c/apps/qrcode\_main.c](/cleonos/c/apps/qrcode_main.c) | C | 207 | 1 | 58 | 266 |
| [cleonos/c/apps/restart\_main.c](/cleonos/c/apps/restart_main.c) | C | 40 | 0 | 9 | 49 |
| [cleonos/c/apps/rm\_main.c](/cleonos/c/apps/rm_main.c) | C | 57 | 0 | 14 | 71 |
| [cleonos/c/apps/shell/shell\_cmd.c](/cleonos/c/apps/shell/shell_cmd.c) | C | 2,499 | 0 | 633 | 3,132 |
| [cleonos/c/apps/shell/shell\_external.c](/cleonos/c/apps/shell/shell_external.c) | C | 174 | 0 | 57 | 231 |
| [cleonos/c/apps/shell/shell\_input.c](/cleonos/c/apps/shell/shell_input.c) | C | 567 | 0 | 148 | 715 |
| [cleonos/c/apps/shell/shell\_internal.h](/cleonos/c/apps/shell/shell_internal.h) | C++ | 100 | 0 | 19 | 119 |
| [cleonos/c/apps/shell/shell\_path.c](/cleonos/c/apps/shell/shell_path.c) | C | 154 | 0 | 50 | 204 |
| [cleonos/c/apps/shell/shell\_script.c](/cleonos/c/apps/shell/shell_script.c) | C | 35 | 0 | 12 | 47 |
| [cleonos/c/apps/shell/shell\_util.c](/cleonos/c/apps/shell/shell_util.c) | C | 263 | 0 | 77 | 340 |
| [cleonos/c/apps/shell\_main.c](/cleonos/c/apps/shell_main.c) | C | 18 | 0 | 6 | 24 |
| [cleonos/c/apps/shstat\_main.c](/cleonos/c/apps/shstat_main.c) | C | 45 | 0 | 9 | 54 |
| [cleonos/c/apps/shutdown\_main.c](/cleonos/c/apps/shutdown_main.c) | C | 40 | 0 | 9 | 49 |
| [cleonos/c/apps/sleep\_main.c](/cleonos/c/apps/sleep_main.c) | C | 52 | 0 | 12 | 64 |
| [cleonos/c/apps/sort\_main.c](/cleonos/c/apps/sort_main.c) | C | 206 | 0 | 62 | 268 |
| [cleonos/c/apps/spawn\_main.c](/cleonos/c/apps/spawn_main.c) | C | 76 | 0 | 18 | 94 |
| [cleonos/c/apps/spin\_main.c](/cleonos/c/apps/spin_main.c) | C | 12 | 0 | 4 | 16 |
| [cleonos/c/apps/stats\_main.c](/cleonos/c/apps/stats_main.c) | C | 103 | 0 | 15 | 118 |
| [cleonos/c/apps/sysstat\_main.c](/cleonos/c/apps/sysstat_main.c) | C | 341 | 0 | 45 | 386 |
| [cleonos/c/apps/tail\_main.c](/cleonos/c/apps/tail_main.c) | C | 191 | 0 | 53 | 244 |
| [cleonos/c/apps/taskstat\_main.c](/cleonos/c/apps/taskstat_main.c) | C | 43 | 0 | 9 | 52 |
| [cleonos/c/apps/top\_main.c](/cleonos/c/apps/top_main.c) | C | 193 | 0 | 45 | 238 |
| [cleonos/c/apps/touch\_main.c](/cleonos/c/apps/touch_main.c) | C | 58 | 0 | 14 | 72 |
| [cleonos/c/apps/tty\_main.c](/cleonos/c/apps/tty_main.c) | C | 64 | 0 | 15 | 79 |
| [cleonos/c/apps/ttydrv\_main.c](/cleonos/c/apps/ttydrv_main.c) | C | 6 | 0 | 3 | 9 |
| [cleonos/c/apps/uniq\_main.c](/cleonos/c/apps/uniq_main.c) | C | 168 | 0 | 47 | 215 |
| [cleonos/c/apps/userstat\_main.c](/cleonos/c/apps/userstat_main.c) | C | 48 | 0 | 9 | 57 |
| [cleonos/c/apps/wait\_main.c](/cleonos/c/apps/wait_main.c) | C | 68 | 0 | 15 | 83 |
| [cleonos/c/apps/wavplay\_main.c](/cleonos/c/apps/wavplay_main.c) | C | 447 | 0 | 110 | 557 |
| [cleonos/c/apps/wc\_main.c](/cleonos/c/apps/wc_main.c) | C | 165 | 0 | 44 | 209 |
| [cleonos/c/apps/write\_main.c](/cleonos/c/apps/write_main.c) | C | 74 | 0 | 16 | 90 |
| [cleonos/c/apps/yield\_main.c](/cleonos/c/apps/yield_main.c) | C | 39 | 0 | 9 | 48 |
| [cleonos/c/include/cleonos\_rust\_bridge.h](/cleonos/c/include/cleonos_rust_bridge.h) | C++ | 6 | 0 | 4 | 10 |
| [cleonos/c/include/cleonos\_stdio.h](/cleonos/c/include/cleonos_stdio.h) | C++ | 4 | 0 | 3 | 7 |
| [cleonos/c/include/cleonos\_syscall.h](/cleonos/c/include/cleonos_syscall.h) | C++ | 223 | 0 | 12 | 235 |
| [cleonos/c/include/ctype.h](/cleonos/c/include/ctype.h) | C++ | 14 | 0 | 3 | 17 |
| [cleonos/c/include/dlfcn.h](/cleonos/c/include/dlfcn.h) | C++ | 6 | 0 | 3 | 9 |
| [cleonos/c/include/stdio.h](/cleonos/c/include/stdio.h) | C++ | 21 | 0 | 7 | 28 |
| [cleonos/c/include/stdlib.h](/cleonos/c/include/stdlib.h) | C++ | 27 | 0 | 10 | 37 |
| [cleonos/c/include/string.h](/cleonos/c/include/string.h) | C++ | 25 | 0 | 5 | 30 |
| [cleonos/c/src/dlfcn.c](/cleonos/c/src/dlfcn.c) | C | 33 | 0 | 16 | 49 |
| [cleonos/c/src/libc\_ctype.c](/cleonos/c/src/libc_ctype.c) | C | 34 | 0 | 12 | 46 |
| [cleonos/c/src/libc\_stdlib.c](/cleonos/c/src/libc_stdlib.c) | C | 198 | 0 | 57 | 255 |
| [cleonos/c/src/libc\_string.c](/cleonos/c/src/libc_string.c) | C | 340 | 0 | 106 | 446 |
| [cleonos/c/src/runtime.c](/cleonos/c/src/runtime.c) | C | 41 | 0 | 13 | 54 |
| [cleonos/c/src/stdio.c](/cleonos/c/src/stdio.c) | C | 570 | 0 | 143 | 713 |
| [cleonos/c/src/syscall.c](/cleonos/c/src/syscall.c) | C | 278 | 0 | 92 | 370 |
| [cleonos/c/stub.c](/cleonos/c/stub.c) | C | 3 | 4 | 2 | 9 |
| [cleonos/rust/src/lib.rs](/cleonos/rust/src/lib.rs) | Rust | 23 | 0 | 9 | 32 |
| [cleonos/third-party/doomgeneric/README.md](/cleonos/third-party/doomgeneric/README.md) | Markdown | 51 | 0 | 17 | 68 |
| [cleonos/third-party/doomgeneric/doomgeneric/Makefile](/cleonos/third-party/doomgeneric/doomgeneric/Makefile) | Makefile | 34 | 7 | 14 | 55 |
| [cleonos/third-party/doomgeneric/doomgeneric/am\_map.c](/cleonos/third-party/doomgeneric/doomgeneric/am_map.c) | C | 970 | 162 | 224 | 1,356 |
| [cleonos/third-party/doomgeneric/doomgeneric/am\_map.h](/cleonos/third-party/doomgeneric/doomgeneric/am_map.h) | C++ | 13 | 24 | 13 | 50 |
| [cleonos/third-party/doomgeneric/doomgeneric/config.h](/cleonos/third-party/doomgeneric/doomgeneric/config.h) | C++ | 33 | 34 | 34 | 101 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_englsh.h](/cleonos/third-party/doomgeneric/doomgeneric/d_englsh.h) | C++ | 522 | 65 | 107 | 694 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_event.c](/cleonos/third-party/doomgeneric/doomgeneric/d_event.c) | C | 22 | 27 | 15 | 64 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_event.h](/cleonos/third-party/doomgeneric/doomgeneric/d_event.h) | C++ | 43 | 66 | 29 | 138 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_items.c](/cleonos/third-party/doomgeneric/doomgeneric/d_items.c) | C | 77 | 38 | 14 | 129 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_items.h](/cleonos/third-party/doomgeneric/doomgeneric/d_items.h) | C++ | 14 | 18 | 10 | 42 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_iwad.c](/cleonos/third-party/doomgeneric/doomgeneric/d_iwad.c) | C | 509 | 133 | 207 | 849 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_iwad.h](/cleonos/third-party/doomgeneric/doomgeneric/d_iwad.h) | C++ | 28 | 16 | 9 | 53 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_loop.c](/cleonos/third-party/doomgeneric/doomgeneric/d_loop.c) | C | 464 | 169 | 194 | 827 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_loop.h](/cleonos/third-party/doomgeneric/doomgeneric/d_loop.h) | C++ | 23 | 34 | 25 | 82 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_main.c](/cleonos/third-party/doomgeneric/doomgeneric/d_main.c) | C | 1,089 | 418 | 339 | 1,846 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_main.h](/cleonos/third-party/doomgeneric/doomgeneric/d_main.h) | C++ | 11 | 24 | 16 | 51 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_mode.c](/cleonos/third-party/doomgeneric/doomgeneric/d_mode.c) | C | 150 | 28 | 32 | 210 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_mode.h](/cleonos/third-party/doomgeneric/doomgeneric/d_mode.h) | C++ | 58 | 24 | 17 | 99 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_net.c](/cleonos/third-party/doomgeneric/doomgeneric/d_net.c) | C | 158 | 61 | 63 | 282 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_player.h](/cleonos/third-party/doomgeneric/doomgeneric/d_player.h) | C++ | 82 | 77 | 51 | 210 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_textur.h](/cleonos/third-party/doomgeneric/doomgeneric/d_textur.h) | C++ | 10 | 22 | 12 | 44 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_think.h](/cleonos/third-party/doomgeneric/doomgeneric/d_think.h) | C++ | 19 | 29 | 21 | 69 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_ticcmd.h](/cleonos/third-party/doomgeneric/doomgeneric/d_ticcmd.h) | C++ | 17 | 26 | 14 | 57 |
| [cleonos/third-party/doomgeneric/doomgeneric/deh\_main.h](/cleonos/third-party/doomgeneric/doomgeneric/deh_main.h) | C++ | 19 | 19 | 11 | 49 |
| [cleonos/third-party/doomgeneric/doomgeneric/deh\_misc.h](/cleonos/third-party/doomgeneric/doomgeneric/deh_misc.h) | C++ | 55 | 17 | 12 | 84 |
| [cleonos/third-party/doomgeneric/doomgeneric/deh\_str.h](/cleonos/third-party/doomgeneric/doomgeneric/deh_str.h) | C++ | 18 | 17 | 13 | 48 |
| [cleonos/third-party/doomgeneric/doomgeneric/doom.h](/cleonos/third-party/doomgeneric/doomgeneric/doom.h) | C++ | 4 | 27 | 12 | 43 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomdata.h](/cleonos/third-party/doomgeneric/doomgeneric/doomdata.h) | C++ | 93 | 70 | 51 | 214 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomdef.c](/cleonos/third-party/doomgeneric/doomgeneric/doomdef.c) | C | 1 | 20 | 8 | 29 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomdef.h](/cleonos/third-party/doomgeneric/doomgeneric/doomdef.h) | C++ | 86 | 48 | 35 | 169 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomfeatures.h](/cleonos/third-party/doomgeneric/doomgeneric/doomfeatures.h) | C++ | 6 | 22 | 13 | 41 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomgeneric.c](/cleonos/third-party/doomgeneric/doomgeneric/doomgeneric.c) | C | 15 | 1 | 12 | 28 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomgeneric.h](/cleonos/third-party/doomgeneric/doomgeneric/doomgeneric.h) | C++ | 31 | 1 | 18 | 50 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomgeneric.vcxproj](/cleonos/third-party/doomgeneric/doomgeneric/doomgeneric.vcxproj) | XML | 339 | 0 | 0 | 339 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomgeneric\_allegro.c](/cleonos/third-party/doomgeneric/doomgeneric/doomgeneric_allegro.c) | C | 319 | 16 | 119 | 454 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomgeneric\_emscripten.c](/cleonos/third-party/doomgeneric/doomgeneric/doomgeneric_emscripten.c) | C | 184 | 5 | 31 | 220 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomgeneric\_linuxvt.c](/cleonos/third-party/doomgeneric/doomgeneric/doomgeneric_linuxvt.c) | C | 412 | 39 | 78 | 529 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomgeneric\_sdl.c](/cleonos/third-party/doomgeneric/doomgeneric/doomgeneric_sdl.c) | C | 173 | 9 | 29 | 211 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomgeneric\_soso.c](/cleonos/third-party/doomgeneric/doomgeneric/doomgeneric_soso.c) | C | 217 | 6 | 54 | 277 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomgeneric\_sosox.c](/cleonos/third-party/doomgeneric/doomgeneric/doomgeneric_sosox.c) | C | 197 | 3 | 48 | 248 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomgeneric\_win.c](/cleonos/third-party/doomgeneric/doomgeneric/doomgeneric_win.c) | C | 171 | 2 | 37 | 210 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomgeneric\_xlib.c](/cleonos/third-party/doomgeneric/doomgeneric/doomgeneric_xlib.c) | C | 161 | 7 | 46 | 214 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomkeys.h](/cleonos/third-party/doomgeneric/doomgeneric/doomkeys.h) | C++ | 61 | 23 | 14 | 98 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomstat.c](/cleonos/third-party/doomgeneric/doomgeneric/doomstat.c) | C | 7 | 19 | 10 | 36 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomstat.h](/cleonos/third-party/doomgeneric/doomgeneric/doomstat.h) | C++ | 77 | 108 | 97 | 282 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomtype.h](/cleonos/third-party/doomgeneric/doomgeneric/doomtype.h) | C++ | 40 | 35 | 30 | 105 |
| [cleonos/third-party/doomgeneric/doomgeneric/dstrings.c](/cleonos/third-party/doomgeneric/doomgeneric/dstrings.c) | C | 37 | 22 | 15 | 74 |
| [cleonos/third-party/doomgeneric/doomgeneric/dstrings.h](/cleonos/third-party/doomgeneric/doomgeneric/dstrings.h) | C++ | 8 | 22 | 12 | 42 |
| [cleonos/third-party/doomgeneric/doomgeneric/dummy.c](/cleonos/third-party/doomgeneric/doomgeneric/dummy.c) | C | 8 | 30 | 16 | 54 |
| [cleonos/third-party/doomgeneric/doomgeneric/f\_finale.c](/cleonos/third-party/doomgeneric/doomgeneric/f_finale.c) | C | 528 | 77 | 114 | 719 |
| [cleonos/third-party/doomgeneric/doomgeneric/f\_finale.h](/cleonos/third-party/doomgeneric/doomgeneric/f_finale.h) | C++ | 9 | 23 | 14 | 46 |
| [cleonos/third-party/doomgeneric/doomgeneric/f\_wipe.c](/cleonos/third-party/doomgeneric/doomgeneric/f_wipe.c) | C | 220 | 31 | 44 | 295 |
| [cleonos/third-party/doomgeneric/doomgeneric/f\_wipe.h](/cleonos/third-party/doomgeneric/doomgeneric/f_wipe.h) | C++ | 29 | 22 | 13 | 64 |
| [cleonos/third-party/doomgeneric/doomgeneric/g\_game.c](/cleonos/third-party/doomgeneric/doomgeneric/g_game.c) | C | 1,572 | 319 | 413 | 2,304 |
| [cleonos/third-party/doomgeneric/doomgeneric/g\_game.h](/cleonos/third-party/doomgeneric/doomgeneric/g_game.h) | C++ | 29 | 28 | 24 | 81 |
| [cleonos/third-party/doomgeneric/doomgeneric/gusconf.c](/cleonos/third-party/doomgeneric/doomgeneric/gusconf.c) | C | 190 | 24 | 58 | 272 |
| [cleonos/third-party/doomgeneric/doomgeneric/gusconf.h](/cleonos/third-party/doomgeneric/doomgeneric/gusconf.h) | C++ | 7 | 16 | 7 | 30 |
| [cleonos/third-party/doomgeneric/doomgeneric/hu\_lib.c](/cleonos/third-party/doomgeneric/doomgeneric/hu_lib.c) | C | 252 | 32 | 64 | 348 |
| [cleonos/third-party/doomgeneric/doomgeneric/hu\_lib.h](/cleonos/third-party/doomgeneric/doomgeneric/hu_lib.h) | C++ | 77 | 59 | 47 | 183 |
| [cleonos/third-party/doomgeneric/doomgeneric/hu\_stuff.c](/cleonos/third-party/doomgeneric/doomgeneric/hu_stuff.c) | C | 493 | 51 | 98 | 642 |
| [cleonos/third-party/doomgeneric/doomgeneric/hu\_stuff.h](/cleonos/third-party/doomgeneric/doomgeneric/hu_stuff.h) | C++ | 21 | 23 | 16 | 60 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_allegromusic.c](/cleonos/third-party/doomgeneric/doomgeneric/i_allegromusic.c) | C | 192 | 38 | 79 | 309 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_allegrosound.c](/cleonos/third-party/doomgeneric/doomgeneric/i_allegrosound.c) | C | 255 | 73 | 106 | 434 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_cdmus.c](/cleonos/third-party/doomgeneric/doomgeneric/i_cdmus.c) | C | 159 | 31 | 54 | 244 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_cdmus.h](/cleonos/third-party/doomgeneric/doomgeneric/i_cdmus.h) | C++ | 20 | 15 | 7 | 42 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_endoom.c](/cleonos/third-party/doomgeneric/doomgeneric/i_endoom.c) | C | 48 | 26 | 28 | 102 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_endoom.h](/cleonos/third-party/doomgeneric/doomgeneric/i_endoom.h) | C++ | 4 | 19 | 7 | 30 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_input.c](/cleonos/third-party/doomgeneric/doomgeneric/i_input.c) | C | 261 | 45 | 36 | 342 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_joystick.c](/cleonos/third-party/doomgeneric/doomgeneric/i_joystick.c) | C | 254 | 38 | 68 | 360 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_joystick.h](/cleonos/third-party/doomgeneric/doomgeneric/i_joystick.h) | C++ | 21 | 33 | 17 | 71 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_scale.c](/cleonos/third-party/doomgeneric/doomgeneric/i_scale.c) | C | 889 | 225 | 339 | 1,453 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_scale.h](/cleonos/third-party/doomgeneric/doomgeneric/i_scale.h) | C++ | 21 | 20 | 13 | 54 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_sdlmusic.c](/cleonos/third-party/doomgeneric/doomgeneric/i_sdlmusic.c) | C | 887 | 177 | 253 | 1,317 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_sdlsound.c](/cleonos/third-party/doomgeneric/doomgeneric/i_sdlsound.c) | C | 616 | 195 | 266 | 1,077 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_sound.c](/cleonos/third-party/doomgeneric/doomgeneric/i_sound.c) | C | 284 | 62 | 75 | 421 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_sound.h](/cleonos/third-party/doomgeneric/doomgeneric/i_sound.h) | C++ | 104 | 71 | 82 | 257 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_swap.h](/cleonos/third-party/doomgeneric/doomgeneric/i_swap.h) | C++ | 34 | 18 | 22 | 74 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_system.c](/cleonos/third-party/doomgeneric/doomgeneric/i_system.c) | C | 347 | 112 | 120 | 579 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_system.h](/cleonos/third-party/doomgeneric/doomgeneric/i_system.h) | C++ | 19 | 37 | 29 | 85 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_timer.c](/cleonos/third-party/doomgeneric/doomgeneric/i_timer.c) | C | 36 | 32 | 29 | 97 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_timer.h](/cleonos/third-party/doomgeneric/doomgeneric/i_timer.h) | C++ | 9 | 23 | 11 | 43 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_video.c](/cleonos/third-party/doomgeneric/doomgeneric/i_video.c) | C | 309 | 74 | 113 | 496 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_video.h](/cleonos/third-party/doomgeneric/doomgeneric/i_video.h) | C++ | 63 | 65 | 48 | 176 |
| [cleonos/third-party/doomgeneric/doomgeneric/icon.c](/cleonos/third-party/doomgeneric/doomgeneric/icon.c) | C | 260 | 0 | 3 | 263 |
| [cleonos/third-party/doomgeneric/doomgeneric/info.c](/cleonos/third-party/doomgeneric/doomgeneric/info.c) | C | 4,492 | 21 | 150 | 4,663 |
| [cleonos/third-party/doomgeneric/doomgeneric/info.h](/cleonos/third-party/doomgeneric/doomgeneric/info.h) | C++ | 1,296 | 21 | 15 | 1,332 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_argv.c](/cleonos/third-party/doomgeneric/doomgeneric/m_argv.c) | C | 150 | 52 | 64 | 266 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_argv.h](/cleonos/third-party/doomgeneric/doomgeneric/m_argv.h) | C++ | 11 | 26 | 13 | 50 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_bbox.c](/cleonos/third-party/doomgeneric/doomgeneric/m_bbox.c) | C | 21 | 20 | 14 | 55 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_bbox.h](/cleonos/third-party/doomgeneric/doomgeneric/m_bbox.h) | C++ | 18 | 19 | 11 | 48 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_cheat.c](/cleonos/third-party/doomgeneric/doomgeneric/m_cheat.c) | C | 38 | 32 | 20 | 90 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_cheat.h](/cleonos/third-party/doomgeneric/doomgeneric/m_cheat.h) | C++ | 24 | 23 | 16 | 63 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_config.c](/cleonos/third-party/doomgeneric/doomgeneric/m_config.c) | C | 615 | 948 | 566 | 2,129 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_config.h](/cleonos/third-party/doomgeneric/doomgeneric/m_config.h) | C++ | 16 | 17 | 7 | 40 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_controls.c](/cleonos/third-party/doomgeneric/doomgeneric/m_controls.c) | C | 269 | 57 | 73 | 399 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_controls.h](/cleonos/third-party/doomgeneric/doomgeneric/m_controls.h) | C++ | 121 | 17 | 31 | 169 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_fixed.c](/cleonos/third-party/doomgeneric/doomgeneric/m_fixed.c) | C | 24 | 21 | 18 | 63 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_fixed.h](/cleonos/third-party/doomgeneric/doomgeneric/m_fixed.h) | C++ | 8 | 20 | 12 | 40 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_menu.c](/cleonos/third-party/doomgeneric/doomgeneric/m_menu.c) | C | 1,502 | 250 | 374 | 2,126 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_menu.h](/cleonos/third-party/doomgeneric/doomgeneric/m_menu.h) | C++ | 11 | 33 | 18 | 62 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_misc.c](/cleonos/third-party/doomgeneric/doomgeneric/m_misc.c) | C | 335 | 87 | 115 | 537 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_misc.h](/cleonos/third-party/doomgeneric/doomgeneric/m_misc.h) | C++ | 27 | 17 | 8 | 52 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_random.c](/cleonos/third-party/doomgeneric/doomgeneric/m_random.c) | C | 37 | 22 | 7 | 66 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_random.h](/cleonos/third-party/doomgeneric/doomgeneric/m_random.h) | C++ | 7 | 21 | 12 | 40 |
| [cleonos/third-party/doomgeneric/doomgeneric/memio.c](/cleonos/third-party/doomgeneric/doomgeneric/memio.c) | C | 122 | 27 | 49 | 198 |
| [cleonos/third-party/doomgeneric/doomgeneric/memio.h](/cleonos/third-party/doomgeneric/doomgeneric/memio.h) | C++ | 18 | 14 | 7 | 39 |
| [cleonos/third-party/doomgeneric/doomgeneric/mus2mid.c](/cleonos/third-party/doomgeneric/doomgeneric/mus2mid.c) | C | 504 | 76 | 158 | 738 |
| [cleonos/third-party/doomgeneric/doomgeneric/mus2mid.h](/cleonos/third-party/doomgeneric/doomgeneric/mus2mid.h) | C++ | 6 | 0 | 3 | 9 |
| [cleonos/third-party/doomgeneric/doomgeneric/net\_client.h](/cleonos/third-party/doomgeneric/doomgeneric/net_client.h) | C++ | 29 | 15 | 9 | 53 |
| [cleonos/third-party/doomgeneric/doomgeneric/net\_dedicated.h](/cleonos/third-party/doomgeneric/doomgeneric/net_dedicated.h) | C++ | 4 | 16 | 6 | 26 |
| [cleonos/third-party/doomgeneric/doomgeneric/net\_defs.h](/cleonos/third-party/doomgeneric/doomgeneric/net_defs.h) | C++ | 148 | 46 | 55 | 249 |
| [cleonos/third-party/doomgeneric/doomgeneric/net\_gui.h](/cleonos/third-party/doomgeneric/doomgeneric/net_gui.h) | C++ | 5 | 18 | 7 | 30 |
| [cleonos/third-party/doomgeneric/doomgeneric/net\_io.h](/cleonos/third-party/doomgeneric/doomgeneric/net_io.h) | C++ | 14 | 16 | 7 | 37 |
| [cleonos/third-party/doomgeneric/doomgeneric/net\_loop.h](/cleonos/third-party/doomgeneric/doomgeneric/net_loop.h) | C++ | 6 | 16 | 6 | 28 |
| [cleonos/third-party/doomgeneric/doomgeneric/net\_packet.h](/cleonos/third-party/doomgeneric/doomgeneric/net_packet.h) | C++ | 18 | 16 | 11 | 45 |
| [cleonos/third-party/doomgeneric/doomgeneric/net\_query.h](/cleonos/third-party/doomgeneric/doomgeneric/net_query.h) | C++ | 19 | 16 | 10 | 45 |
| [cleonos/third-party/doomgeneric/doomgeneric/net\_sdl.h](/cleonos/third-party/doomgeneric/doomgeneric/net_sdl.h) | C++ | 5 | 16 | 6 | 27 |
| [cleonos/third-party/doomgeneric/doomgeneric/net\_server.h](/cleonos/third-party/doomgeneric/doomgeneric/net_server.h) | C++ | 8 | 21 | 14 | 43 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_ceilng.c](/cleonos/third-party/doomgeneric/doomgeneric/p_ceilng.c) | C | 226 | 47 | 52 | 325 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_doors.c](/cleonos/third-party/doomgeneric/doomgeneric/p_doors.c) | C | 571 | 83 | 125 | 779 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_enemy.c](/cleonos/third-party/doomgeneric/doomgeneric/p_enemy.c) | C | 1,341 | 238 | 428 | 2,007 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_floor.c](/cleonos/third-party/doomgeneric/doomgeneric/p_floor.c) | C | 429 | 54 | 64 | 547 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_inter.c](/cleonos/third-party/doomgeneric/doomgeneric/p_inter.c) | C | 643 | 115 | 165 | 923 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_inter.h](/cleonos/third-party/doomgeneric/doomgeneric/p_inter.h) | C++ | 4 | 17 | 10 | 31 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_lights.c](/cleonos/third-party/doomgeneric/doomgeneric/p_lights.c) | C | 201 | 72 | 78 | 351 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_local.h](/cleonos/third-party/doomgeneric/doomgeneric/p_local.h) | C++ | 155 | 66 | 77 | 298 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_map.c](/cleonos/third-party/doomgeneric/doomgeneric/p_map.c) | C | 828 | 304 | 317 | 1,449 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_maputl.c](/cleonos/third-party/doomgeneric/doomgeneric/p_maputl.c) | C | 651 | 161 | 190 | 1,002 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_mobj.c](/cleonos/third-party/doomgeneric/doomgeneric/p_mobj.c) | C | 654 | 184 | 212 | 1,050 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_mobj.h](/cleonos/third-party/doomgeneric/doomgeneric/p_mobj.h) | C++ | 77 | 161 | 47 | 285 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_plats.c](/cleonos/third-party/doomgeneric/doomgeneric/p_plats.c) | C | 218 | 29 | 58 | 305 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_pspr.c](/cleonos/third-party/doomgeneric/doomgeneric/p_pspr.c) | C | 537 | 173 | 179 | 889 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_pspr.h](/cleonos/third-party/doomgeneric/doomgeneric/p_pspr.h) | C++ | 21 | 35 | 16 | 72 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_saveg.c](/cleonos/third-party/doomgeneric/doomgeneric/p_saveg.c) | C | 975 | 435 | 482 | 1,892 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_saveg.h](/cleonos/third-party/doomgeneric/doomgeneric/p_saveg.h) | C++ | 21 | 24 | 18 | 63 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_setup.c](/cleonos/third-party/doomgeneric/doomgeneric/p_setup.c) | C | 547 | 134 | 175 | 856 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_setup.h](/cleonos/third-party/doomgeneric/doomgeneric/p_setup.h) | C++ | 10 | 19 | 9 | 38 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_sight.c](/cleonos/third-party/doomgeneric/doomgeneric/p_sight.c) | C | 204 | 75 | 72 | 351 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_spec.c](/cleonos/third-party/doomgeneric/doomgeneric/p_spec.c) | C | 908 | 307 | 275 | 1,490 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_spec.h](/cleonos/third-party/doomgeneric/doomgeneric/p_spec.h) | C++ | 380 | 75 | 183 | 638 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_switch.c](/cleonos/third-party/doomgeneric/doomgeneric/p_switch.c) | C | 425 | 111 | 113 | 649 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_telept.c](/cleonos/third-party/doomgeneric/doomgeneric/p_telept.c) | C | 69 | 35 | 30 | 134 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_tick.c](/cleonos/third-party/doomgeneric/doomgeneric/p_tick.c) | C | 63 | 53 | 36 | 152 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_tick.h](/cleonos/third-party/doomgeneric/doomgeneric/p_tick.h) | C++ | 4 | 20 | 10 | 34 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_user.c](/cleonos/third-party/doomgeneric/doomgeneric/p_user.c) | C | 219 | 73 | 88 | 380 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_bsp.c](/cleonos/third-party/doomgeneric/doomgeneric/r_bsp.c) | C | 329 | 122 | 123 | 574 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_bsp.h](/cleonos/third-party/doomgeneric/doomgeneric/r_bsp.h) | C++ | 23 | 19 | 20 | 62 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_data.c](/cleonos/third-party/doomgeneric/doomgeneric/r_data.c) | C | 543 | 167 | 203 | 913 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_data.h](/cleonos/third-party/doomgeneric/doomgeneric/r_data.h) | C++ | 14 | 25 | 13 | 52 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_defs.h](/cleonos/third-party/doomgeneric/doomgeneric/r_defs.h) | C++ | 164 | 155 | 130 | 449 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_draw.c](/cleonos/third-party/doomgeneric/doomgeneric/r_draw.c) | C | 554 | 216 | 206 | 976 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_draw.h](/cleonos/third-party/doomgeneric/doomgeneric/r_draw.h) | C++ | 40 | 33 | 32 | 105 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_local.h](/cleonos/third-party/doomgeneric/doomgeneric/r_local.h) | C++ | 13 | 24 | 9 | 46 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_main.c](/cleonos/third-party/doomgeneric/doomgeneric/r_main.c) | C | 556 | 155 | 181 | 892 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_main.h](/cleonos/third-party/doomgeneric/doomgeneric/r_main.h) | C++ | 72 | 45 | 44 | 161 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_plane.c](/cleonos/third-party/doomgeneric/doomgeneric/r_plane.c) | C | 278 | 84 | 85 | 447 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_plane.h](/cleonos/third-party/doomgeneric/doomgeneric/r_plane.h) | C++ | 37 | 18 | 22 | 77 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_segs.c](/cleonos/third-party/doomgeneric/doomgeneric/r_segs.c) | C | 507 | 103 | 134 | 744 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_segs.h](/cleonos/third-party/doomgeneric/doomgeneric/r_segs.h) | C++ | 8 | 17 | 9 | 34 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_sky.c](/cleonos/third-party/doomgeneric/doomgeneric/r_sky.c) | C | 10 | 31 | 12 | 53 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_sky.h](/cleonos/third-party/doomgeneric/doomgeneric/r_sky.h) | C++ | 8 | 20 | 10 | 38 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_state.h](/cleonos/third-party/doomgeneric/doomgeneric/r_state.h) | C++ | 49 | 36 | 43 | 128 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_things.c](/cleonos/third-party/doomgeneric/doomgeneric/r_things.c) | C | 605 | 171 | 207 | 983 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_things.h](/cleonos/third-party/doomgeneric/doomgeneric/r_things.h) | C++ | 28 | 20 | 18 | 66 |
| [cleonos/third-party/doomgeneric/doomgeneric/s\_sound.c](/cleonos/third-party/doomgeneric/doomgeneric/s_sound.c) | C | 431 | 108 | 132 | 671 |
| [cleonos/third-party/doomgeneric/doomgeneric/s\_sound.h](/cleonos/third-party/doomgeneric/doomgeneric/s_sound.h) | C++ | 20 | 42 | 28 | 90 |
| [cleonos/third-party/doomgeneric/doomgeneric/sha1.c](/cleonos/third-party/doomgeneric/doomgeneric/sha1.c) | C | 239 | 49 | 32 | 320 |
| [cleonos/third-party/doomgeneric/doomgeneric/sha1.h](/cleonos/third-party/doomgeneric/doomgeneric/sha1.h) | C++ | 17 | 16 | 8 | 41 |
| [cleonos/third-party/doomgeneric/doomgeneric/sounds.c](/cleonos/third-party/doomgeneric/doomgeneric/sounds.c) | C | 192 | 25 | 13 | 230 |
| [cleonos/third-party/doomgeneric/doomgeneric/sounds.h](/cleonos/third-party/doomgeneric/doomgeneric/sounds.h) | C++ | 191 | 26 | 11 | 228 |
| [cleonos/third-party/doomgeneric/doomgeneric/st\_lib.c](/cleonos/third-party/doomgeneric/doomgeneric/st_lib.c) | C | 186 | 35 | 64 | 285 |
| [cleonos/third-party/doomgeneric/doomgeneric/st\_lib.h](/cleonos/third-party/doomgeneric/doomgeneric/st_lib.h) | C++ | 91 | 60 | 59 | 210 |
| [cleonos/third-party/doomgeneric/doomgeneric/st\_stuff.c](/cleonos/third-party/doomgeneric/doomgeneric/st_stuff.c) | C | 903 | 216 | 298 | 1,417 |
| [cleonos/third-party/doomgeneric/doomgeneric/st\_stuff.h](/cleonos/third-party/doomgeneric/doomgeneric/st_stuff.h) | C++ | 36 | 31 | 23 | 90 |
| [cleonos/third-party/doomgeneric/doomgeneric/statdump.c](/cleonos/third-party/doomgeneric/doomgeneric/statdump.c) | C | 239 | 58 | 96 | 393 |
| [cleonos/third-party/doomgeneric/doomgeneric/statdump.h](/cleonos/third-party/doomgeneric/doomgeneric/statdump.h) | C++ | 5 | 15 | 4 | 24 |
| [cleonos/third-party/doomgeneric/doomgeneric/tables.c](/cleonos/third-party/doomgeneric/doomgeneric/tables.c) | C | 2,173 | 37 | 18 | 2,228 |
| [cleonos/third-party/doomgeneric/doomgeneric/tables.h](/cleonos/third-party/doomgeneric/doomgeneric/tables.h) | C++ | 26 | 44 | 27 | 97 |
| [cleonos/third-party/doomgeneric/doomgeneric/v\_patch.h](/cleonos/third-party/doomgeneric/doomgeneric/v_patch.h) | C++ | 17 | 25 | 9 | 51 |
| [cleonos/third-party/doomgeneric/doomgeneric/v\_video.c](/cleonos/third-party/doomgeneric/doomgeneric/v_video.c) | C | 617 | 139 | 177 | 933 |
| [cleonos/third-party/doomgeneric/doomgeneric/v\_video.h](/cleonos/third-party/doomgeneric/doomgeneric/v_video.h) | C++ | 34 | 40 | 35 | 109 |
| [cleonos/third-party/doomgeneric/doomgeneric/w\_checksum.c](/cleonos/third-party/doomgeneric/doomgeneric/w_checksum.c) | C | 48 | 21 | 19 | 88 |
| [cleonos/third-party/doomgeneric/doomgeneric/w\_checksum.h](/cleonos/third-party/doomgeneric/doomgeneric/w_checksum.h) | C++ | 5 | 17 | 6 | 28 |
| [cleonos/third-party/doomgeneric/doomgeneric/w\_file.c](/cleonos/third-party/doomgeneric/doomgeneric/w_file.c) | C | 44 | 32 | 20 | 96 |
| [cleonos/third-party/doomgeneric/doomgeneric/w\_file.h](/cleonos/third-party/doomgeneric/doomgeneric/w_file.h) | C++ | 23 | 31 | 25 | 79 |
| [cleonos/third-party/doomgeneric/doomgeneric/w\_file\_stdc.c](/cleonos/third-party/doomgeneric/doomgeneric/w_file_stdc.c) | C | 49 | 22 | 26 | 97 |
| [cleonos/third-party/doomgeneric/doomgeneric/w\_main.c](/cleonos/third-party/doomgeneric/doomgeneric/w_main.c) | C | 87 | 66 | 46 | 199 |
| [cleonos/third-party/doomgeneric/doomgeneric/w\_main.h](/cleonos/third-party/doomgeneric/doomgeneric/w_main.h) | C++ | 4 | 16 | 5 | 25 |
| [cleonos/third-party/doomgeneric/doomgeneric/w\_merge.h](/cleonos/third-party/doomgeneric/doomgeneric/w_merge.h) | C++ | 9 | 23 | 13 | 45 |
| [cleonos/third-party/doomgeneric/doomgeneric/w\_wad.c](/cleonos/third-party/doomgeneric/doomgeneric/w_wad.c) | C | 353 | 124 | 136 | 613 |
| [cleonos/third-party/doomgeneric/doomgeneric/w\_wad.h](/cleonos/third-party/doomgeneric/doomgeneric/w_wad.h) | C++ | 31 | 24 | 24 | 79 |
| [cleonos/third-party/doomgeneric/doomgeneric/wi\_stuff.c](/cleonos/third-party/doomgeneric/doomgeneric/wi_stuff.c) | C | 1,215 | 210 | 405 | 1,830 |
| [cleonos/third-party/doomgeneric/doomgeneric/wi\_stuff.h](/cleonos/third-party/doomgeneric/doomgeneric/wi_stuff.h) | C++ | 14 | 24 | 11 | 49 |
| [cleonos/third-party/doomgeneric/doomgeneric/z\_zone.c](/cleonos/third-party/doomgeneric/doomgeneric/z_zone.c) | C | 278 | 89 | 122 | 489 |
| [cleonos/third-party/doomgeneric/doomgeneric/z\_zone.h](/cleonos/third-party/doomgeneric/doomgeneric/z_zone.h) | C++ | 29 | 29 | 16 | 74 |
| [clks/arch/aarch64/startup/boot.c](/clks/arch/aarch64/startup/boot.c) | C | 6 | 0 | 1 | 7 |
| [clks/arch/x86\_64/interrupt/interrupt\_stubs.S](/clks/arch/x86_64/interrupt/interrupt_stubs.S) | Go Assembly | 108 | 0 | 12 | 120 |
| [clks/arch/x86\_64/startup/boot.c](/clks/arch/x86_64/startup/boot.c) | C | 6 | 0 | 1 | 7 |
| [clks/arch/x86\_64/startup/exec\_stack\_call.S](/clks/arch/x86_64/startup/exec_stack_call.S) | Go Assembly | 40 | 0 | 8 | 48 |
| [clks/include/clks/audio.h](/clks/include/clks/audio.h) | C++ | 9 | 0 | 3 | 12 |
| [clks/include/clks/boot.h](/clks/include/clks/boot.h) | C++ | 11 | 0 | 4 | 15 |
| [clks/include/clks/compiler.h](/clks/include/clks/compiler.h) | C++ | 13 | 0 | 4 | 17 |
| [clks/include/clks/cpu.h](/clks/include/clks/cpu.h) | C++ | 20 | 0 | 4 | 24 |
| [clks/include/clks/desktop.h](/clks/include/clks/desktop.h) | C++ | 7 | 0 | 4 | 11 |
| [clks/include/clks/driver.h](/clks/include/clks/driver.h) | C++ | 29 | 0 | 8 | 37 |
| [clks/include/clks/elf64.h](/clks/include/clks/elf64.h) | C++ | 32 | 0 | 9 | 41 |
| [clks/include/clks/elfrunner.h](/clks/include/clks/elfrunner.h) | C++ | 6 | 0 | 3 | 9 |
| [clks/include/clks/exec.h](/clks/include/clks/exec.h) | C++ | 73 | 0 | 8 | 81 |
| [clks/include/clks/framebuffer.h](/clks/include/clks/framebuffer.h) | C++ | 26 | 0 | 6 | 32 |
| [clks/include/clks/fs.h](/clks/include/clks/fs.h) | C++ | 23 | 0 | 7 | 30 |
| [clks/include/clks/heap.h](/clks/include/clks/heap.h) | C++ | 15 | 0 | 4 | 19 |
| [clks/include/clks/interrupts.h](/clks/include/clks/interrupts.h) | C++ | 6 | 0 | 3 | 9 |
| [clks/include/clks/kelf.h](/clks/include/clks/kelf.h) | C++ | 9 | 0 | 5 | 14 |
| [clks/include/clks/kernel.h](/clks/include/clks/kernel.h) | C++ | 4 | 0 | 2 | 6 |
| [clks/include/clks/keyboard.h](/clks/include/clks/keyboard.h) | C++ | 27 | 0 | 5 | 32 |
| [clks/include/clks/limine.h](/clks/include/clks/limine.h) | C++ | 112 | 0 | 24 | 136 |
| [clks/include/clks/log.h](/clks/include/clks/log.h) | C++ | 14 | 0 | 5 | 19 |
| [clks/include/clks/mouse.h](/clks/include/clks/mouse.h) | C++ | 20 | 0 | 6 | 26 |
| [clks/include/clks/panic.h](/clks/include/clks/panic.h) | C++ | 7 | 0 | 4 | 11 |
| [clks/include/clks/pmm.h](/clks/include/clks/pmm.h) | C++ | 16 | 0 | 5 | 21 |
| [clks/include/clks/ramdisk.h](/clks/include/clks/ramdisk.h) | C++ | 17 | 0 | 8 | 25 |
| [clks/include/clks/scheduler.h](/clks/include/clks/scheduler.h) | C++ | 18 | 0 | 5 | 23 |
| [clks/include/clks/serial.h](/clks/include/clks/serial.h) | C++ | 6 | 0 | 2 | 8 |
| [clks/include/clks/service.h](/clks/include/clks/service.h) | C++ | 31 | 0 | 8 | 39 |
| [clks/include/clks/shell.h](/clks/include/clks/shell.h) | C++ | 7 | 0 | 3 | 10 |
| [clks/include/clks/string.h](/clks/include/clks/string.h) | C++ | 9 | 0 | 3 | 12 |
| [clks/include/clks/syscall.h](/clks/include/clks/syscall.h) | C++ | 91 | 0 | 5 | 96 |
| [clks/include/clks/task.h](/clks/include/clks/task.h) | C++ | 19 | 0 | 7 | 26 |
| [clks/include/clks/tty.h](/clks/include/clks/tty.h) | C++ | 15 | 0 | 4 | 19 |
| [clks/include/clks/types.h](/clks/include/clks/types.h) | C++ | 14 | 0 | 6 | 20 |
| [clks/include/clks/userland.h](/clks/include/clks/userland.h) | C++ | 12 | 0 | 4 | 16 |
| [clks/kernel/boot/limine/limine\_requests.c](/clks/kernel/boot/limine/limine_requests.c) | C | 76 | 0 | 26 | 102 |
| [clks/kernel/core/interrupts.c](/clks/kernel/core/interrupts.c) | C | 307 | 0 | 43 | 350 |
| [clks/kernel/core/kmain.c](/clks/kernel/core/kmain.c) | C | 388 | 1 | 77 | 466 |
| [clks/kernel/core/log.c](/clks/kernel/core/log.c) | C | 179 | 0 | 48 | 227 |
| [clks/kernel/core/panic.c](/clks/kernel/core/panic.c) | C | 527 | 0 | 155 | 682 |
| [clks/kernel/core/scheduler.c](/clks/kernel/core/scheduler.c) | C | 136 | 0 | 44 | 180 |
| [clks/kernel/core/service.c](/clks/kernel/core/service.c) | C | 107 | 0 | 34 | 141 |
| [clks/kernel/hal/audio/pcspeaker.c](/clks/kernel/hal/audio/pcspeaker.c) | C | 101 | 0 | 25 | 126 |
| [clks/kernel/hal/serial/serial.c](/clks/kernel/hal/serial/serial.c) | C | 51 | 0 | 16 | 67 |
| [clks/kernel/hal/video/font8x8.c](/clks/kernel/hal/video/font8x8.c) | C | 45 | 0 | 8 | 53 |
| [clks/kernel/hal/video/font8x8.h](/clks/kernel/hal/video/font8x8.h) | C++ | 5 | 0 | 3 | 8 |
| [clks/kernel/hal/video/framebuffer.c](/clks/kernel/hal/video/framebuffer.c) | C | 247 | 0 | 69 | 316 |
| [clks/kernel/hal/video/psf\_font.c](/clks/kernel/hal/video/psf_font.c) | C | 203 | 0 | 56 | 259 |
| [clks/kernel/hal/video/psf\_font.h](/clks/kernel/hal/video/psf_font.h) | C++ | 15 | 0 | 5 | 20 |
| [clks/kernel/input/keyboard.c](/clks/kernel/input/keyboard.c) | C | 370 | 0 | 95 | 465 |
| [clks/kernel/input/mouse.c](/clks/kernel/input/mouse.c) | C | 243 | 0 | 63 | 306 |
| [clks/kernel/interface/desktop.c](/clks/kernel/interface/desktop.c) | C | 321 | 0 | 86 | 407 |
| [clks/kernel/interface/shell.c](/clks/kernel/interface/shell.c) | C | 1,232 | 0 | 316 | 1,548 |
| [clks/kernel/interface/tty.c](/clks/kernel/interface/tty.c) | C | 1,137 | 0 | 288 | 1,425 |
| [clks/kernel/memory/heap.c](/clks/kernel/memory/heap.c) | C | 137 | 0 | 44 | 181 |
| [clks/kernel/memory/pmm.c](/clks/kernel/memory/pmm.c) | C | 82 | 0 | 23 | 105 |
| [clks/kernel/runtime/driver.c](/clks/kernel/runtime/driver.c) | C | 166 | 0 | 49 | 215 |
| [clks/kernel/runtime/elf64.c](/clks/kernel/runtime/elf64.c) | C | 279 | 1 | 84 | 364 |
| [clks/kernel/runtime/elfrunner.c](/clks/kernel/runtime/elfrunner.c) | C | 30 | 0 | 8 | 38 |
| [clks/kernel/runtime/exec.c](/clks/kernel/runtime/exec.c) | C | 2,179 | 1 | 595 | 2,775 |
| [clks/kernel/runtime/kelf.c](/clks/kernel/runtime/kelf.c) | C | 198 | 1 | 52 | 251 |
| [clks/kernel/runtime/syscall.c](/clks/kernel/runtime/syscall.c) | C | 2,021 | 0 | 507 | 2,528 |
| [clks/kernel/runtime/userland.c](/clks/kernel/runtime/userland.c) | C | 146 | 0 | 38 | 184 |
| [clks/kernel/storage/fs.c](/clks/kernel/storage/fs.c) | C | 684 | 0 | 222 | 906 |
| [clks/kernel/storage/ramdisk.c](/clks/kernel/storage/ramdisk.c) | C | 172 | 0 | 50 | 222 |
| [clks/kernel/support/libc\_compat.c](/clks/kernel/support/libc_compat.c) | C | 25 | 0 | 7 | 32 |
| [clks/kernel/support/string.c](/clks/kernel/support/string.c) | C | 54 | 0 | 16 | 70 |
| [clks/rust/src/lib.rs](/clks/rust/src/lib.rs) | Rust | 21 | 0 | 6 | 27 |
| [cmake/check\_tools.cmake](/cmake/check_tools.cmake) | CMake | 34 | 0 | 7 | 41 |
| [cmake/gen\_kernel\_symbols.cmake](/cmake/gen_kernel_symbols.cmake) | CMake | 80 | 0 | 26 | 106 |
| [cmake/log.cmake](/cmake/log.cmake) | CMake | 30 | 0 | 6 | 36 |
| [cmake/log\_emit.cmake](/cmake/log_emit.cmake) | CMake | 23 | 0 | 6 | 29 |
| [cmake/setup\_limine.cmake](/cmake/setup_limine.cmake) | CMake | 100 | 0 | 19 | 119 |
| [configs/limine.conf](/configs/limine.conf) | Properties | 6 | 0 | 1 | 7 |
| [configs/menuconfig/clks\_features.json](/configs/menuconfig/clks_features.json) | JSON | 376 | 0 | 1 | 377 |
| [docs/README.md](/docs/README.md) | Markdown | 31 | 0 | 4 | 35 |
| [docs/stage1.md](/docs/stage1.md) | Markdown | 41 | 0 | 5 | 46 |
| [docs/stage10.md](/docs/stage10.md) | Markdown | 34 | 0 | 6 | 40 |
| [docs/stage11.md](/docs/stage11.md) | Markdown | 36 | 0 | 5 | 41 |
| [docs/stage12.md](/docs/stage12.md) | Markdown | 40 | 0 | 6 | 46 |
| [docs/stage13.md](/docs/stage13.md) | Markdown | 34 | 0 | 6 | 40 |
| [docs/stage14.md](/docs/stage14.md) | Markdown | 44 | 0 | 8 | 52 |
| [docs/stage15.md](/docs/stage15.md) | Markdown | 47 | 0 | 7 | 54 |
| [docs/stage2.md](/docs/stage2.md) | Markdown | 30 | 0 | 5 | 35 |
| [docs/stage20.md](/docs/stage20.md) | Markdown | 46 | 0 | 6 | 52 |
| [docs/stage21.md](/docs/stage21.md) | Markdown | 72 | 0 | 7 | 79 |
| [docs/stage22.md](/docs/stage22.md) | Markdown | 68 | 0 | 7 | 75 |
| [docs/stage23.md](/docs/stage23.md) | Markdown | 41 | 0 | 6 | 47 |
| [docs/stage24.md](/docs/stage24.md) | Markdown | 42 | 0 | 7 | 49 |
| [docs/stage25.md](/docs/stage25.md) | Markdown | 58 | 0 | 7 | 65 |
| [docs/stage26.md](/docs/stage26.md) | Markdown | 32 | 0 | 7 | 39 |
| [docs/stage27.md](/docs/stage27.md) | Markdown | 32 | 0 | 7 | 39 |
| [docs/stage28.md](/docs/stage28.md) | Markdown | 37 | 0 | 7 | 44 |
| [docs/stage29.md](/docs/stage29.md) | Markdown | 33 | 0 | 7 | 40 |
| [docs/stage3.md](/docs/stage3.md) | Markdown | 29 | 0 | 5 | 34 |
| [docs/stage4.md](/docs/stage4.md) | Markdown | 30 | 0 | 5 | 35 |
| [docs/stage5.md](/docs/stage5.md) | Markdown | 29 | 0 | 5 | 34 |
| [docs/stage6.md](/docs/stage6.md) | Markdown | 30 | 0 | 6 | 36 |
| [docs/stage7.md](/docs/stage7.md) | Markdown | 34 | 0 | 6 | 40 |
| [docs/stage8.md](/docs/stage8.md) | Markdown | 31 | 0 | 6 | 37 |
| [docs/stage9.md](/docs/stage9.md) | Markdown | 31 | 0 | 6 | 37 |
| [docs/syscall.md](/docs/syscall.md) | Markdown | 499 | 0 | 206 | 705 |
| [limine/.github/dependabot.yml](/limine/.github/dependabot.yml) | YAML | 7 | 0 | 1 | 8 |
| [limine/.github/workflows/binary-release.yml](/limine/.github/workflows/binary-release.yml) | YAML | 78 | 0 | 21 | 99 |
| [limine/.github/workflows/check.yml](/limine/.github/workflows/check.yml) | YAML | 34 | 0 | 12 | 46 |
| [limine/.github/workflows/pr\_branch\_check.yml](/limine/.github/workflows/pr_branch_check.yml) | YAML | 13 | 0 | 3 | 16 |
| [limine/.github/workflows/qa.yml](/limine/.github/workflows/qa.yml) | YAML | 14 | 0 | 5 | 19 |
| [limine/.github/workflows/release.yml](/limine/.github/workflows/release.yml) | YAML | 64 | 0 | 17 | 81 |
| [limine/3RDPARTY.md](/limine/3RDPARTY.md) | Markdown | 53 | 0 | 15 | 68 |
| [limine/CONFIG.md](/limine/CONFIG.md) | Markdown | 320 | 0 | 53 | 373 |
| [limine/FAQ.md](/limine/FAQ.md) | Markdown | 26 | 0 | 10 | 36 |
| [limine/INSTALL.md](/limine/INSTALL.md) | Markdown | 37 | 0 | 15 | 52 |
| [limine/README.md](/limine/README.md) | Markdown | 70 | 0 | 33 | 103 |
| [limine/USAGE.md](/limine/USAGE.md) | Markdown | 85 | 0 | 23 | 108 |
| [limine/common/common.mk](/limine/common/common.mk) | Makefile | 562 | 0 | 115 | 677 |
| [limine/common/crypt/blake2b.c](/limine/common/crypt/blake2b.c) | C | 179 | 3 | 39 | 221 |
| [limine/common/crypt/blake2b.h](/limine/common/crypt/blake2b.h) | C++ | 6 | 0 | 5 | 11 |
| [limine/common/drivers/disk.h](/limine/common/drivers/disk.h) | C++ | 18 | 0 | 9 | 27 |
| [limine/common/drivers/disk.s2.c](/limine/common/drivers/disk.s2.c) | C | 646 | 33 | 178 | 857 |
| [limine/common/drivers/edid.c](/limine/common/drivers/edid.c) | C | 61 | 0 | 25 | 86 |
| [limine/common/drivers/edid.h](/limine/common/drivers/edid.h) | C++ | 37 | 0 | 7 | 44 |
| [limine/common/drivers/gop.c](/limine/common/drivers/gop.c) | C | 306 | 3 | 73 | 382 |
| [limine/common/drivers/gop.h](/limine/common/drivers/gop.h) | C++ | 13 | 0 | 7 | 20 |
| [limine/common/drivers/serial.c](/limine/common/drivers/serial.c) | C | 37 | 1 | 13 | 51 |
| [limine/common/drivers/serial.h](/limine/common/drivers/serial.h) | C++ | 9 | 0 | 7 | 16 |
| [limine/common/drivers/vbe.c](/limine/common/drivers/vbe.c) | C | 307 | 8 | 53 | 368 |
| [limine/common/drivers/vbe.h](/limine/common/drivers/vbe.h) | C++ | 11 | 0 | 5 | 16 |
| [limine/common/drivers/vga\_textmode.c](/limine/common/drivers/vga_textmode.c) | C | 294 | 5 | 71 | 370 |
| [limine/common/drivers/vga\_textmode.h](/limine/common/drivers/vga_textmode.h) | C++ | 24 | 0 | 12 | 36 |
| [limine/common/entry.s2.c](/limine/common/entry.s2.c) | C | 106 | 1 | 28 | 135 |
| [limine/common/entry.s3.c](/limine/common/entry.s3.c) | C | 202 | 0 | 47 | 249 |
| [limine/common/fs/fat32.h](/limine/common/fs/fat32.h) | C++ | 7 | 0 | 5 | 12 |
| [limine/common/fs/fat32.s2.c](/limine/common/fs/fat32.s2.c) | C | 577 | 39 | 111 | 727 |
| [limine/common/fs/file.h](/limine/common/fs/file.h) | C++ | 39 | 0 | 7 | 46 |
| [limine/common/fs/file.s2.c](/limine/common/fs/file.s2.c) | C | 163 | 0 | 22 | 185 |
| [limine/common/fs/iso9660.h](/limine/common/fs/iso9660.h) | C++ | 7 | 0 | 4 | 11 |
| [limine/common/fs/iso9660.s2.c](/limine/common/fs/iso9660.s2.c) | C | 407 | 38 | 94 | 539 |
| [limine/common/gensyms.sh](/limine/common/gensyms.sh) | Shell Script | 33 | 2 | 17 | 52 |
| [limine/common/lib/acpi.c](/limine/common/lib/acpi.c) | C | 344 | 27 | 102 | 473 |
| [limine/common/lib/acpi.h](/limine/common/lib/acpi.h) | C++ | 163 | 24 | 30 | 217 |
| [limine/common/lib/bli.c](/limine/common/lib/bli.c) | C | 67 | 4 | 20 | 91 |
| [limine/common/lib/bli.h](/limine/common/lib/bli.h) | C++ | 7 | 0 | 5 | 12 |
| [limine/common/lib/config.c](/limine/common/lib/config.c) | C | 628 | 11 | 126 | 765 |
| [limine/common/lib/config.h](/limine/common/lib/config.h) | C++ | 28 | 0 | 9 | 37 |
| [limine/common/lib/elf.c](/limine/common/lib/elf.c) | C | 964 | 27 | 212 | 1,203 |
| [limine/common/lib/elf.h](/limine/common/lib/elf.h) | C++ | 74 | 0 | 14 | 88 |
| [limine/common/lib/elsewhere.c](/limine/common/lib/elsewhere.c) | C | 81 | 7 | 17 | 105 |
| [limine/common/lib/elsewhere.h](/limine/common/lib/elsewhere.h) | C++ | 16 | 0 | 5 | 21 |
| [limine/common/lib/fb.c](/limine/common/lib/fb.c) | C | 153 | 4 | 17 | 174 |
| [limine/common/lib/fb.h](/limine/common/lib/fb.h) | C++ | 36 | 0 | 12 | 48 |
| [limine/common/lib/fdt.c](/limine/common/lib/fdt.c) | C | 33 | 0 | 12 | 45 |
| [limine/common/lib/fdt.h](/limine/common/lib/fdt.h) | C++ | 10 | 0 | 6 | 16 |
| [limine/common/lib/getchar.c](/limine/common/lib/getchar.c) | C | 306 | 1 | 59 | 366 |
| [limine/common/lib/getchar.h](/limine/common/lib/getchar.h) | C++ | 23 | 0 | 6 | 29 |
| [limine/common/lib/gterm.c](/limine/common/lib/gterm.c) | C | 813 | 9 | 118 | 940 |
| [limine/common/lib/gterm.h](/limine/common/lib/gterm.h) | C++ | 29 | 0 | 6 | 35 |
| [limine/common/lib/guid.c](/limine/common/lib/guid.c) | C | 82 | 0 | 14 | 96 |
| [limine/common/lib/guid.h](/limine/common/lib/guid.h) | C++ | 15 | 1 | 5 | 21 |
| [limine/common/lib/image.c](/limine/common/lib/image.c) | C | 52 | 2 | 18 | 72 |
| [limine/common/lib/image.h](/limine/common/lib/image.h) | C++ | 27 | 0 | 6 | 33 |
| [limine/common/lib/libc.c](/limine/common/lib/libc.c) | C | 114 | 3 | 15 | 132 |
| [limine/common/lib/libc.h](/limine/common/lib/libc.h) | C++ | 29 | 0 | 8 | 37 |
| [limine/common/lib/libc.s2.c](/limine/common/lib/libc.s2.c) | C | 122 | 2 | 26 | 150 |
| [limine/common/lib/macros.aarch64\_asm.h](/limine/common/lib/macros.aarch64_asm.h) | C++ | 44 | 4 | 5 | 53 |
| [limine/common/lib/memory.s2.c](/limine/common/lib/memory.s2.c) | C | 41 | 0 | 13 | 54 |
| [limine/common/lib/misc.c](/limine/common/lib/misc.c) | C | 322 | 8 | 90 | 420 |
| [limine/common/lib/misc.h](/limine/common/lib/misc.h) | C++ | 122 | 0 | 32 | 154 |
| [limine/common/lib/misc.s2.c](/limine/common/lib/misc.s2.c) | C | 117 | 0 | 12 | 129 |
| [limine/common/lib/panic.s2.c](/limine/common/lib/panic.s2.c) | C | 70 | 8 | 12 | 90 |
| [limine/common/lib/part.h](/limine/common/lib/part.h) | C++ | 86 | 2 | 23 | 111 |
| [limine/common/lib/part.s2.c](/limine/common/lib/part.s2.c) | C | 464 | 31 | 121 | 616 |
| [limine/common/lib/pe.c](/limine/common/lib/pe.c) | C | 398 | 5 | 98 | 501 |
| [limine/common/lib/pe.h](/limine/common/lib/pe.h) | C++ | 8 | 0 | 5 | 13 |
| [limine/common/lib/print.h](/limine/common/lib/print.h) | C++ | 11 | 0 | 6 | 17 |
| [limine/common/lib/print.s2.c](/limine/common/lib/print.s2.c) | C | 200 | 0 | 36 | 236 |
| [limine/common/lib/rand.c](/limine/common/lib/rand.c) | C | 112 | 5 | 25 | 142 |
| [limine/common/lib/rand.h](/limine/common/lib/rand.h) | C++ | 7 | 0 | 5 | 12 |
| [limine/common/lib/real.h](/limine/common/lib/real.h) | C++ | 26 | 0 | 9 | 35 |
| [limine/common/lib/stb\_image.c](/limine/common/lib/stb_image.c) | C | 4 | 0 | 3 | 7 |
| [limine/common/lib/term.c](/limine/common/lib/term.c) | C | 266 | 5 | 49 | 320 |
| [limine/common/lib/term.h](/limine/common/lib/term.h) | C++ | 47 | 0 | 13 | 60 |
| [limine/common/lib/time.c](/limine/common/lib/time.c) | C | 59 | 2 | 15 | 76 |
| [limine/common/lib/time.h](/limine/common/lib/time.h) | C++ | 5 | 0 | 4 | 9 |
| [limine/common/lib/trace.h](/limine/common/lib/trace.h) | C++ | 5 | 0 | 4 | 9 |
| [limine/common/lib/trace.s2.c](/limine/common/lib/trace.s2.c) | C | 79 | 0 | 9 | 88 |
| [limine/common/lib/uri.c](/limine/common/lib/uri.c) | C | 224 | 9 | 54 | 287 |
| [limine/common/lib/uri.h](/limine/common/lib/uri.h) | C++ | 7 | 0 | 4 | 11 |
| [limine/common/libc-compat/stdlib.h](/limine/common/libc-compat/stdlib.h) | C++ | 4 | 0 | 3 | 7 |
| [limine/common/libc-compat/string.h](/limine/common/libc-compat/string.h) | C++ | 19 | 0 | 5 | 24 |
| [limine/common/menu.c](/limine/common/menu.c) | C | 1,378 | 30 | 150 | 1,558 |
| [limine/common/menu.h](/limine/common/menu.h) | C++ | 13 | 0 | 8 | 21 |
| [limine/common/mm/mtrr.c](/limine/common/mm/mtrr.c) | C | 91 | 18 | 32 | 141 |
| [limine/common/mm/mtrr.h](/limine/common/mm/mtrr.h) | C++ | 7 | 0 | 5 | 12 |
| [limine/common/mm/pmm.c](/limine/common/mm/pmm.c) | C | 70 | 3 | 16 | 89 |
| [limine/common/mm/pmm.h](/limine/common/mm/pmm.h) | C++ | 63 | 0 | 18 | 81 |
| [limine/common/mm/pmm.s2.c](/limine/common/mm/pmm.s2.c) | C | 662 | 37 | 192 | 891 |
| [limine/common/mm/vmm.c](/limine/common/mm/vmm.c) | C | 416 | 30 | 110 | 556 |
| [limine/common/mm/vmm.h](/limine/common/mm/vmm.h) | C++ | 125 | 6 | 45 | 176 |
| [limine/common/protos/chainload.c](/limine/common/protos/chainload.c) | C | 283 | 7 | 78 | 368 |
| [limine/common/protos/chainload.h](/limine/common/protos/chainload.h) | C++ | 5 | 0 | 4 | 9 |
| [limine/common/protos/efi\_boot\_entry.c](/limine/common/protos/efi_boot_entry.c) | C | 94 | 6 | 26 | 126 |
| [limine/common/protos/efi\_boot\_entry.h](/limine/common/protos/efi_boot_entry.h) | C++ | 5 | 0 | 4 | 9 |
| [limine/common/protos/limine.c](/limine/common/protos/limine.c) | C | 1,523 | 80 | 331 | 1,934 |
| [limine/common/protos/limine.h](/limine/common/protos/limine.h) | C++ | 5 | 0 | 4 | 9 |
| [limine/common/protos/linux.h](/limine/common/protos/linux.h) | C++ | 59 | 1 | 14 | 74 |
| [limine/common/protos/linux\_risc.c](/limine/common/protos/linux_risc.c) | C | 412 | 22 | 99 | 533 |
| [limine/common/protos/linux\_x86.c](/limine/common/protos/linux_x86.c) | C | 527 | 41 | 96 | 664 |
| [limine/common/protos/multiboot.h](/limine/common/protos/multiboot.h) | C++ | 13 | 0 | 5 | 18 |
| [limine/common/protos/multiboot1.c](/limine/common/protos/multiboot1.c) | C | 394 | 14 | 105 | 513 |
| [limine/common/protos/multiboot1.h](/limine/common/protos/multiboot1.h) | C++ | 76 | 0 | 25 | 101 |
| [limine/common/protos/multiboot2.c](/limine/common/protos/multiboot2.c) | C | 782 | 77 | 182 | 1,041 |
| [limine/common/protos/multiboot2.h](/limine/common/protos/multiboot2.h) | C++ | 331 | 30 | 58 | 419 |
| [limine/common/pxe/pxe.h](/limine/common/pxe/pxe.h) | C++ | 96 | 0 | 16 | 112 |
| [limine/common/pxe/pxe.s2.c](/limine/common/pxe/pxe.s2.c) | C | 53 | 2 | 18 | 73 |
| [limine/common/pxe/tftp.h](/limine/common/pxe/tftp.h) | C++ | 36 | 0 | 11 | 47 |
| [limine/common/pxe/tftp.s2.c](/limine/common/pxe/tftp.s2.c) | C | 211 | 5 | 52 | 268 |
| [limine/common/stb\_image.patch](/limine/common/stb_image.patch) | Diff | 74 | 7 | 10 | 91 |
| [limine/common/sys/a20.h](/limine/common/sys/a20.h) | C++ | 6 | 0 | 4 | 10 |
| [limine/common/sys/a20.s2.c](/limine/common/sys/a20.s2.c) | C | 67 | 5 | 21 | 93 |
| [limine/common/sys/cpu.h](/limine/common/sys/cpu.h) | C++ | 429 | 2 | 82 | 513 |
| [limine/common/sys/cpu.s2.c](/limine/common/sys/cpu.s2.c) | C | 58 | 6 | 14 | 78 |
| [limine/common/sys/cpu\_riscv.c](/limine/common/sys/cpu_riscv.c) | C | 353 | 10 | 65 | 428 |
| [limine/common/sys/e820.h](/limine/common/sys/e820.h) | C++ | 9 | 0 | 5 | 14 |
| [limine/common/sys/e820.s2.c](/limine/common/sys/e820.s2.c) | C | 33 | 0 | 12 | 45 |
| [limine/common/sys/exceptions.s2.c](/limine/common/sys/exceptions.s2.c) | C | 46 | 0 | 5 | 51 |
| [limine/common/sys/gdt.h](/limine/common/sys/gdt.h) | C++ | 23 | 0 | 7 | 30 |
| [limine/common/sys/gdt.s2.c](/limine/common/sys/gdt.s2.c) | C | 83 | 0 | 13 | 96 |
| [limine/common/sys/idt.c](/limine/common/sys/idt.c) | C | 53 | 3 | 16 | 72 |
| [limine/common/sys/idt.h](/limine/common/sys/idt.h) | C++ | 43 | 0 | 17 | 60 |
| [limine/common/sys/idt.s2.c](/limine/common/sys/idt.s2.c) | C | 26 | 0 | 10 | 36 |
| [limine/common/sys/iommu.c](/limine/common/sys/iommu.c) | C | 94 | 21 | 30 | 145 |
| [limine/common/sys/iommu.h](/limine/common/sys/iommu.h) | C++ | 4 | 0 | 3 | 7 |
| [limine/common/sys/lapic.c](/limine/common/sys/lapic.c) | C | 420 | 23 | 69 | 512 |
| [limine/common/sys/lapic.h](/limine/common/sys/lapic.h) | C++ | 30 | 0 | 9 | 39 |
| [limine/common/sys/pic.c](/limine/common/sys/pic.c) | C | 37 | 1 | 11 | 49 |
| [limine/common/sys/pic.h](/limine/common/sys/pic.h) | C++ | 8 | 0 | 4 | 12 |
| [limine/common/sys/sbi.h](/limine/common/sys/sbi.h) | C++ | 25 | 0 | 8 | 33 |
| [limine/common/sys/smp.c](/limine/common/sys/smp.c) | C | 917 | 54 | 259 | 1,230 |
| [limine/common/sys/smp.h](/limine/common/sys/smp.h) | C++ | 38 | 0 | 13 | 51 |
| [limine/decompressor/decompressor.mk](/limine/decompressor/decompressor.mk) | Makefile | 70 | 0 | 15 | 85 |
| [limine/decompressor/main.c](/limine/decompressor/main.c) | C | 31 | 2 | 5 | 38 |
| [limine/decompressor/memory.c](/limine/decompressor/memory.c) | C | 41 | 0 | 13 | 54 |
| [limine/decompressor/tinf.patch](/limine/decompressor/tinf.patch) | Diff | 42 | 3 | 10 | 55 |
| [limine/host/hgen.sh](/limine/host/hgen.sh) | Shell Script | 10 | 1 | 6 | 17 |
| [limine/host/host.mk](/limine/host/host.mk) | Makefile | 14 | 0 | 6 | 20 |
| [limine/host/limine.c](/limine/host/limine.c) | C | 1,192 | 32 | 225 | 1,449 |
| [limine/test.mk](/limine/test.mk) | Makefile | 263 | 0 | 16 | 279 |
| [limine/test/e9print.c](/limine/test/e9print.c) | C | 81 | 0 | 18 | 99 |
| [limine/test/e9print.h](/limine/test/e9print.h) | C++ | 7 | 0 | 3 | 10 |
| [limine/test/limine.c](/limine/test/limine.c) | C | 624 | 0 | 82 | 706 |
| [limine/test/limine.conf](/limine/test/limine.conf) | Properties | 40 | 1 | 19 | 60 |
| [limine/test/memory.c](/limine/test/memory.c) | C | 40 | 0 | 13 | 53 |
| [limine/test/multiboot.c](/limine/test/multiboot.c) | C | 57 | 12 | 24 | 93 |
| [limine/test/multiboot2.c](/limine/test/multiboot2.c) | C | 141 | 5 | 36 | 182 |
| [limine/test/test.mk](/limine/test/test.mk) | Makefile | 143 | 0 | 21 | 164 |
| [limine/version.sh](/limine/version.sh) | Shell Script | 19 | 1 | 10 | 30 |
| [ramdisk/dev/random](/ramdisk/dev/random) | C++ | 0 | 0 | 1 | 1 |
| [ramdisk/shell/init.cmd](/ramdisk/shell/init.cmd) | Batch | 4 | 0 | 2 | 6 |
| [scripts/gen-tty-psf.ps1](/scripts/gen-tty-psf.ps1) | PowerShell | 171 | 2 | 42 | 215 |
| [scripts/menuconfig.py](/scripts/menuconfig.py) | Python | 1,608 | 24 | 304 | 1,936 |
| [wine/README.md](/wine/README.md) | Markdown | 53 | 0 | 19 | 72 |
| [wine/cleonos\_wine.py](/wine/cleonos_wine.py) | Python | 3 | 1 | 3 | 7 |
| [wine/cleonos\_wine\_lib/\_\_init\_\_.py](/wine/cleonos_wine_lib/__init__.py) | Python | 4 | 0 | 1 | 5 |
| [wine/cleonos\_wine\_lib/cli.py](/wine/cleonos_wine_lib/cli.py) | Python | 44 | 0 | 10 | 54 |
| [wine/cleonos\_wine\_lib/constants.py](/wine/cleonos_wine_lib/constants.py) | Python | 112 | 4 | 14 | 130 |
| [wine/cleonos\_wine\_lib/input\_pump.py](/wine/cleonos_wine_lib/input_pump.py) | Python | 82 | 0 | 17 | 99 |
| [wine/cleonos\_wine\_lib/platform.py](/wine/cleonos_wine_lib/platform.py) | Python | 55 | 0 | 5 | 60 |
| [wine/cleonos\_wine\_lib/runner.py](/wine/cleonos_wine_lib/runner.py) | Python | 1,459 | 0 | 266 | 1,725 |
| [wine/cleonos\_wine\_lib/state.py](/wine/cleonos_wine_lib/state.py) | Python | 282 | 2 | 71 | 355 |
| [wine/requirements.txt](/wine/requirements.txt) | pip requirements | 1 | 0 | 1 | 2 |
[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)

View File

@@ -0,0 +1,518 @@
# Diff Details
Date : 2026-04-21 02:41:45
Directory d:\\Projects\\C\\cleonos
Total : 503 files, 77719 codes, 13900 comments, 20413 blanks, all 112032 lines
[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details
## Files
| filename | language | code | comment | blank | total |
| :--- | :--- | ---: | ---: | ---: | ---: |
| [.github/workflows/style-check.yml](/.github/workflows/style-check.yml) | YAML | 109 | 0 | 19 | 128 |
| [CMakeLists.txt](/CMakeLists.txt) | CMake | 130 | 0 | 10 | 140 |
| [cleonos/c/apps/ansi\_main.c](/cleonos/c/apps/ansi_main.c) | C | 2 | 0 | -2 | 0 |
| [cleonos/c/apps/ansitest\_main.c](/cleonos/c/apps/ansitest_main.c) | C | 3 | 0 | -2 | 1 |
| [cleonos/c/apps/append\_main.c](/cleonos/c/apps/append_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/bmpview\_main.c](/cleonos/c/apps/bmpview_main.c) | C | 331 | 0 | 81 | 412 |
| [cleonos/c/apps/cat\_main.c](/cleonos/c/apps/cat_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/cd\_main.c](/cleonos/c/apps/cd_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/clear\_main.c](/cleonos/c/apps/clear_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/cmd\_runtime.c](/cleonos/c/apps/cmd_runtime.c) | C | -5 | 0 | 0 | -5 |
| [cleonos/c/apps/cmd\_runtime.h](/cleonos/c/apps/cmd_runtime.h) | C++ | -4 | 0 | 0 | -4 |
| [cleonos/c/apps/cp\_main.c](/cleonos/c/apps/cp_main.c) | C | -2 | 0 | -2 | -4 |
| [cleonos/c/apps/cut\_main.c](/cleonos/c/apps/cut_main.c) | C | -4 | 0 | -1 | -5 |
| [cleonos/c/apps/dmesg\_main.c](/cleonos/c/apps/dmesg_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/doom/doom\_compat.c](/cleonos/c/apps/doom/doom_compat.c) | C | 1,196 | 0 | 277 | 1,473 |
| [cleonos/c/apps/doom/doom\_shim.h](/cleonos/c/apps/doom/doom_shim.h) | C++ | 17 | 1 | 3 | 21 |
| [cleonos/c/apps/doom/doomgeneric\_clks.c](/cleonos/c/apps/doom/doomgeneric_clks.c) | C | 153 | 0 | 48 | 201 |
| [cleonos/c/apps/doom\_main.c](/cleonos/c/apps/doom_main.c) | C | 66 | 0 | 16 | 82 |
| [cleonos/c/apps/exec\_main.c](/cleonos/c/apps/exec_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/exit\_main.c](/cleonos/c/apps/exit_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/fastfetch\_main.c](/cleonos/c/apps/fastfetch_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/fg\_main.c](/cleonos/c/apps/fg_main.c) | C | -1 | 0 | 0 | -1 |
| [cleonos/c/apps/fsstat\_main.c](/cleonos/c/apps/fsstat_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/grep\_main.c](/cleonos/c/apps/grep_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/head\_main.c](/cleonos/c/apps/head_main.c) | C | 0 | 0 | -1 | -1 |
| [cleonos/c/apps/help\_main.c](/cleonos/c/apps/help_main.c) | C | 3 | 0 | -1 | 2 |
| [cleonos/c/apps/kbdstat\_main.c](/cleonos/c/apps/kbdstat_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/kdbg\_main.c](/cleonos/c/apps/kdbg_main.c) | C | -1 | 0 | 0 | -1 |
| [cleonos/c/apps/ls\_main.c](/cleonos/c/apps/ls_main.c) | C | -10 | 0 | -2 | -12 |
| [cleonos/c/apps/memstat\_main.c](/cleonos/c/apps/memstat_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/mkdir\_main.c](/cleonos/c/apps/mkdir_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/mv\_main.c](/cleonos/c/apps/mv_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/pid\_main.c](/cleonos/c/apps/pid_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/pwd\_main.c](/cleonos/c/apps/pwd_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/qrcode/qrcodegen.c](/cleonos/c/apps/qrcode/qrcodegen.c) | C | 759 | 176 | 96 | 1,031 |
| [cleonos/c/apps/qrcode/qrcodegen.h](/cleonos/c/apps/qrcode/qrcodegen.h) | C++ | 62 | 268 | 34 | 364 |
| [cleonos/c/apps/qrcode\_main.c](/cleonos/c/apps/qrcode_main.c) | C | 207 | 1 | 58 | 266 |
| [cleonos/c/apps/restart\_main.c](/cleonos/c/apps/restart_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/rm\_main.c](/cleonos/c/apps/rm_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/shell/shell\_cmd.c](/cleonos/c/apps/shell/shell_cmd.c) | C | -35 | 0 | -4 | -39 |
| [cleonos/c/apps/shell/shell\_external.c](/cleonos/c/apps/shell/shell_external.c) | C | -10 | 0 | 0 | -10 |
| [cleonos/c/apps/shell/shell\_input.c](/cleonos/c/apps/shell/shell_input.c) | C | 0 | 0 | -1 | -1 |
| [cleonos/c/apps/shell/shell\_internal.h](/cleonos/c/apps/shell/shell_internal.h) | C++ | -5 | 0 | -1 | -6 |
| [cleonos/c/apps/shell/shell\_path.c](/cleonos/c/apps/shell/shell_path.c) | C | 1 | 0 | 0 | 1 |
| [cleonos/c/apps/shell\_main.c](/cleonos/c/apps/shell_main.c) | C | -1 | 0 | 0 | -1 |
| [cleonos/c/apps/shstat\_main.c](/cleonos/c/apps/shstat_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/shutdown\_main.c](/cleonos/c/apps/shutdown_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/sleep\_main.c](/cleonos/c/apps/sleep_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/sort\_main.c](/cleonos/c/apps/sort_main.c) | C | 1 | 0 | -1 | 0 |
| [cleonos/c/apps/spawn\_main.c](/cleonos/c/apps/spawn_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/spin\_main.c](/cleonos/c/apps/spin_main.c) | C | -1 | 0 | 0 | -1 |
| [cleonos/c/apps/stats\_main.c](/cleonos/c/apps/stats_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/sysstat\_main.c](/cleonos/c/apps/sysstat_main.c) | C | 74 | 0 | 0 | 74 |
| [cleonos/c/apps/tail\_main.c](/cleonos/c/apps/tail_main.c) | C | 0 | 0 | -1 | -1 |
| [cleonos/c/apps/taskstat\_main.c](/cleonos/c/apps/taskstat_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/top\_main.c](/cleonos/c/apps/top_main.c) | C | -1 | 0 | 0 | -1 |
| [cleonos/c/apps/touch\_main.c](/cleonos/c/apps/touch_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/tty\_main.c](/cleonos/c/apps/tty_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/uniq\_main.c](/cleonos/c/apps/uniq_main.c) | C | 0 | 0 | -1 | -1 |
| [cleonos/c/apps/userstat\_main.c](/cleonos/c/apps/userstat_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/wait\_main.c](/cleonos/c/apps/wait_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/wavplay\_main.c](/cleonos/c/apps/wavplay_main.c) | C | -8 | 0 | 0 | -8 |
| [cleonos/c/apps/wc\_main.c](/cleonos/c/apps/wc_main.c) | C | 0 | 0 | -1 | -1 |
| [cleonos/c/apps/write\_main.c](/cleonos/c/apps/write_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/apps/yield\_main.c](/cleonos/c/apps/yield_main.c) | C | 0 | 0 | -2 | -2 |
| [cleonos/c/include/cleonos\_syscall.h](/cleonos/c/include/cleonos_syscall.h) | C++ | 17 | 0 | 2 | 19 |
| [cleonos/c/src/stdio.c](/cleonos/c/src/stdio.c) | C | 177 | 0 | 35 | 212 |
| [cleonos/c/src/syscall.c](/cleonos/c/src/syscall.c) | C | 0 | 0 | 2 | 2 |
| [cleonos/third-party/doomgeneric/README.md](/cleonos/third-party/doomgeneric/README.md) | Markdown | 51 | 0 | 17 | 68 |
| [cleonos/third-party/doomgeneric/doomgeneric/Makefile](/cleonos/third-party/doomgeneric/doomgeneric/Makefile) | Makefile | 34 | 7 | 14 | 55 |
| [cleonos/third-party/doomgeneric/doomgeneric/am\_map.c](/cleonos/third-party/doomgeneric/doomgeneric/am_map.c) | C | 970 | 162 | 224 | 1,356 |
| [cleonos/third-party/doomgeneric/doomgeneric/am\_map.h](/cleonos/third-party/doomgeneric/doomgeneric/am_map.h) | C++ | 13 | 24 | 13 | 50 |
| [cleonos/third-party/doomgeneric/doomgeneric/config.h](/cleonos/third-party/doomgeneric/doomgeneric/config.h) | C++ | 33 | 34 | 34 | 101 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_englsh.h](/cleonos/third-party/doomgeneric/doomgeneric/d_englsh.h) | C++ | 522 | 65 | 107 | 694 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_event.c](/cleonos/third-party/doomgeneric/doomgeneric/d_event.c) | C | 22 | 27 | 15 | 64 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_event.h](/cleonos/third-party/doomgeneric/doomgeneric/d_event.h) | C++ | 43 | 66 | 29 | 138 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_items.c](/cleonos/third-party/doomgeneric/doomgeneric/d_items.c) | C | 77 | 38 | 14 | 129 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_items.h](/cleonos/third-party/doomgeneric/doomgeneric/d_items.h) | C++ | 14 | 18 | 10 | 42 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_iwad.c](/cleonos/third-party/doomgeneric/doomgeneric/d_iwad.c) | C | 509 | 133 | 207 | 849 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_iwad.h](/cleonos/third-party/doomgeneric/doomgeneric/d_iwad.h) | C++ | 28 | 16 | 9 | 53 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_loop.c](/cleonos/third-party/doomgeneric/doomgeneric/d_loop.c) | C | 464 | 169 | 194 | 827 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_loop.h](/cleonos/third-party/doomgeneric/doomgeneric/d_loop.h) | C++ | 23 | 34 | 25 | 82 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_main.c](/cleonos/third-party/doomgeneric/doomgeneric/d_main.c) | C | 1,089 | 418 | 339 | 1,846 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_main.h](/cleonos/third-party/doomgeneric/doomgeneric/d_main.h) | C++ | 11 | 24 | 16 | 51 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_mode.c](/cleonos/third-party/doomgeneric/doomgeneric/d_mode.c) | C | 150 | 28 | 32 | 210 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_mode.h](/cleonos/third-party/doomgeneric/doomgeneric/d_mode.h) | C++ | 58 | 24 | 17 | 99 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_net.c](/cleonos/third-party/doomgeneric/doomgeneric/d_net.c) | C | 158 | 61 | 63 | 282 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_player.h](/cleonos/third-party/doomgeneric/doomgeneric/d_player.h) | C++ | 82 | 77 | 51 | 210 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_textur.h](/cleonos/third-party/doomgeneric/doomgeneric/d_textur.h) | C++ | 10 | 22 | 12 | 44 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_think.h](/cleonos/third-party/doomgeneric/doomgeneric/d_think.h) | C++ | 19 | 29 | 21 | 69 |
| [cleonos/third-party/doomgeneric/doomgeneric/d\_ticcmd.h](/cleonos/third-party/doomgeneric/doomgeneric/d_ticcmd.h) | C++ | 17 | 26 | 14 | 57 |
| [cleonos/third-party/doomgeneric/doomgeneric/deh\_main.h](/cleonos/third-party/doomgeneric/doomgeneric/deh_main.h) | C++ | 19 | 19 | 11 | 49 |
| [cleonos/third-party/doomgeneric/doomgeneric/deh\_misc.h](/cleonos/third-party/doomgeneric/doomgeneric/deh_misc.h) | C++ | 55 | 17 | 12 | 84 |
| [cleonos/third-party/doomgeneric/doomgeneric/deh\_str.h](/cleonos/third-party/doomgeneric/doomgeneric/deh_str.h) | C++ | 18 | 17 | 13 | 48 |
| [cleonos/third-party/doomgeneric/doomgeneric/doom.h](/cleonos/third-party/doomgeneric/doomgeneric/doom.h) | C++ | 4 | 27 | 12 | 43 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomdata.h](/cleonos/third-party/doomgeneric/doomgeneric/doomdata.h) | C++ | 93 | 70 | 51 | 214 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomdef.c](/cleonos/third-party/doomgeneric/doomgeneric/doomdef.c) | C | 1 | 20 | 8 | 29 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomdef.h](/cleonos/third-party/doomgeneric/doomgeneric/doomdef.h) | C++ | 86 | 48 | 35 | 169 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomfeatures.h](/cleonos/third-party/doomgeneric/doomgeneric/doomfeatures.h) | C++ | 6 | 22 | 13 | 41 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomgeneric.c](/cleonos/third-party/doomgeneric/doomgeneric/doomgeneric.c) | C | 15 | 1 | 12 | 28 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomgeneric.h](/cleonos/third-party/doomgeneric/doomgeneric/doomgeneric.h) | C++ | 31 | 1 | 18 | 50 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomgeneric.vcxproj](/cleonos/third-party/doomgeneric/doomgeneric/doomgeneric.vcxproj) | XML | 339 | 0 | 0 | 339 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomgeneric\_allegro.c](/cleonos/third-party/doomgeneric/doomgeneric/doomgeneric_allegro.c) | C | 319 | 16 | 119 | 454 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomgeneric\_emscripten.c](/cleonos/third-party/doomgeneric/doomgeneric/doomgeneric_emscripten.c) | C | 184 | 5 | 31 | 220 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomgeneric\_linuxvt.c](/cleonos/third-party/doomgeneric/doomgeneric/doomgeneric_linuxvt.c) | C | 412 | 39 | 78 | 529 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomgeneric\_sdl.c](/cleonos/third-party/doomgeneric/doomgeneric/doomgeneric_sdl.c) | C | 173 | 9 | 29 | 211 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomgeneric\_soso.c](/cleonos/third-party/doomgeneric/doomgeneric/doomgeneric_soso.c) | C | 217 | 6 | 54 | 277 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomgeneric\_sosox.c](/cleonos/third-party/doomgeneric/doomgeneric/doomgeneric_sosox.c) | C | 197 | 3 | 48 | 248 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomgeneric\_win.c](/cleonos/third-party/doomgeneric/doomgeneric/doomgeneric_win.c) | C | 171 | 2 | 37 | 210 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomgeneric\_xlib.c](/cleonos/third-party/doomgeneric/doomgeneric/doomgeneric_xlib.c) | C | 161 | 7 | 46 | 214 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomkeys.h](/cleonos/third-party/doomgeneric/doomgeneric/doomkeys.h) | C++ | 61 | 23 | 14 | 98 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomstat.c](/cleonos/third-party/doomgeneric/doomgeneric/doomstat.c) | C | 7 | 19 | 10 | 36 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomstat.h](/cleonos/third-party/doomgeneric/doomgeneric/doomstat.h) | C++ | 77 | 108 | 97 | 282 |
| [cleonos/third-party/doomgeneric/doomgeneric/doomtype.h](/cleonos/third-party/doomgeneric/doomgeneric/doomtype.h) | C++ | 40 | 35 | 30 | 105 |
| [cleonos/third-party/doomgeneric/doomgeneric/dstrings.c](/cleonos/third-party/doomgeneric/doomgeneric/dstrings.c) | C | 37 | 22 | 15 | 74 |
| [cleonos/third-party/doomgeneric/doomgeneric/dstrings.h](/cleonos/third-party/doomgeneric/doomgeneric/dstrings.h) | C++ | 8 | 22 | 12 | 42 |
| [cleonos/third-party/doomgeneric/doomgeneric/dummy.c](/cleonos/third-party/doomgeneric/doomgeneric/dummy.c) | C | 8 | 30 | 16 | 54 |
| [cleonos/third-party/doomgeneric/doomgeneric/f\_finale.c](/cleonos/third-party/doomgeneric/doomgeneric/f_finale.c) | C | 528 | 77 | 114 | 719 |
| [cleonos/third-party/doomgeneric/doomgeneric/f\_finale.h](/cleonos/third-party/doomgeneric/doomgeneric/f_finale.h) | C++ | 9 | 23 | 14 | 46 |
| [cleonos/third-party/doomgeneric/doomgeneric/f\_wipe.c](/cleonos/third-party/doomgeneric/doomgeneric/f_wipe.c) | C | 220 | 31 | 44 | 295 |
| [cleonos/third-party/doomgeneric/doomgeneric/f\_wipe.h](/cleonos/third-party/doomgeneric/doomgeneric/f_wipe.h) | C++ | 29 | 22 | 13 | 64 |
| [cleonos/third-party/doomgeneric/doomgeneric/g\_game.c](/cleonos/third-party/doomgeneric/doomgeneric/g_game.c) | C | 1,572 | 319 | 413 | 2,304 |
| [cleonos/third-party/doomgeneric/doomgeneric/g\_game.h](/cleonos/third-party/doomgeneric/doomgeneric/g_game.h) | C++ | 29 | 28 | 24 | 81 |
| [cleonos/third-party/doomgeneric/doomgeneric/gusconf.c](/cleonos/third-party/doomgeneric/doomgeneric/gusconf.c) | C | 190 | 24 | 58 | 272 |
| [cleonos/third-party/doomgeneric/doomgeneric/gusconf.h](/cleonos/third-party/doomgeneric/doomgeneric/gusconf.h) | C++ | 7 | 16 | 7 | 30 |
| [cleonos/third-party/doomgeneric/doomgeneric/hu\_lib.c](/cleonos/third-party/doomgeneric/doomgeneric/hu_lib.c) | C | 252 | 32 | 64 | 348 |
| [cleonos/third-party/doomgeneric/doomgeneric/hu\_lib.h](/cleonos/third-party/doomgeneric/doomgeneric/hu_lib.h) | C++ | 77 | 59 | 47 | 183 |
| [cleonos/third-party/doomgeneric/doomgeneric/hu\_stuff.c](/cleonos/third-party/doomgeneric/doomgeneric/hu_stuff.c) | C | 493 | 51 | 98 | 642 |
| [cleonos/third-party/doomgeneric/doomgeneric/hu\_stuff.h](/cleonos/third-party/doomgeneric/doomgeneric/hu_stuff.h) | C++ | 21 | 23 | 16 | 60 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_allegromusic.c](/cleonos/third-party/doomgeneric/doomgeneric/i_allegromusic.c) | C | 192 | 38 | 79 | 309 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_allegrosound.c](/cleonos/third-party/doomgeneric/doomgeneric/i_allegrosound.c) | C | 255 | 73 | 106 | 434 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_cdmus.c](/cleonos/third-party/doomgeneric/doomgeneric/i_cdmus.c) | C | 159 | 31 | 54 | 244 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_cdmus.h](/cleonos/third-party/doomgeneric/doomgeneric/i_cdmus.h) | C++ | 20 | 15 | 7 | 42 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_endoom.c](/cleonos/third-party/doomgeneric/doomgeneric/i_endoom.c) | C | 48 | 26 | 28 | 102 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_endoom.h](/cleonos/third-party/doomgeneric/doomgeneric/i_endoom.h) | C++ | 4 | 19 | 7 | 30 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_input.c](/cleonos/third-party/doomgeneric/doomgeneric/i_input.c) | C | 261 | 45 | 36 | 342 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_joystick.c](/cleonos/third-party/doomgeneric/doomgeneric/i_joystick.c) | C | 254 | 38 | 68 | 360 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_joystick.h](/cleonos/third-party/doomgeneric/doomgeneric/i_joystick.h) | C++ | 21 | 33 | 17 | 71 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_scale.c](/cleonos/third-party/doomgeneric/doomgeneric/i_scale.c) | C | 889 | 225 | 339 | 1,453 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_scale.h](/cleonos/third-party/doomgeneric/doomgeneric/i_scale.h) | C++ | 21 | 20 | 13 | 54 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_sdlmusic.c](/cleonos/third-party/doomgeneric/doomgeneric/i_sdlmusic.c) | C | 887 | 177 | 253 | 1,317 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_sdlsound.c](/cleonos/third-party/doomgeneric/doomgeneric/i_sdlsound.c) | C | 616 | 195 | 266 | 1,077 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_sound.c](/cleonos/third-party/doomgeneric/doomgeneric/i_sound.c) | C | 284 | 62 | 75 | 421 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_sound.h](/cleonos/third-party/doomgeneric/doomgeneric/i_sound.h) | C++ | 104 | 71 | 82 | 257 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_swap.h](/cleonos/third-party/doomgeneric/doomgeneric/i_swap.h) | C++ | 34 | 18 | 22 | 74 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_system.c](/cleonos/third-party/doomgeneric/doomgeneric/i_system.c) | C | 347 | 112 | 120 | 579 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_system.h](/cleonos/third-party/doomgeneric/doomgeneric/i_system.h) | C++ | 19 | 37 | 29 | 85 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_timer.c](/cleonos/third-party/doomgeneric/doomgeneric/i_timer.c) | C | 36 | 32 | 29 | 97 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_timer.h](/cleonos/third-party/doomgeneric/doomgeneric/i_timer.h) | C++ | 9 | 23 | 11 | 43 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_video.c](/cleonos/third-party/doomgeneric/doomgeneric/i_video.c) | C | 309 | 74 | 113 | 496 |
| [cleonos/third-party/doomgeneric/doomgeneric/i\_video.h](/cleonos/third-party/doomgeneric/doomgeneric/i_video.h) | C++ | 63 | 65 | 48 | 176 |
| [cleonos/third-party/doomgeneric/doomgeneric/icon.c](/cleonos/third-party/doomgeneric/doomgeneric/icon.c) | C | 260 | 0 | 3 | 263 |
| [cleonos/third-party/doomgeneric/doomgeneric/info.c](/cleonos/third-party/doomgeneric/doomgeneric/info.c) | C | 4,492 | 21 | 150 | 4,663 |
| [cleonos/third-party/doomgeneric/doomgeneric/info.h](/cleonos/third-party/doomgeneric/doomgeneric/info.h) | C++ | 1,296 | 21 | 15 | 1,332 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_argv.c](/cleonos/third-party/doomgeneric/doomgeneric/m_argv.c) | C | 150 | 52 | 64 | 266 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_argv.h](/cleonos/third-party/doomgeneric/doomgeneric/m_argv.h) | C++ | 11 | 26 | 13 | 50 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_bbox.c](/cleonos/third-party/doomgeneric/doomgeneric/m_bbox.c) | C | 21 | 20 | 14 | 55 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_bbox.h](/cleonos/third-party/doomgeneric/doomgeneric/m_bbox.h) | C++ | 18 | 19 | 11 | 48 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_cheat.c](/cleonos/third-party/doomgeneric/doomgeneric/m_cheat.c) | C | 38 | 32 | 20 | 90 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_cheat.h](/cleonos/third-party/doomgeneric/doomgeneric/m_cheat.h) | C++ | 24 | 23 | 16 | 63 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_config.c](/cleonos/third-party/doomgeneric/doomgeneric/m_config.c) | C | 615 | 948 | 566 | 2,129 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_config.h](/cleonos/third-party/doomgeneric/doomgeneric/m_config.h) | C++ | 16 | 17 | 7 | 40 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_controls.c](/cleonos/third-party/doomgeneric/doomgeneric/m_controls.c) | C | 269 | 57 | 73 | 399 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_controls.h](/cleonos/third-party/doomgeneric/doomgeneric/m_controls.h) | C++ | 121 | 17 | 31 | 169 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_fixed.c](/cleonos/third-party/doomgeneric/doomgeneric/m_fixed.c) | C | 24 | 21 | 18 | 63 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_fixed.h](/cleonos/third-party/doomgeneric/doomgeneric/m_fixed.h) | C++ | 8 | 20 | 12 | 40 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_menu.c](/cleonos/third-party/doomgeneric/doomgeneric/m_menu.c) | C | 1,502 | 250 | 374 | 2,126 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_menu.h](/cleonos/third-party/doomgeneric/doomgeneric/m_menu.h) | C++ | 11 | 33 | 18 | 62 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_misc.c](/cleonos/third-party/doomgeneric/doomgeneric/m_misc.c) | C | 335 | 87 | 115 | 537 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_misc.h](/cleonos/third-party/doomgeneric/doomgeneric/m_misc.h) | C++ | 27 | 17 | 8 | 52 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_random.c](/cleonos/third-party/doomgeneric/doomgeneric/m_random.c) | C | 37 | 22 | 7 | 66 |
| [cleonos/third-party/doomgeneric/doomgeneric/m\_random.h](/cleonos/third-party/doomgeneric/doomgeneric/m_random.h) | C++ | 7 | 21 | 12 | 40 |
| [cleonos/third-party/doomgeneric/doomgeneric/memio.c](/cleonos/third-party/doomgeneric/doomgeneric/memio.c) | C | 122 | 27 | 49 | 198 |
| [cleonos/third-party/doomgeneric/doomgeneric/memio.h](/cleonos/third-party/doomgeneric/doomgeneric/memio.h) | C++ | 18 | 14 | 7 | 39 |
| [cleonos/third-party/doomgeneric/doomgeneric/mus2mid.c](/cleonos/third-party/doomgeneric/doomgeneric/mus2mid.c) | C | 504 | 76 | 158 | 738 |
| [cleonos/third-party/doomgeneric/doomgeneric/mus2mid.h](/cleonos/third-party/doomgeneric/doomgeneric/mus2mid.h) | C++ | 6 | 0 | 3 | 9 |
| [cleonos/third-party/doomgeneric/doomgeneric/net\_client.h](/cleonos/third-party/doomgeneric/doomgeneric/net_client.h) | C++ | 29 | 15 | 9 | 53 |
| [cleonos/third-party/doomgeneric/doomgeneric/net\_dedicated.h](/cleonos/third-party/doomgeneric/doomgeneric/net_dedicated.h) | C++ | 4 | 16 | 6 | 26 |
| [cleonos/third-party/doomgeneric/doomgeneric/net\_defs.h](/cleonos/third-party/doomgeneric/doomgeneric/net_defs.h) | C++ | 148 | 46 | 55 | 249 |
| [cleonos/third-party/doomgeneric/doomgeneric/net\_gui.h](/cleonos/third-party/doomgeneric/doomgeneric/net_gui.h) | C++ | 5 | 18 | 7 | 30 |
| [cleonos/third-party/doomgeneric/doomgeneric/net\_io.h](/cleonos/third-party/doomgeneric/doomgeneric/net_io.h) | C++ | 14 | 16 | 7 | 37 |
| [cleonos/third-party/doomgeneric/doomgeneric/net\_loop.h](/cleonos/third-party/doomgeneric/doomgeneric/net_loop.h) | C++ | 6 | 16 | 6 | 28 |
| [cleonos/third-party/doomgeneric/doomgeneric/net\_packet.h](/cleonos/third-party/doomgeneric/doomgeneric/net_packet.h) | C++ | 18 | 16 | 11 | 45 |
| [cleonos/third-party/doomgeneric/doomgeneric/net\_query.h](/cleonos/third-party/doomgeneric/doomgeneric/net_query.h) | C++ | 19 | 16 | 10 | 45 |
| [cleonos/third-party/doomgeneric/doomgeneric/net\_sdl.h](/cleonos/third-party/doomgeneric/doomgeneric/net_sdl.h) | C++ | 5 | 16 | 6 | 27 |
| [cleonos/third-party/doomgeneric/doomgeneric/net\_server.h](/cleonos/third-party/doomgeneric/doomgeneric/net_server.h) | C++ | 8 | 21 | 14 | 43 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_ceilng.c](/cleonos/third-party/doomgeneric/doomgeneric/p_ceilng.c) | C | 226 | 47 | 52 | 325 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_doors.c](/cleonos/third-party/doomgeneric/doomgeneric/p_doors.c) | C | 571 | 83 | 125 | 779 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_enemy.c](/cleonos/third-party/doomgeneric/doomgeneric/p_enemy.c) | C | 1,341 | 238 | 428 | 2,007 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_floor.c](/cleonos/third-party/doomgeneric/doomgeneric/p_floor.c) | C | 429 | 54 | 64 | 547 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_inter.c](/cleonos/third-party/doomgeneric/doomgeneric/p_inter.c) | C | 643 | 115 | 165 | 923 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_inter.h](/cleonos/third-party/doomgeneric/doomgeneric/p_inter.h) | C++ | 4 | 17 | 10 | 31 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_lights.c](/cleonos/third-party/doomgeneric/doomgeneric/p_lights.c) | C | 201 | 72 | 78 | 351 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_local.h](/cleonos/third-party/doomgeneric/doomgeneric/p_local.h) | C++ | 155 | 66 | 77 | 298 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_map.c](/cleonos/third-party/doomgeneric/doomgeneric/p_map.c) | C | 828 | 304 | 317 | 1,449 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_maputl.c](/cleonos/third-party/doomgeneric/doomgeneric/p_maputl.c) | C | 651 | 161 | 190 | 1,002 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_mobj.c](/cleonos/third-party/doomgeneric/doomgeneric/p_mobj.c) | C | 654 | 184 | 212 | 1,050 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_mobj.h](/cleonos/third-party/doomgeneric/doomgeneric/p_mobj.h) | C++ | 77 | 161 | 47 | 285 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_plats.c](/cleonos/third-party/doomgeneric/doomgeneric/p_plats.c) | C | 218 | 29 | 58 | 305 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_pspr.c](/cleonos/third-party/doomgeneric/doomgeneric/p_pspr.c) | C | 537 | 173 | 179 | 889 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_pspr.h](/cleonos/third-party/doomgeneric/doomgeneric/p_pspr.h) | C++ | 21 | 35 | 16 | 72 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_saveg.c](/cleonos/third-party/doomgeneric/doomgeneric/p_saveg.c) | C | 975 | 435 | 482 | 1,892 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_saveg.h](/cleonos/third-party/doomgeneric/doomgeneric/p_saveg.h) | C++ | 21 | 24 | 18 | 63 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_setup.c](/cleonos/third-party/doomgeneric/doomgeneric/p_setup.c) | C | 547 | 134 | 175 | 856 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_setup.h](/cleonos/third-party/doomgeneric/doomgeneric/p_setup.h) | C++ | 10 | 19 | 9 | 38 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_sight.c](/cleonos/third-party/doomgeneric/doomgeneric/p_sight.c) | C | 204 | 75 | 72 | 351 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_spec.c](/cleonos/third-party/doomgeneric/doomgeneric/p_spec.c) | C | 908 | 307 | 275 | 1,490 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_spec.h](/cleonos/third-party/doomgeneric/doomgeneric/p_spec.h) | C++ | 380 | 75 | 183 | 638 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_switch.c](/cleonos/third-party/doomgeneric/doomgeneric/p_switch.c) | C | 425 | 111 | 113 | 649 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_telept.c](/cleonos/third-party/doomgeneric/doomgeneric/p_telept.c) | C | 69 | 35 | 30 | 134 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_tick.c](/cleonos/third-party/doomgeneric/doomgeneric/p_tick.c) | C | 63 | 53 | 36 | 152 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_tick.h](/cleonos/third-party/doomgeneric/doomgeneric/p_tick.h) | C++ | 4 | 20 | 10 | 34 |
| [cleonos/third-party/doomgeneric/doomgeneric/p\_user.c](/cleonos/third-party/doomgeneric/doomgeneric/p_user.c) | C | 219 | 73 | 88 | 380 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_bsp.c](/cleonos/third-party/doomgeneric/doomgeneric/r_bsp.c) | C | 329 | 122 | 123 | 574 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_bsp.h](/cleonos/third-party/doomgeneric/doomgeneric/r_bsp.h) | C++ | 23 | 19 | 20 | 62 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_data.c](/cleonos/third-party/doomgeneric/doomgeneric/r_data.c) | C | 543 | 167 | 203 | 913 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_data.h](/cleonos/third-party/doomgeneric/doomgeneric/r_data.h) | C++ | 14 | 25 | 13 | 52 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_defs.h](/cleonos/third-party/doomgeneric/doomgeneric/r_defs.h) | C++ | 164 | 155 | 130 | 449 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_draw.c](/cleonos/third-party/doomgeneric/doomgeneric/r_draw.c) | C | 554 | 216 | 206 | 976 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_draw.h](/cleonos/third-party/doomgeneric/doomgeneric/r_draw.h) | C++ | 40 | 33 | 32 | 105 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_local.h](/cleonos/third-party/doomgeneric/doomgeneric/r_local.h) | C++ | 13 | 24 | 9 | 46 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_main.c](/cleonos/third-party/doomgeneric/doomgeneric/r_main.c) | C | 556 | 155 | 181 | 892 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_main.h](/cleonos/third-party/doomgeneric/doomgeneric/r_main.h) | C++ | 72 | 45 | 44 | 161 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_plane.c](/cleonos/third-party/doomgeneric/doomgeneric/r_plane.c) | C | 278 | 84 | 85 | 447 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_plane.h](/cleonos/third-party/doomgeneric/doomgeneric/r_plane.h) | C++ | 37 | 18 | 22 | 77 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_segs.c](/cleonos/third-party/doomgeneric/doomgeneric/r_segs.c) | C | 507 | 103 | 134 | 744 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_segs.h](/cleonos/third-party/doomgeneric/doomgeneric/r_segs.h) | C++ | 8 | 17 | 9 | 34 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_sky.c](/cleonos/third-party/doomgeneric/doomgeneric/r_sky.c) | C | 10 | 31 | 12 | 53 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_sky.h](/cleonos/third-party/doomgeneric/doomgeneric/r_sky.h) | C++ | 8 | 20 | 10 | 38 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_state.h](/cleonos/third-party/doomgeneric/doomgeneric/r_state.h) | C++ | 49 | 36 | 43 | 128 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_things.c](/cleonos/third-party/doomgeneric/doomgeneric/r_things.c) | C | 605 | 171 | 207 | 983 |
| [cleonos/third-party/doomgeneric/doomgeneric/r\_things.h](/cleonos/third-party/doomgeneric/doomgeneric/r_things.h) | C++ | 28 | 20 | 18 | 66 |
| [cleonos/third-party/doomgeneric/doomgeneric/s\_sound.c](/cleonos/third-party/doomgeneric/doomgeneric/s_sound.c) | C | 431 | 108 | 132 | 671 |
| [cleonos/third-party/doomgeneric/doomgeneric/s\_sound.h](/cleonos/third-party/doomgeneric/doomgeneric/s_sound.h) | C++ | 20 | 42 | 28 | 90 |
| [cleonos/third-party/doomgeneric/doomgeneric/sha1.c](/cleonos/third-party/doomgeneric/doomgeneric/sha1.c) | C | 239 | 49 | 32 | 320 |
| [cleonos/third-party/doomgeneric/doomgeneric/sha1.h](/cleonos/third-party/doomgeneric/doomgeneric/sha1.h) | C++ | 17 | 16 | 8 | 41 |
| [cleonos/third-party/doomgeneric/doomgeneric/sounds.c](/cleonos/third-party/doomgeneric/doomgeneric/sounds.c) | C | 192 | 25 | 13 | 230 |
| [cleonos/third-party/doomgeneric/doomgeneric/sounds.h](/cleonos/third-party/doomgeneric/doomgeneric/sounds.h) | C++ | 191 | 26 | 11 | 228 |
| [cleonos/third-party/doomgeneric/doomgeneric/st\_lib.c](/cleonos/third-party/doomgeneric/doomgeneric/st_lib.c) | C | 186 | 35 | 64 | 285 |
| [cleonos/third-party/doomgeneric/doomgeneric/st\_lib.h](/cleonos/third-party/doomgeneric/doomgeneric/st_lib.h) | C++ | 91 | 60 | 59 | 210 |
| [cleonos/third-party/doomgeneric/doomgeneric/st\_stuff.c](/cleonos/third-party/doomgeneric/doomgeneric/st_stuff.c) | C | 903 | 216 | 298 | 1,417 |
| [cleonos/third-party/doomgeneric/doomgeneric/st\_stuff.h](/cleonos/third-party/doomgeneric/doomgeneric/st_stuff.h) | C++ | 36 | 31 | 23 | 90 |
| [cleonos/third-party/doomgeneric/doomgeneric/statdump.c](/cleonos/third-party/doomgeneric/doomgeneric/statdump.c) | C | 239 | 58 | 96 | 393 |
| [cleonos/third-party/doomgeneric/doomgeneric/statdump.h](/cleonos/third-party/doomgeneric/doomgeneric/statdump.h) | C++ | 5 | 15 | 4 | 24 |
| [cleonos/third-party/doomgeneric/doomgeneric/tables.c](/cleonos/third-party/doomgeneric/doomgeneric/tables.c) | C | 2,173 | 37 | 18 | 2,228 |
| [cleonos/third-party/doomgeneric/doomgeneric/tables.h](/cleonos/third-party/doomgeneric/doomgeneric/tables.h) | C++ | 26 | 44 | 27 | 97 |
| [cleonos/third-party/doomgeneric/doomgeneric/v\_patch.h](/cleonos/third-party/doomgeneric/doomgeneric/v_patch.h) | C++ | 17 | 25 | 9 | 51 |
| [cleonos/third-party/doomgeneric/doomgeneric/v\_video.c](/cleonos/third-party/doomgeneric/doomgeneric/v_video.c) | C | 617 | 139 | 177 | 933 |
| [cleonos/third-party/doomgeneric/doomgeneric/v\_video.h](/cleonos/third-party/doomgeneric/doomgeneric/v_video.h) | C++ | 34 | 40 | 35 | 109 |
| [cleonos/third-party/doomgeneric/doomgeneric/w\_checksum.c](/cleonos/third-party/doomgeneric/doomgeneric/w_checksum.c) | C | 48 | 21 | 19 | 88 |
| [cleonos/third-party/doomgeneric/doomgeneric/w\_checksum.h](/cleonos/third-party/doomgeneric/doomgeneric/w_checksum.h) | C++ | 5 | 17 | 6 | 28 |
| [cleonos/third-party/doomgeneric/doomgeneric/w\_file.c](/cleonos/third-party/doomgeneric/doomgeneric/w_file.c) | C | 44 | 32 | 20 | 96 |
| [cleonos/third-party/doomgeneric/doomgeneric/w\_file.h](/cleonos/third-party/doomgeneric/doomgeneric/w_file.h) | C++ | 23 | 31 | 25 | 79 |
| [cleonos/third-party/doomgeneric/doomgeneric/w\_file\_stdc.c](/cleonos/third-party/doomgeneric/doomgeneric/w_file_stdc.c) | C | 49 | 22 | 26 | 97 |
| [cleonos/third-party/doomgeneric/doomgeneric/w\_main.c](/cleonos/third-party/doomgeneric/doomgeneric/w_main.c) | C | 87 | 66 | 46 | 199 |
| [cleonos/third-party/doomgeneric/doomgeneric/w\_main.h](/cleonos/third-party/doomgeneric/doomgeneric/w_main.h) | C++ | 4 | 16 | 5 | 25 |
| [cleonos/third-party/doomgeneric/doomgeneric/w\_merge.h](/cleonos/third-party/doomgeneric/doomgeneric/w_merge.h) | C++ | 9 | 23 | 13 | 45 |
| [cleonos/third-party/doomgeneric/doomgeneric/w\_wad.c](/cleonos/third-party/doomgeneric/doomgeneric/w_wad.c) | C | 353 | 124 | 136 | 613 |
| [cleonos/third-party/doomgeneric/doomgeneric/w\_wad.h](/cleonos/third-party/doomgeneric/doomgeneric/w_wad.h) | C++ | 31 | 24 | 24 | 79 |
| [cleonos/third-party/doomgeneric/doomgeneric/wi\_stuff.c](/cleonos/third-party/doomgeneric/doomgeneric/wi_stuff.c) | C | 1,215 | 210 | 405 | 1,830 |
| [cleonos/third-party/doomgeneric/doomgeneric/wi\_stuff.h](/cleonos/third-party/doomgeneric/doomgeneric/wi_stuff.h) | C++ | 14 | 24 | 11 | 49 |
| [cleonos/third-party/doomgeneric/doomgeneric/z\_zone.c](/cleonos/third-party/doomgeneric/doomgeneric/z_zone.c) | C | 278 | 89 | 122 | 489 |
| [cleonos/third-party/doomgeneric/doomgeneric/z\_zone.h](/cleonos/third-party/doomgeneric/doomgeneric/z_zone.h) | C++ | 29 | 29 | 16 | 74 |
| [clks/arch/aarch64/boot.c](/clks/arch/aarch64/boot.c) | C | -6 | 0 | -1 | -7 |
| [clks/arch/aarch64/startup/boot.c](/clks/arch/aarch64/startup/boot.c) | C | 6 | 0 | 1 | 7 |
| [clks/arch/x86\_64/boot.c](/clks/arch/x86_64/boot.c) | C | -6 | 0 | -1 | -7 |
| [clks/arch/x86\_64/exec\_stack\_call.S](/clks/arch/x86_64/exec_stack_call.S) | Go Assembly | -40 | 0 | -8 | -48 |
| [clks/arch/x86\_64/interrupt/interrupt\_stubs.S](/clks/arch/x86_64/interrupt/interrupt_stubs.S) | Go Assembly | 108 | 0 | 12 | 120 |
| [clks/arch/x86\_64/interrupt\_stubs.S](/clks/arch/x86_64/interrupt_stubs.S) | Go Assembly | -108 | 0 | -12 | -120 |
| [clks/arch/x86\_64/startup/boot.c](/clks/arch/x86_64/startup/boot.c) | C | 6 | 0 | 1 | 7 |
| [clks/arch/x86\_64/startup/exec\_stack\_call.S](/clks/arch/x86_64/startup/exec_stack_call.S) | Go Assembly | 40 | 0 | 8 | 48 |
| [clks/drivers/audio/pcspeaker.c](/clks/drivers/audio/pcspeaker.c) | C | -101 | 0 | -25 | -126 |
| [clks/drivers/serial/serial.c](/clks/drivers/serial/serial.c) | C | -52 | 0 | -16 | -68 |
| [clks/drivers/video/font8x8.c](/clks/drivers/video/font8x8.c) | C | -67 | 0 | -8 | -75 |
| [clks/drivers/video/font8x8.h](/clks/drivers/video/font8x8.h) | C++ | -5 | 0 | -3 | -8 |
| [clks/drivers/video/framebuffer.c](/clks/drivers/video/framebuffer.c) | C | -251 | 0 | -70 | -321 |
| [clks/drivers/video/psf\_font.c](/clks/drivers/video/psf_font.c) | C | -230 | 0 | -56 | -286 |
| [clks/drivers/video/psf\_font.h](/clks/drivers/video/psf_font.h) | C++ | -15 | 0 | -5 | -20 |
| [clks/include/clks/exec.h](/clks/include/clks/exec.h) | C++ | -8 | 0 | 0 | -8 |
| [clks/include/clks/keyboard.h](/clks/include/clks/keyboard.h) | C++ | 0 | 0 | -1 | -1 |
| [clks/include/clks/limine.h](/clks/include/clks/limine.h) | C++ | -20 | 0 | 0 | -20 |
| [clks/include/clks/panic.h](/clks/include/clks/panic.h) | C++ | -5 | 0 | 0 | -5 |
| [clks/include/clks/syscall.h](/clks/include/clks/syscall.h) | C++ | 3 | 0 | 0 | 3 |
| [clks/include/clks/task.h](/clks/include/clks/task.h) | C++ | -5 | 0 | 0 | -5 |
| [clks/include/clks/types.h](/clks/include/clks/types.h) | C++ | -3 | 0 | 0 | -3 |
| [clks/kernel/boot/limine/limine\_requests.c](/clks/kernel/boot/limine/limine_requests.c) | C | 76 | 0 | 26 | 102 |
| [clks/kernel/core/interrupts.c](/clks/kernel/core/interrupts.c) | C | 307 | 0 | 43 | 350 |
| [clks/kernel/core/kmain.c](/clks/kernel/core/kmain.c) | C | 388 | 1 | 77 | 466 |
| [clks/kernel/core/log.c](/clks/kernel/core/log.c) | C | 179 | 0 | 48 | 227 |
| [clks/kernel/core/panic.c](/clks/kernel/core/panic.c) | C | 527 | 0 | 155 | 682 |
| [clks/kernel/core/scheduler.c](/clks/kernel/core/scheduler.c) | C | 136 | 0 | 44 | 180 |
| [clks/kernel/core/service.c](/clks/kernel/core/service.c) | C | 107 | 0 | 34 | 141 |
| [clks/kernel/desktop.c](/clks/kernel/desktop.c) | C | -321 | 0 | -86 | -407 |
| [clks/kernel/driver.c](/clks/kernel/driver.c) | C | -169 | 0 | -49 | -218 |
| [clks/kernel/elf64.c](/clks/kernel/elf64.c) | C | -239 | 0 | -73 | -312 |
| [clks/kernel/elfrunner.c](/clks/kernel/elfrunner.c) | C | -30 | 0 | -8 | -38 |
| [clks/kernel/exec.c](/clks/kernel/exec.c) | C | -2,037 | -1 | -555 | -2,593 |
| [clks/kernel/fs.c](/clks/kernel/fs.c) | C | -701 | 0 | -222 | -923 |
| [clks/kernel/hal/audio/pcspeaker.c](/clks/kernel/hal/audio/pcspeaker.c) | C | 101 | 0 | 25 | 126 |
| [clks/kernel/hal/serial/serial.c](/clks/kernel/hal/serial/serial.c) | C | 51 | 0 | 16 | 67 |
| [clks/kernel/hal/video/font8x8.c](/clks/kernel/hal/video/font8x8.c) | C | 45 | 0 | 8 | 53 |
| [clks/kernel/hal/video/font8x8.h](/clks/kernel/hal/video/font8x8.h) | C++ | 5 | 0 | 3 | 8 |
| [clks/kernel/hal/video/framebuffer.c](/clks/kernel/hal/video/framebuffer.c) | C | 247 | 0 | 69 | 316 |
| [clks/kernel/hal/video/psf\_font.c](/clks/kernel/hal/video/psf_font.c) | C | 203 | 0 | 56 | 259 |
| [clks/kernel/hal/video/psf\_font.h](/clks/kernel/hal/video/psf_font.h) | C++ | 15 | 0 | 5 | 20 |
| [clks/kernel/heap.c](/clks/kernel/heap.c) | C | -134 | 0 | -42 | -176 |
| [clks/kernel/input/keyboard.c](/clks/kernel/input/keyboard.c) | C | 370 | 0 | 95 | 465 |
| [clks/kernel/input/mouse.c](/clks/kernel/input/mouse.c) | C | 243 | 0 | 63 | 306 |
| [clks/kernel/interface/desktop.c](/clks/kernel/interface/desktop.c) | C | 321 | 0 | 86 | 407 |
| [clks/kernel/interface/shell.c](/clks/kernel/interface/shell.c) | C | 1,232 | 0 | 316 | 1,548 |
| [clks/kernel/interface/tty.c](/clks/kernel/interface/tty.c) | C | 1,137 | 0 | 288 | 1,425 |
| [clks/kernel/interrupts.c](/clks/kernel/interrupts.c) | C | -317 | 0 | -44 | -361 |
| [clks/kernel/kelf.c](/clks/kernel/kelf.c) | C | -203 | -1 | -53 | -257 |
| [clks/kernel/keyboard.c](/clks/kernel/keyboard.c) | C | -379 | 0 | -96 | -475 |
| [clks/kernel/kmain.c](/clks/kernel/kmain.c) | C | -388 | -1 | -77 | -466 |
| [clks/kernel/limine\_requests.c](/clks/kernel/limine_requests.c) | C | -76 | 0 | -26 | -102 |
| [clks/kernel/log.c](/clks/kernel/log.c) | C | -185 | 0 | -48 | -233 |
| [clks/kernel/memory/heap.c](/clks/kernel/memory/heap.c) | C | 137 | 0 | 44 | 181 |
| [clks/kernel/memory/pmm.c](/clks/kernel/memory/pmm.c) | C | 82 | 0 | 23 | 105 |
| [clks/kernel/mouse.c](/clks/kernel/mouse.c) | C | -246 | 0 | -63 | -309 |
| [clks/kernel/panic.c](/clks/kernel/panic.c) | C | -546 | 0 | -155 | -701 |
| [clks/kernel/pmm.c](/clks/kernel/pmm.c) | C | -82 | 0 | -23 | -105 |
| [clks/kernel/ramdisk.c](/clks/kernel/ramdisk.c) | C | -172 | 0 | -50 | -222 |
| [clks/kernel/runtime/driver.c](/clks/kernel/runtime/driver.c) | C | 166 | 0 | 49 | 215 |
| [clks/kernel/runtime/elf64.c](/clks/kernel/runtime/elf64.c) | C | 279 | 1 | 84 | 364 |
| [clks/kernel/runtime/elfrunner.c](/clks/kernel/runtime/elfrunner.c) | C | 30 | 0 | 8 | 38 |
| [clks/kernel/runtime/exec.c](/clks/kernel/runtime/exec.c) | C | 2,179 | 1 | 595 | 2,775 |
| [clks/kernel/runtime/kelf.c](/clks/kernel/runtime/kelf.c) | C | 198 | 1 | 52 | 251 |
| [clks/kernel/runtime/syscall.c](/clks/kernel/runtime/syscall.c) | C | 2,021 | 0 | 507 | 2,528 |
| [clks/kernel/runtime/userland.c](/clks/kernel/runtime/userland.c) | C | 146 | 0 | 38 | 184 |
| [clks/kernel/scheduler.c](/clks/kernel/scheduler.c) | C | -136 | 0 | -44 | -180 |
| [clks/kernel/service.c](/clks/kernel/service.c) | C | -113 | 0 | -34 | -147 |
| [clks/kernel/shell.c](/clks/kernel/shell.c) | C | -1,250 | 0 | -317 | -1,567 |
| [clks/kernel/storage/fs.c](/clks/kernel/storage/fs.c) | C | 684 | 0 | 222 | 906 |
| [clks/kernel/storage/ramdisk.c](/clks/kernel/storage/ramdisk.c) | C | 172 | 0 | 50 | 222 |
| [clks/kernel/support/libc\_compat.c](/clks/kernel/support/libc_compat.c) | C | 25 | 0 | 7 | 32 |
| [clks/kernel/support/string.c](/clks/kernel/support/string.c) | C | 54 | 0 | 16 | 70 |
| [clks/kernel/syscall.c](/clks/kernel/syscall.c) | C | -1,588 | 0 | -401 | -1,989 |
| [clks/kernel/tty.c](/clks/kernel/tty.c) | C | -1,188 | 0 | -290 | -1,478 |
| [clks/kernel/userland.c](/clks/kernel/userland.c) | C | -145 | 0 | -38 | -183 |
| [clks/lib/libc\_compat.c](/clks/lib/libc_compat.c) | C | -25 | 0 | -7 | -32 |
| [clks/lib/string.c](/clks/lib/string.c) | C | -54 | 0 | -16 | -70 |
| [configs/menuconfig/clks\_features.json](/configs/menuconfig/clks_features.json) | JSON | 180 | 0 | 0 | 180 |
| [docs/syscall.md](/docs/syscall.md) | Markdown | 46 | 0 | 14 | 60 |
| [limine/.github/dependabot.yml](/limine/.github/dependabot.yml) | YAML | 7 | 0 | 1 | 8 |
| [limine/.github/workflows/binary-release.yml](/limine/.github/workflows/binary-release.yml) | YAML | 78 | 0 | 21 | 99 |
| [limine/.github/workflows/check.yml](/limine/.github/workflows/check.yml) | YAML | 34 | 0 | 12 | 46 |
| [limine/.github/workflows/pr\_branch\_check.yml](/limine/.github/workflows/pr_branch_check.yml) | YAML | 13 | 0 | 3 | 16 |
| [limine/.github/workflows/qa.yml](/limine/.github/workflows/qa.yml) | YAML | 14 | 0 | 5 | 19 |
| [limine/.github/workflows/release.yml](/limine/.github/workflows/release.yml) | YAML | 64 | 0 | 17 | 81 |
| [limine/3RDPARTY.md](/limine/3RDPARTY.md) | Markdown | 53 | 0 | 15 | 68 |
| [limine/CONFIG.md](/limine/CONFIG.md) | Markdown | 320 | 0 | 53 | 373 |
| [limine/FAQ.md](/limine/FAQ.md) | Markdown | 26 | 0 | 10 | 36 |
| [limine/INSTALL.md](/limine/INSTALL.md) | Markdown | 37 | 0 | 15 | 52 |
| [limine/README.md](/limine/README.md) | Markdown | 70 | 0 | 33 | 103 |
| [limine/USAGE.md](/limine/USAGE.md) | Markdown | 85 | 0 | 23 | 108 |
| [limine/common/common.mk](/limine/common/common.mk) | Makefile | 562 | 0 | 115 | 677 |
| [limine/common/crypt/blake2b.c](/limine/common/crypt/blake2b.c) | C | 179 | 3 | 39 | 221 |
| [limine/common/crypt/blake2b.h](/limine/common/crypt/blake2b.h) | C++ | 6 | 0 | 5 | 11 |
| [limine/common/drivers/disk.h](/limine/common/drivers/disk.h) | C++ | 18 | 0 | 9 | 27 |
| [limine/common/drivers/disk.s2.c](/limine/common/drivers/disk.s2.c) | C | 646 | 33 | 178 | 857 |
| [limine/common/drivers/edid.c](/limine/common/drivers/edid.c) | C | 61 | 0 | 25 | 86 |
| [limine/common/drivers/edid.h](/limine/common/drivers/edid.h) | C++ | 37 | 0 | 7 | 44 |
| [limine/common/drivers/gop.c](/limine/common/drivers/gop.c) | C | 306 | 3 | 73 | 382 |
| [limine/common/drivers/gop.h](/limine/common/drivers/gop.h) | C++ | 13 | 0 | 7 | 20 |
| [limine/common/drivers/serial.c](/limine/common/drivers/serial.c) | C | 37 | 1 | 13 | 51 |
| [limine/common/drivers/serial.h](/limine/common/drivers/serial.h) | C++ | 9 | 0 | 7 | 16 |
| [limine/common/drivers/vbe.c](/limine/common/drivers/vbe.c) | C | 307 | 8 | 53 | 368 |
| [limine/common/drivers/vbe.h](/limine/common/drivers/vbe.h) | C++ | 11 | 0 | 5 | 16 |
| [limine/common/drivers/vga\_textmode.c](/limine/common/drivers/vga_textmode.c) | C | 294 | 5 | 71 | 370 |
| [limine/common/drivers/vga\_textmode.h](/limine/common/drivers/vga_textmode.h) | C++ | 24 | 0 | 12 | 36 |
| [limine/common/entry.s2.c](/limine/common/entry.s2.c) | C | 106 | 1 | 28 | 135 |
| [limine/common/entry.s3.c](/limine/common/entry.s3.c) | C | 202 | 0 | 47 | 249 |
| [limine/common/fs/fat32.h](/limine/common/fs/fat32.h) | C++ | 7 | 0 | 5 | 12 |
| [limine/common/fs/fat32.s2.c](/limine/common/fs/fat32.s2.c) | C | 577 | 39 | 111 | 727 |
| [limine/common/fs/file.h](/limine/common/fs/file.h) | C++ | 39 | 0 | 7 | 46 |
| [limine/common/fs/file.s2.c](/limine/common/fs/file.s2.c) | C | 163 | 0 | 22 | 185 |
| [limine/common/fs/iso9660.h](/limine/common/fs/iso9660.h) | C++ | 7 | 0 | 4 | 11 |
| [limine/common/fs/iso9660.s2.c](/limine/common/fs/iso9660.s2.c) | C | 407 | 38 | 94 | 539 |
| [limine/common/gensyms.sh](/limine/common/gensyms.sh) | Shell Script | 33 | 2 | 17 | 52 |
| [limine/common/lib/acpi.c](/limine/common/lib/acpi.c) | C | 344 | 27 | 102 | 473 |
| [limine/common/lib/acpi.h](/limine/common/lib/acpi.h) | C++ | 163 | 24 | 30 | 217 |
| [limine/common/lib/bli.c](/limine/common/lib/bli.c) | C | 67 | 4 | 20 | 91 |
| [limine/common/lib/bli.h](/limine/common/lib/bli.h) | C++ | 7 | 0 | 5 | 12 |
| [limine/common/lib/config.c](/limine/common/lib/config.c) | C | 628 | 11 | 126 | 765 |
| [limine/common/lib/config.h](/limine/common/lib/config.h) | C++ | 28 | 0 | 9 | 37 |
| [limine/common/lib/elf.c](/limine/common/lib/elf.c) | C | 964 | 27 | 212 | 1,203 |
| [limine/common/lib/elf.h](/limine/common/lib/elf.h) | C++ | 74 | 0 | 14 | 88 |
| [limine/common/lib/elsewhere.c](/limine/common/lib/elsewhere.c) | C | 81 | 7 | 17 | 105 |
| [limine/common/lib/elsewhere.h](/limine/common/lib/elsewhere.h) | C++ | 16 | 0 | 5 | 21 |
| [limine/common/lib/fb.c](/limine/common/lib/fb.c) | C | 153 | 4 | 17 | 174 |
| [limine/common/lib/fb.h](/limine/common/lib/fb.h) | C++ | 36 | 0 | 12 | 48 |
| [limine/common/lib/fdt.c](/limine/common/lib/fdt.c) | C | 33 | 0 | 12 | 45 |
| [limine/common/lib/fdt.h](/limine/common/lib/fdt.h) | C++ | 10 | 0 | 6 | 16 |
| [limine/common/lib/getchar.c](/limine/common/lib/getchar.c) | C | 306 | 1 | 59 | 366 |
| [limine/common/lib/getchar.h](/limine/common/lib/getchar.h) | C++ | 23 | 0 | 6 | 29 |
| [limine/common/lib/gterm.c](/limine/common/lib/gterm.c) | C | 813 | 9 | 118 | 940 |
| [limine/common/lib/gterm.h](/limine/common/lib/gterm.h) | C++ | 29 | 0 | 6 | 35 |
| [limine/common/lib/guid.c](/limine/common/lib/guid.c) | C | 82 | 0 | 14 | 96 |
| [limine/common/lib/guid.h](/limine/common/lib/guid.h) | C++ | 15 | 1 | 5 | 21 |
| [limine/common/lib/image.c](/limine/common/lib/image.c) | C | 52 | 2 | 18 | 72 |
| [limine/common/lib/image.h](/limine/common/lib/image.h) | C++ | 27 | 0 | 6 | 33 |
| [limine/common/lib/libc.c](/limine/common/lib/libc.c) | C | 114 | 3 | 15 | 132 |
| [limine/common/lib/libc.h](/limine/common/lib/libc.h) | C++ | 29 | 0 | 8 | 37 |
| [limine/common/lib/libc.s2.c](/limine/common/lib/libc.s2.c) | C | 122 | 2 | 26 | 150 |
| [limine/common/lib/macros.aarch64\_asm.h](/limine/common/lib/macros.aarch64_asm.h) | C++ | 44 | 4 | 5 | 53 |
| [limine/common/lib/memory.s2.c](/limine/common/lib/memory.s2.c) | C | 41 | 0 | 13 | 54 |
| [limine/common/lib/misc.c](/limine/common/lib/misc.c) | C | 322 | 8 | 90 | 420 |
| [limine/common/lib/misc.h](/limine/common/lib/misc.h) | C++ | 122 | 0 | 32 | 154 |
| [limine/common/lib/misc.s2.c](/limine/common/lib/misc.s2.c) | C | 117 | 0 | 12 | 129 |
| [limine/common/lib/panic.s2.c](/limine/common/lib/panic.s2.c) | C | 70 | 8 | 12 | 90 |
| [limine/common/lib/part.h](/limine/common/lib/part.h) | C++ | 86 | 2 | 23 | 111 |
| [limine/common/lib/part.s2.c](/limine/common/lib/part.s2.c) | C | 464 | 31 | 121 | 616 |
| [limine/common/lib/pe.c](/limine/common/lib/pe.c) | C | 398 | 5 | 98 | 501 |
| [limine/common/lib/pe.h](/limine/common/lib/pe.h) | C++ | 8 | 0 | 5 | 13 |
| [limine/common/lib/print.h](/limine/common/lib/print.h) | C++ | 11 | 0 | 6 | 17 |
| [limine/common/lib/print.s2.c](/limine/common/lib/print.s2.c) | C | 200 | 0 | 36 | 236 |
| [limine/common/lib/rand.c](/limine/common/lib/rand.c) | C | 112 | 5 | 25 | 142 |
| [limine/common/lib/rand.h](/limine/common/lib/rand.h) | C++ | 7 | 0 | 5 | 12 |
| [limine/common/lib/real.h](/limine/common/lib/real.h) | C++ | 26 | 0 | 9 | 35 |
| [limine/common/lib/stb\_image.c](/limine/common/lib/stb_image.c) | C | 4 | 0 | 3 | 7 |
| [limine/common/lib/term.c](/limine/common/lib/term.c) | C | 266 | 5 | 49 | 320 |
| [limine/common/lib/term.h](/limine/common/lib/term.h) | C++ | 47 | 0 | 13 | 60 |
| [limine/common/lib/time.c](/limine/common/lib/time.c) | C | 59 | 2 | 15 | 76 |
| [limine/common/lib/time.h](/limine/common/lib/time.h) | C++ | 5 | 0 | 4 | 9 |
| [limine/common/lib/trace.h](/limine/common/lib/trace.h) | C++ | 5 | 0 | 4 | 9 |
| [limine/common/lib/trace.s2.c](/limine/common/lib/trace.s2.c) | C | 79 | 0 | 9 | 88 |
| [limine/common/lib/uri.c](/limine/common/lib/uri.c) | C | 224 | 9 | 54 | 287 |
| [limine/common/lib/uri.h](/limine/common/lib/uri.h) | C++ | 7 | 0 | 4 | 11 |
| [limine/common/libc-compat/stdlib.h](/limine/common/libc-compat/stdlib.h) | C++ | 4 | 0 | 3 | 7 |
| [limine/common/libc-compat/string.h](/limine/common/libc-compat/string.h) | C++ | 19 | 0 | 5 | 24 |
| [limine/common/menu.c](/limine/common/menu.c) | C | 1,378 | 30 | 150 | 1,558 |
| [limine/common/menu.h](/limine/common/menu.h) | C++ | 13 | 0 | 8 | 21 |
| [limine/common/mm/mtrr.c](/limine/common/mm/mtrr.c) | C | 91 | 18 | 32 | 141 |
| [limine/common/mm/mtrr.h](/limine/common/mm/mtrr.h) | C++ | 7 | 0 | 5 | 12 |
| [limine/common/mm/pmm.c](/limine/common/mm/pmm.c) | C | 70 | 3 | 16 | 89 |
| [limine/common/mm/pmm.h](/limine/common/mm/pmm.h) | C++ | 63 | 0 | 18 | 81 |
| [limine/common/mm/pmm.s2.c](/limine/common/mm/pmm.s2.c) | C | 662 | 37 | 192 | 891 |
| [limine/common/mm/vmm.c](/limine/common/mm/vmm.c) | C | 416 | 30 | 110 | 556 |
| [limine/common/mm/vmm.h](/limine/common/mm/vmm.h) | C++ | 125 | 6 | 45 | 176 |
| [limine/common/protos/chainload.c](/limine/common/protos/chainload.c) | C | 283 | 7 | 78 | 368 |
| [limine/common/protos/chainload.h](/limine/common/protos/chainload.h) | C++ | 5 | 0 | 4 | 9 |
| [limine/common/protos/efi\_boot\_entry.c](/limine/common/protos/efi_boot_entry.c) | C | 94 | 6 | 26 | 126 |
| [limine/common/protos/efi\_boot\_entry.h](/limine/common/protos/efi_boot_entry.h) | C++ | 5 | 0 | 4 | 9 |
| [limine/common/protos/limine.c](/limine/common/protos/limine.c) | C | 1,523 | 80 | 331 | 1,934 |
| [limine/common/protos/limine.h](/limine/common/protos/limine.h) | C++ | 5 | 0 | 4 | 9 |
| [limine/common/protos/linux.h](/limine/common/protos/linux.h) | C++ | 59 | 1 | 14 | 74 |
| [limine/common/protos/linux\_risc.c](/limine/common/protos/linux_risc.c) | C | 412 | 22 | 99 | 533 |
| [limine/common/protos/linux\_x86.c](/limine/common/protos/linux_x86.c) | C | 527 | 41 | 96 | 664 |
| [limine/common/protos/multiboot.h](/limine/common/protos/multiboot.h) | C++ | 13 | 0 | 5 | 18 |
| [limine/common/protos/multiboot1.c](/limine/common/protos/multiboot1.c) | C | 394 | 14 | 105 | 513 |
| [limine/common/protos/multiboot1.h](/limine/common/protos/multiboot1.h) | C++ | 76 | 0 | 25 | 101 |
| [limine/common/protos/multiboot2.c](/limine/common/protos/multiboot2.c) | C | 782 | 77 | 182 | 1,041 |
| [limine/common/protos/multiboot2.h](/limine/common/protos/multiboot2.h) | C++ | 331 | 30 | 58 | 419 |
| [limine/common/pxe/pxe.h](/limine/common/pxe/pxe.h) | C++ | 96 | 0 | 16 | 112 |
| [limine/common/pxe/pxe.s2.c](/limine/common/pxe/pxe.s2.c) | C | 53 | 2 | 18 | 73 |
| [limine/common/pxe/tftp.h](/limine/common/pxe/tftp.h) | C++ | 36 | 0 | 11 | 47 |
| [limine/common/pxe/tftp.s2.c](/limine/common/pxe/tftp.s2.c) | C | 211 | 5 | 52 | 268 |
| [limine/common/stb\_image.patch](/limine/common/stb_image.patch) | Diff | 74 | 7 | 10 | 91 |
| [limine/common/sys/a20.h](/limine/common/sys/a20.h) | C++ | 6 | 0 | 4 | 10 |
| [limine/common/sys/a20.s2.c](/limine/common/sys/a20.s2.c) | C | 67 | 5 | 21 | 93 |
| [limine/common/sys/cpu.h](/limine/common/sys/cpu.h) | C++ | 429 | 2 | 82 | 513 |
| [limine/common/sys/cpu.s2.c](/limine/common/sys/cpu.s2.c) | C | 58 | 6 | 14 | 78 |
| [limine/common/sys/cpu\_riscv.c](/limine/common/sys/cpu_riscv.c) | C | 353 | 10 | 65 | 428 |
| [limine/common/sys/e820.h](/limine/common/sys/e820.h) | C++ | 9 | 0 | 5 | 14 |
| [limine/common/sys/e820.s2.c](/limine/common/sys/e820.s2.c) | C | 33 | 0 | 12 | 45 |
| [limine/common/sys/exceptions.s2.c](/limine/common/sys/exceptions.s2.c) | C | 46 | 0 | 5 | 51 |
| [limine/common/sys/gdt.h](/limine/common/sys/gdt.h) | C++ | 23 | 0 | 7 | 30 |
| [limine/common/sys/gdt.s2.c](/limine/common/sys/gdt.s2.c) | C | 83 | 0 | 13 | 96 |
| [limine/common/sys/idt.c](/limine/common/sys/idt.c) | C | 53 | 3 | 16 | 72 |
| [limine/common/sys/idt.h](/limine/common/sys/idt.h) | C++ | 43 | 0 | 17 | 60 |
| [limine/common/sys/idt.s2.c](/limine/common/sys/idt.s2.c) | C | 26 | 0 | 10 | 36 |
| [limine/common/sys/iommu.c](/limine/common/sys/iommu.c) | C | 94 | 21 | 30 | 145 |
| [limine/common/sys/iommu.h](/limine/common/sys/iommu.h) | C++ | 4 | 0 | 3 | 7 |
| [limine/common/sys/lapic.c](/limine/common/sys/lapic.c) | C | 420 | 23 | 69 | 512 |
| [limine/common/sys/lapic.h](/limine/common/sys/lapic.h) | C++ | 30 | 0 | 9 | 39 |
| [limine/common/sys/pic.c](/limine/common/sys/pic.c) | C | 37 | 1 | 11 | 49 |
| [limine/common/sys/pic.h](/limine/common/sys/pic.h) | C++ | 8 | 0 | 4 | 12 |
| [limine/common/sys/sbi.h](/limine/common/sys/sbi.h) | C++ | 25 | 0 | 8 | 33 |
| [limine/common/sys/smp.c](/limine/common/sys/smp.c) | C | 917 | 54 | 259 | 1,230 |
| [limine/common/sys/smp.h](/limine/common/sys/smp.h) | C++ | 38 | 0 | 13 | 51 |
| [limine/decompressor/decompressor.mk](/limine/decompressor/decompressor.mk) | Makefile | 70 | 0 | 15 | 85 |
| [limine/decompressor/main.c](/limine/decompressor/main.c) | C | 31 | 2 | 5 | 38 |
| [limine/decompressor/memory.c](/limine/decompressor/memory.c) | C | 41 | 0 | 13 | 54 |
| [limine/decompressor/tinf.patch](/limine/decompressor/tinf.patch) | Diff | 42 | 3 | 10 | 55 |
| [limine/host/hgen.sh](/limine/host/hgen.sh) | Shell Script | 10 | 1 | 6 | 17 |
| [limine/host/host.mk](/limine/host/host.mk) | Makefile | 14 | 0 | 6 | 20 |
| [limine/host/limine.c](/limine/host/limine.c) | C | 1,192 | 32 | 225 | 1,449 |
| [limine/test.mk](/limine/test.mk) | Makefile | 263 | 0 | 16 | 279 |
| [limine/test/e9print.c](/limine/test/e9print.c) | C | 81 | 0 | 18 | 99 |
| [limine/test/e9print.h](/limine/test/e9print.h) | C++ | 7 | 0 | 3 | 10 |
| [limine/test/limine.c](/limine/test/limine.c) | C | 624 | 0 | 82 | 706 |
| [limine/test/limine.conf](/limine/test/limine.conf) | Properties | 40 | 1 | 19 | 60 |
| [limine/test/memory.c](/limine/test/memory.c) | C | 40 | 0 | 13 | 53 |
| [limine/test/multiboot.c](/limine/test/multiboot.c) | C | 57 | 12 | 24 | 93 |
| [limine/test/multiboot2.c](/limine/test/multiboot2.c) | C | 141 | 5 | 36 | 182 |
| [limine/test/test.mk](/limine/test/test.mk) | Makefile | 143 | 0 | 21 | 164 |
| [limine/version.sh](/limine/version.sh) | Shell Script | 19 | 1 | 10 | 30 |
| [scripts/menuconfig.py](/scripts/menuconfig.py) | Python | 622 | 0 | 100 | 722 |
| [wine/README.md](/wine/README.md) | Markdown | 4 | 0 | 0 | 4 |
| [wine/cleonos\_wine\_lib/constants.py](/wine/cleonos_wine_lib/constants.py) | Python | 36 | 3 | 3 | 42 |
| [wine/cleonos\_wine\_lib/runner.py](/wine/cleonos_wine_lib/runner.py) | Python | 469 | 0 | 91 | 560 |
| [wine/cleonos\_wine\_lib/state.py](/wine/cleonos_wine_lib/state.py) | Python | 118 | 2 | 31 | 151 |
[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details

View File

@@ -0,0 +1,505 @@
"filename", "language", "Markdown", "Python", "C", "C++", "Makefile", "XML", "JSON", "CMake", "Go Assembly", "Shell Script", "Diff", "YAML", "Properties", "comment", "blank", "total"
"d:\Projects\C\cleonos\.github\workflows\style-check.yml", "YAML", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 19, 128
"d:\Projects\C\cleonos\CMakeLists.txt", "CMake", 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 10, 140
"d:\Projects\C\cleonos\cleonos\c\apps\ansi_main.c", "C", 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0
"d:\Projects\C\cleonos\cleonos\c\apps\ansitest_main.c", "C", 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 1
"d:\Projects\C\cleonos\cleonos\c\apps\append_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\bmpview_main.c", "C", 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 412
"d:\Projects\C\cleonos\cleonos\c\apps\cat_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\cd_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\clear_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\cmd_runtime.c", "C", 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5
"d:\Projects\C\cleonos\cleonos\c\apps\cmd_runtime.h", "C++", 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4
"d:\Projects\C\cleonos\cleonos\c\apps\cp_main.c", "C", 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -4
"d:\Projects\C\cleonos\cleonos\c\apps\cut_main.c", "C", 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -5
"d:\Projects\C\cleonos\cleonos\c\apps\dmesg_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\doom\doom_compat.c", "C", 0, 0, 1196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, 1473
"d:\Projects\C\cleonos\cleonos\c\apps\doom\doom_shim.h", "C++", 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 21
"d:\Projects\C\cleonos\cleonos\c\apps\doom\doomgeneric_clks.c", "C", 0, 0, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 201
"d:\Projects\C\cleonos\cleonos\c\apps\doom_main.c", "C", 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 82
"d:\Projects\C\cleonos\cleonos\c\apps\exec_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\exit_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\fastfetch_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\fg_main.c", "C", 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1
"d:\Projects\C\cleonos\cleonos\c\apps\fsstat_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\grep_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\head_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1
"d:\Projects\C\cleonos\cleonos\c\apps\help_main.c", "C", 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 2
"d:\Projects\C\cleonos\cleonos\c\apps\kbdstat_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\kdbg_main.c", "C", 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1
"d:\Projects\C\cleonos\cleonos\c\apps\ls_main.c", "C", 0, 0, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -12
"d:\Projects\C\cleonos\cleonos\c\apps\memstat_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\mkdir_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\mv_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\pid_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\pwd_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\qrcode\qrcodegen.c", "C", 0, 0, 759, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 96, 1031
"d:\Projects\C\cleonos\cleonos\c\apps\qrcode\qrcodegen.h", "C++", 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 268, 34, 364
"d:\Projects\C\cleonos\cleonos\c\apps\qrcode_main.c", "C", 0, 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 58, 266
"d:\Projects\C\cleonos\cleonos\c\apps\restart_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\rm_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_cmd.c", "C", 0, 0, -35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, -39
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_external.c", "C", 0, 0, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_input.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_internal.h", "C++", 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -6
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_path.c", "C", 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
"d:\Projects\C\cleonos\cleonos\c\apps\shell_main.c", "C", 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1
"d:\Projects\C\cleonos\cleonos\c\apps\shstat_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\shutdown_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\sleep_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\sort_main.c", "C", 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0
"d:\Projects\C\cleonos\cleonos\c\apps\spawn_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\spin_main.c", "C", 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1
"d:\Projects\C\cleonos\cleonos\c\apps\stats_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\sysstat_main.c", "C", 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74
"d:\Projects\C\cleonos\cleonos\c\apps\tail_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1
"d:\Projects\C\cleonos\cleonos\c\apps\taskstat_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\top_main.c", "C", 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1
"d:\Projects\C\cleonos\cleonos\c\apps\touch_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\tty_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\uniq_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1
"d:\Projects\C\cleonos\cleonos\c\apps\userstat_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\wait_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\wavplay_main.c", "C", 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8
"d:\Projects\C\cleonos\cleonos\c\apps\wc_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1
"d:\Projects\C\cleonos\cleonos\c\apps\write_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\apps\yield_main.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2
"d:\Projects\C\cleonos\cleonos\c\include\cleonos_syscall.h", "C++", 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 19
"d:\Projects\C\cleonos\cleonos\c\src\stdio.c", "C", 0, 0, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 212
"d:\Projects\C\cleonos\cleonos\c\src\syscall.c", "C", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\README.md", "Markdown", 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 68
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\Makefile", "Makefile", 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 7, 14, 55
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\am_map.c", "C", 0, 0, 970, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 224, 1356
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\am_map.h", "C++", 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 13, 50
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\config.h", "C++", 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 34, 101
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_englsh.h", "C++", 0, 0, 0, 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 107, 694
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_event.c", "C", 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 15, 64
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_event.h", "C++", 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 29, 138
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_items.c", "C", 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 14, 129
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_items.h", "C++", 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 10, 42
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_iwad.c", "C", 0, 0, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 207, 849
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_iwad.h", "C++", 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 9, 53
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_loop.c", "C", 0, 0, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 194, 827
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_loop.h", "C++", 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 25, 82
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_main.c", "C", 0, 0, 1089, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 418, 339, 1846
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_main.h", "C++", 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 16, 51
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_mode.c", "C", 0, 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 32, 210
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_mode.h", "C++", 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 17, 99
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_net.c", "C", 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 63, 282
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_player.h", "C++", 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 51, 210
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_textur.h", "C++", 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 12, 44
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_think.h", "C++", 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 21, 69
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_ticcmd.h", "C++", 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 14, 57
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\deh_main.h", "C++", 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 11, 49
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\deh_misc.h", "C++", 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 12, 84
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\deh_str.h", "C++", 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 13, 48
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doom.h", "C++", 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 12, 43
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomdata.h", "C++", 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 51, 214
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomdef.c", "C", 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 8, 29
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomdef.h", "C++", 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 35, 169
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomfeatures.h", "C++", 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 13, 41
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric.c", "C", 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 28
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric.h", "C++", 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 18, 50
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric.vcxproj", "XML", 0, 0, 0, 0, 0, 339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 339
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_allegro.c", "C", 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 119, 454
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_emscripten.c", "C", 0, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 31, 220
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_linuxvt.c", "C", 0, 0, 412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 78, 529
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_sdl.c", "C", 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 29, 211
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_soso.c", "C", 0, 0, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 54, 277
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_sosox.c", "C", 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 48, 248
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_win.c", "C", 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 37, 210
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_xlib.c", "C", 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 46, 214
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomkeys.h", "C++", 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 14, 98
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomstat.c", "C", 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 10, 36
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomstat.h", "C++", 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 97, 282
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomtype.h", "C++", 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 30, 105
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\dstrings.c", "C", 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 15, 74
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\dstrings.h", "C++", 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 12, 42
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\dummy.c", "C", 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 16, 54
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\f_finale.c", "C", 0, 0, 528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 114, 719
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\f_finale.h", "C++", 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 14, 46
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\f_wipe.c", "C", 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 44, 295
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\f_wipe.h", "C++", 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 13, 64
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\g_game.c", "C", 0, 0, 1572, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 413, 2304
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\g_game.h", "C++", 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 24, 81
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\gusconf.c", "C", 0, 0, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 58, 272
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\gusconf.h", "C++", 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 7, 30
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\hu_lib.c", "C", 0, 0, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 64, 348
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\hu_lib.h", "C++", 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 47, 183
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\hu_stuff.c", "C", 0, 0, 493, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 98, 642
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\hu_stuff.h", "C++", 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 16, 60
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_allegromusic.c", "C", 0, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 79, 309
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_allegrosound.c", "C", 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 106, 434
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_cdmus.c", "C", 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 54, 244
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_cdmus.h", "C++", 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 7, 42
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_endoom.c", "C", 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 28, 102
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_endoom.h", "C++", 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 7, 30
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_input.c", "C", 0, 0, 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 36, 342
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_joystick.c", "C", 0, 0, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 68, 360
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_joystick.h", "C++", 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 17, 71
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_scale.c", "C", 0, 0, 889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 339, 1453
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_scale.h", "C++", 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 13, 54
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_sdlmusic.c", "C", 0, 0, 887, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 253, 1317
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_sdlsound.c", "C", 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, 266, 1077
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_sound.c", "C", 0, 0, 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 75, 421
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_sound.h", "C++", 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 82, 257
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_swap.h", "C++", 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 22, 74
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_system.c", "C", 0, 0, 347, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 120, 579
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_system.h", "C++", 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 29, 85
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_timer.c", "C", 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 29, 97
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_timer.h", "C++", 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 11, 43
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_video.c", "C", 0, 0, 309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 113, 496
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_video.h", "C++", 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 48, 176
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\icon.c", "C", 0, 0, 260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 263
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\info.c", "C", 0, 0, 4492, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 150, 4663
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\info.h", "C++", 0, 0, 0, 1296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 15, 1332
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_argv.c", "C", 0, 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 64, 266
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_argv.h", "C++", 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 13, 50
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_bbox.c", "C", 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 14, 55
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_bbox.h", "C++", 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 11, 48
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_cheat.c", "C", 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 20, 90
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_cheat.h", "C++", 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 16, 63
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_config.c", "C", 0, 0, 615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 948, 566, 2129
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_config.h", "C++", 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 7, 40
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_controls.c", "C", 0, 0, 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 73, 399
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_controls.h", "C++", 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 31, 169
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_fixed.c", "C", 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 18, 63
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_fixed.h", "C++", 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 12, 40
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_menu.c", "C", 0, 0, 1502, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 374, 2126
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_menu.h", "C++", 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 18, 62
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_misc.c", "C", 0, 0, 335, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 115, 537
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_misc.h", "C++", 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 8, 52
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_random.c", "C", 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 7, 66
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_random.h", "C++", 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 12, 40
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\memio.c", "C", 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 49, 198
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\memio.h", "C++", 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 7, 39
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\mus2mid.c", "C", 0, 0, 504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 158, 738
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\mus2mid.h", "C++", 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 9
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_client.h", "C++", 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 9, 53
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_dedicated.h", "C++", 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 6, 26
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_defs.h", "C++", 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 55, 249
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_gui.h", "C++", 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 7, 30
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_io.h", "C++", 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 7, 37
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_loop.h", "C++", 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 6, 28
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_packet.h", "C++", 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 11, 45
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_query.h", "C++", 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 10, 45
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_sdl.h", "C++", 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 6, 27
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_server.h", "C++", 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 14, 43
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_ceilng.c", "C", 0, 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 52, 325
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_doors.c", "C", 0, 0, 571, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 125, 779
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_enemy.c", "C", 0, 0, 1341, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 238, 428, 2007
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_floor.c", "C", 0, 0, 429, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 64, 547
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_inter.c", "C", 0, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 165, 923
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_inter.h", "C++", 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 10, 31
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_lights.c", "C", 0, 0, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 78, 351
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_local.h", "C++", 0, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 77, 298
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_map.c", "C", 0, 0, 828, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, 317, 1449
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_maputl.c", "C", 0, 0, 651, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, 190, 1002
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_mobj.c", "C", 0, 0, 654, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 184, 212, 1050
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_mobj.h", "C++", 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, 47, 285
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_plats.c", "C", 0, 0, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 58, 305
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_pspr.c", "C", 0, 0, 537, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 179, 889
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_pspr.h", "C++", 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 16, 72
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_saveg.c", "C", 0, 0, 975, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 435, 482, 1892
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_saveg.h", "C++", 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 18, 63
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_setup.c", "C", 0, 0, 547, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 175, 856
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_setup.h", "C++", 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 9, 38
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_sight.c", "C", 0, 0, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 72, 351
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_spec.c", "C", 0, 0, 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 307, 275, 1490
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_spec.h", "C++", 0, 0, 0, 380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 183, 638
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_switch.c", "C", 0, 0, 425, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 113, 649
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_telept.c", "C", 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 30, 134
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_tick.c", "C", 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 36, 152
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_tick.h", "C++", 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 10, 34
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_user.c", "C", 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 88, 380
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_bsp.c", "C", 0, 0, 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 123, 574
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_bsp.h", "C++", 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 62
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_data.c", "C", 0, 0, 543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 167, 203, 913
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_data.h", "C++", 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 13, 52
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_defs.h", "C++", 0, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 130, 449
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_draw.c", "C", 0, 0, 554, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 206, 976
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_draw.h", "C++", 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 32, 105
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_local.h", "C++", 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 9, 46
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_main.c", "C", 0, 0, 556, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 181, 892
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_main.h", "C++", 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 44, 161
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_plane.c", "C", 0, 0, 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 447
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_plane.h", "C++", 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 22, 77
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_segs.c", "C", 0, 0, 507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 134, 744
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_segs.h", "C++", 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 9, 34
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_sky.c", "C", 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 12, 53
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_sky.h", "C++", 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 10, 38
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_state.h", "C++", 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 43, 128
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_things.c", "C", 0, 0, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 207, 983
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_things.h", "C++", 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 18, 66
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\s_sound.c", "C", 0, 0, 431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 132, 671
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\s_sound.h", "C++", 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 28, 90
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\sha1.c", "C", 0, 0, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 32, 320
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\sha1.h", "C++", 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 8, 41
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\sounds.c", "C", 0, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 13, 230
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\sounds.h", "C++", 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 11, 228
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\st_lib.c", "C", 0, 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 64, 285
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\st_lib.h", "C++", 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 59, 210
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\st_stuff.c", "C", 0, 0, 903, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 298, 1417
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\st_stuff.h", "C++", 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 23, 90
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\statdump.c", "C", 0, 0, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 96, 393
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\statdump.h", "C++", 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 4, 24
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\tables.c", "C", 0, 0, 2173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 18, 2228
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\tables.h", "C++", 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 27, 97
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\v_patch.h", "C++", 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 9, 51
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\v_video.c", "C", 0, 0, 617, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 177, 933
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\v_video.h", "C++", 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 35, 109
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_checksum.c", "C", 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 19, 88
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_checksum.h", "C++", 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 6, 28
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_file.c", "C", 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 20, 96
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_file.h", "C++", 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 25, 79
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_file_stdc.c", "C", 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 26, 97
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_main.c", "C", 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 46, 199
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_main.h", "C++", 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 5, 25
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_merge.h", "C++", 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 13, 45
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_wad.c", "C", 0, 0, 353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 136, 613
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_wad.h", "C++", 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 79
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\wi_stuff.c", "C", 0, 0, 1215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 405, 1830
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\wi_stuff.h", "C++", 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 11, 49
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\z_zone.c", "C", 0, 0, 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 122, 489
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\z_zone.h", "C++", 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 16, 74
"d:\Projects\C\cleonos\clks\arch\aarch64\boot.c", "C", 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -7
"d:\Projects\C\cleonos\clks\arch\aarch64\startup\boot.c", "C", 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7
"d:\Projects\C\cleonos\clks\arch\x86_64\boot.c", "C", 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -7
"d:\Projects\C\cleonos\clks\arch\x86_64\exec_stack_call.S", "Go Assembly", 0, 0, 0, 0, 0, 0, 0, 0, -40, 0, 0, 0, 0, 0, -8, -48
"d:\Projects\C\cleonos\clks\arch\x86_64\interrupt\interrupt_stubs.S", "Go Assembly", 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 12, 120
"d:\Projects\C\cleonos\clks\arch\x86_64\interrupt_stubs.S", "Go Assembly", 0, 0, 0, 0, 0, 0, 0, 0, -108, 0, 0, 0, 0, 0, -12, -120
"d:\Projects\C\cleonos\clks\arch\x86_64\startup\boot.c", "C", 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7
"d:\Projects\C\cleonos\clks\arch\x86_64\startup\exec_stack_call.S", "Go Assembly", 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 8, 48
"d:\Projects\C\cleonos\clks\drivers\audio\pcspeaker.c", "C", 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, -126
"d:\Projects\C\cleonos\clks\drivers\serial\serial.c", "C", 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -68
"d:\Projects\C\cleonos\clks\drivers\video\font8x8.c", "C", 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, -75
"d:\Projects\C\cleonos\clks\drivers\video\font8x8.h", "C++", 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -8
"d:\Projects\C\cleonos\clks\drivers\video\framebuffer.c", "C", 0, 0, -251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, -321
"d:\Projects\C\cleonos\clks\drivers\video\psf_font.c", "C", 0, 0, -230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, -286
"d:\Projects\C\cleonos\clks\drivers\video\psf_font.h", "C++", 0, 0, 0, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -20
"d:\Projects\C\cleonos\clks\include\clks\exec.h", "C++", 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8
"d:\Projects\C\cleonos\clks\include\clks\keyboard.h", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1
"d:\Projects\C\cleonos\clks\include\clks\limine.h", "C++", 0, 0, 0, -20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20
"d:\Projects\C\cleonos\clks\include\clks\panic.h", "C++", 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5
"d:\Projects\C\cleonos\clks\include\clks\syscall.h", "C++", 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3
"d:\Projects\C\cleonos\clks\include\clks\task.h", "C++", 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5
"d:\Projects\C\cleonos\clks\include\clks\types.h", "C++", 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3
"d:\Projects\C\cleonos\clks\kernel\boot\limine\limine_requests.c", "C", 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 102
"d:\Projects\C\cleonos\clks\kernel\core\interrupts.c", "C", 0, 0, 307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 350
"d:\Projects\C\cleonos\clks\kernel\core\kmain.c", "C", 0, 0, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 77, 466
"d:\Projects\C\cleonos\clks\kernel\core\log.c", "C", 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 227
"d:\Projects\C\cleonos\clks\kernel\core\panic.c", "C", 0, 0, 527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 682
"d:\Projects\C\cleonos\clks\kernel\core\scheduler.c", "C", 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 180
"d:\Projects\C\cleonos\clks\kernel\core\service.c", "C", 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 141
"d:\Projects\C\cleonos\clks\kernel\desktop.c", "C", 0, 0, -321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -86, -407
"d:\Projects\C\cleonos\clks\kernel\driver.c", "C", 0, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, -218
"d:\Projects\C\cleonos\clks\kernel\elf64.c", "C", 0, 0, -239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, -312
"d:\Projects\C\cleonos\clks\kernel\elfrunner.c", "C", 0, 0, -30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, -38
"d:\Projects\C\cleonos\clks\kernel\exec.c", "C", 0, 0, -2037, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -555, -2593
"d:\Projects\C\cleonos\clks\kernel\fs.c", "C", 0, 0, -701, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -222, -923
"d:\Projects\C\cleonos\clks\kernel\hal\audio\pcspeaker.c", "C", 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 126
"d:\Projects\C\cleonos\clks\kernel\hal\serial\serial.c", "C", 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67
"d:\Projects\C\cleonos\clks\kernel\hal\video\font8x8.c", "C", 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 53
"d:\Projects\C\cleonos\clks\kernel\hal\video\font8x8.h", "C++", 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 8
"d:\Projects\C\cleonos\clks\kernel\hal\video\framebuffer.c", "C", 0, 0, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 316
"d:\Projects\C\cleonos\clks\kernel\hal\video\psf_font.c", "C", 0, 0, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 259
"d:\Projects\C\cleonos\clks\kernel\hal\video\psf_font.h", "C++", 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 20
"d:\Projects\C\cleonos\clks\kernel\heap.c", "C", 0, 0, -134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, -176
"d:\Projects\C\cleonos\clks\kernel\input\keyboard.c", "C", 0, 0, 370, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 465
"d:\Projects\C\cleonos\clks\kernel\input\mouse.c", "C", 0, 0, 243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 306
"d:\Projects\C\cleonos\clks\kernel\interface\desktop.c", "C", 0, 0, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 407
"d:\Projects\C\cleonos\clks\kernel\interface\shell.c", "C", 0, 0, 1232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 316, 1548
"d:\Projects\C\cleonos\clks\kernel\interface\tty.c", "C", 0, 0, 1137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 288, 1425
"d:\Projects\C\cleonos\clks\kernel\interrupts.c", "C", 0, 0, -317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -44, -361
"d:\Projects\C\cleonos\clks\kernel\kelf.c", "C", 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -53, -257
"d:\Projects\C\cleonos\clks\kernel\keyboard.c", "C", 0, 0, -379, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, -475
"d:\Projects\C\cleonos\clks\kernel\kmain.c", "C", 0, 0, -388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -77, -466
"d:\Projects\C\cleonos\clks\kernel\limine_requests.c", "C", 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, -102
"d:\Projects\C\cleonos\clks\kernel\log.c", "C", 0, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -48, -233
"d:\Projects\C\cleonos\clks\kernel\memory\heap.c", "C", 0, 0, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 181
"d:\Projects\C\cleonos\clks\kernel\memory\pmm.c", "C", 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 105
"d:\Projects\C\cleonos\clks\kernel\mouse.c", "C", 0, 0, -246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, -309
"d:\Projects\C\cleonos\clks\kernel\panic.c", "C", 0, 0, -546, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -155, -701
"d:\Projects\C\cleonos\clks\kernel\pmm.c", "C", 0, 0, -82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23, -105
"d:\Projects\C\cleonos\clks\kernel\ramdisk.c", "C", 0, 0, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, -222
"d:\Projects\C\cleonos\clks\kernel\runtime\driver.c", "C", 0, 0, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 215
"d:\Projects\C\cleonos\clks\kernel\runtime\elf64.c", "C", 0, 0, 279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 84, 364
"d:\Projects\C\cleonos\clks\kernel\runtime\elfrunner.c", "C", 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 38
"d:\Projects\C\cleonos\clks\kernel\runtime\exec.c", "C", 0, 0, 2179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 595, 2775
"d:\Projects\C\cleonos\clks\kernel\runtime\kelf.c", "C", 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 52, 251
"d:\Projects\C\cleonos\clks\kernel\runtime\syscall.c", "C", 0, 0, 2021, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 507, 2528
"d:\Projects\C\cleonos\clks\kernel\runtime\userland.c", "C", 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 184
"d:\Projects\C\cleonos\clks\kernel\scheduler.c", "C", 0, 0, -136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -44, -180
"d:\Projects\C\cleonos\clks\kernel\service.c", "C", 0, 0, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, -147
"d:\Projects\C\cleonos\clks\kernel\shell.c", "C", 0, 0, -1250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -317, -1567
"d:\Projects\C\cleonos\clks\kernel\storage\fs.c", "C", 0, 0, 684, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 906
"d:\Projects\C\cleonos\clks\kernel\storage\ramdisk.c", "C", 0, 0, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 222
"d:\Projects\C\cleonos\clks\kernel\support\libc_compat.c", "C", 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 32
"d:\Projects\C\cleonos\clks\kernel\support\string.c", "C", 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 70
"d:\Projects\C\cleonos\clks\kernel\syscall.c", "C", 0, 0, -1588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -401, -1989
"d:\Projects\C\cleonos\clks\kernel\tty.c", "C", 0, 0, -1188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -290, -1478
"d:\Projects\C\cleonos\clks\kernel\userland.c", "C", 0, 0, -145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -38, -183
"d:\Projects\C\cleonos\clks\lib\libc_compat.c", "C", 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, -32
"d:\Projects\C\cleonos\clks\lib\string.c", "C", 0, 0, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -70
"d:\Projects\C\cleonos\configs\menuconfig\clks_features.json", "JSON", 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 180
"d:\Projects\C\cleonos\docs\syscall.md", "Markdown", 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 60
"d:\Projects\C\cleonos\limine\.github\dependabot.yml", "YAML", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 1, 8
"d:\Projects\C\cleonos\limine\.github\workflows\binary-release.yml", "YAML", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 21, 99
"d:\Projects\C\cleonos\limine\.github\workflows\check.yml", "YAML", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 12, 46
"d:\Projects\C\cleonos\limine\.github\workflows\pr_branch_check.yml", "YAML", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 3, 16
"d:\Projects\C\cleonos\limine\.github\workflows\qa.yml", "YAML", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 5, 19
"d:\Projects\C\cleonos\limine\.github\workflows\release.yml", "YAML", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 17, 81
"d:\Projects\C\cleonos\limine\3RDPARTY.md", "Markdown", 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 68
"d:\Projects\C\cleonos\limine\CONFIG.md", "Markdown", 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 373
"d:\Projects\C\cleonos\limine\FAQ.md", "Markdown", 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 36
"d:\Projects\C\cleonos\limine\INSTALL.md", "Markdown", 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 52
"d:\Projects\C\cleonos\limine\README.md", "Markdown", 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 103
"d:\Projects\C\cleonos\limine\USAGE.md", "Markdown", 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 108
"d:\Projects\C\cleonos\limine\common\common.mk", "Makefile", 0, 0, 0, 0, 562, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 677
"d:\Projects\C\cleonos\limine\common\crypt\blake2b.c", "C", 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 39, 221
"d:\Projects\C\cleonos\limine\common\crypt\blake2b.h", "C++", 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 11
"d:\Projects\C\cleonos\limine\common\drivers\disk.h", "C++", 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 27
"d:\Projects\C\cleonos\limine\common\drivers\disk.s2.c", "C", 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 178, 857
"d:\Projects\C\cleonos\limine\common\drivers\edid.c", "C", 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 86
"d:\Projects\C\cleonos\limine\common\drivers\edid.h", "C++", 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 44
"d:\Projects\C\cleonos\limine\common\drivers\gop.c", "C", 0, 0, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 73, 382
"d:\Projects\C\cleonos\limine\common\drivers\gop.h", "C++", 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 20
"d:\Projects\C\cleonos\limine\common\drivers\serial.c", "C", 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 13, 51
"d:\Projects\C\cleonos\limine\common\drivers\serial.h", "C++", 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 16
"d:\Projects\C\cleonos\limine\common\drivers\vbe.c", "C", 0, 0, 307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 53, 368
"d:\Projects\C\cleonos\limine\common\drivers\vbe.h", "C++", 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 16
"d:\Projects\C\cleonos\limine\common\drivers\vga_textmode.c", "C", 0, 0, 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 71, 370
"d:\Projects\C\cleonos\limine\common\drivers\vga_textmode.h", "C++", 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 36
"d:\Projects\C\cleonos\limine\common\entry.s2.c", "C", 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 135
"d:\Projects\C\cleonos\limine\common\entry.s3.c", "C", 0, 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 249
"d:\Projects\C\cleonos\limine\common\fs\fat32.h", "C++", 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 12
"d:\Projects\C\cleonos\limine\common\fs\fat32.s2.c", "C", 0, 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 111, 727
"d:\Projects\C\cleonos\limine\common\fs\file.h", "C++", 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 46
"d:\Projects\C\cleonos\limine\common\fs\file.s2.c", "C", 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 185
"d:\Projects\C\cleonos\limine\common\fs\iso9660.h", "C++", 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 11
"d:\Projects\C\cleonos\limine\common\fs\iso9660.s2.c", "C", 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 94, 539
"d:\Projects\C\cleonos\limine\common\gensyms.sh", "Shell Script", 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 2, 17, 52
"d:\Projects\C\cleonos\limine\common\lib\acpi.c", "C", 0, 0, 344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 102, 473
"d:\Projects\C\cleonos\limine\common\lib\acpi.h", "C++", 0, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 30, 217
"d:\Projects\C\cleonos\limine\common\lib\bli.c", "C", 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 20, 91
"d:\Projects\C\cleonos\limine\common\lib\bli.h", "C++", 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 12
"d:\Projects\C\cleonos\limine\common\lib\config.c", "C", 0, 0, 628, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 126, 765
"d:\Projects\C\cleonos\limine\common\lib\config.h", "C++", 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 37
"d:\Projects\C\cleonos\limine\common\lib\elf.c", "C", 0, 0, 964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 212, 1203
"d:\Projects\C\cleonos\limine\common\lib\elf.h", "C++", 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 88
"d:\Projects\C\cleonos\limine\common\lib\elsewhere.c", "C", 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 17, 105
"d:\Projects\C\cleonos\limine\common\lib\elsewhere.h", "C++", 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 21
"d:\Projects\C\cleonos\limine\common\lib\fb.c", "C", 0, 0, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 17, 174
"d:\Projects\C\cleonos\limine\common\lib\fb.h", "C++", 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 48
"d:\Projects\C\cleonos\limine\common\lib\fdt.c", "C", 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 45
"d:\Projects\C\cleonos\limine\common\lib\fdt.h", "C++", 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 16
"d:\Projects\C\cleonos\limine\common\lib\getchar.c", "C", 0, 0, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 59, 366
"d:\Projects\C\cleonos\limine\common\lib\getchar.h", "C++", 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 29
"d:\Projects\C\cleonos\limine\common\lib\gterm.c", "C", 0, 0, 813, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 118, 940
"d:\Projects\C\cleonos\limine\common\lib\gterm.h", "C++", 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 35
"d:\Projects\C\cleonos\limine\common\lib\guid.c", "C", 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 96
"d:\Projects\C\cleonos\limine\common\lib\guid.h", "C++", 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 21
"d:\Projects\C\cleonos\limine\common\lib\image.c", "C", 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 18, 72
"d:\Projects\C\cleonos\limine\common\lib\image.h", "C++", 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 33
"d:\Projects\C\cleonos\limine\common\lib\libc.c", "C", 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 15, 132
"d:\Projects\C\cleonos\limine\common\lib\libc.h", "C++", 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 37
"d:\Projects\C\cleonos\limine\common\lib\libc.s2.c", "C", 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 26, 150
"d:\Projects\C\cleonos\limine\common\lib\macros.aarch64_asm.h", "C++", 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 53
"d:\Projects\C\cleonos\limine\common\lib\memory.s2.c", "C", 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 54
"d:\Projects\C\cleonos\limine\common\lib\misc.c", "C", 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 90, 420
"d:\Projects\C\cleonos\limine\common\lib\misc.h", "C++", 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 154
"d:\Projects\C\cleonos\limine\common\lib\misc.s2.c", "C", 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 129
"d:\Projects\C\cleonos\limine\common\lib\panic.s2.c", "C", 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 12, 90
"d:\Projects\C\cleonos\limine\common\lib\part.h", "C++", 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 23, 111
"d:\Projects\C\cleonos\limine\common\lib\part.s2.c", "C", 0, 0, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 121, 616
"d:\Projects\C\cleonos\limine\common\lib\pe.c", "C", 0, 0, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 98, 501
"d:\Projects\C\cleonos\limine\common\lib\pe.h", "C++", 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13
"d:\Projects\C\cleonos\limine\common\lib\print.h", "C++", 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 17
"d:\Projects\C\cleonos\limine\common\lib\print.s2.c", "C", 0, 0, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 236
"d:\Projects\C\cleonos\limine\common\lib\rand.c", "C", 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 25, 142
"d:\Projects\C\cleonos\limine\common\lib\rand.h", "C++", 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 12
"d:\Projects\C\cleonos\limine\common\lib\real.h", "C++", 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 35
"d:\Projects\C\cleonos\limine\common\lib\stb_image.c", "C", 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\limine\common\lib\term.c", "C", 0, 0, 266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 49, 320
"d:\Projects\C\cleonos\limine\common\lib\term.h", "C++", 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 60
"d:\Projects\C\cleonos\limine\common\lib\time.c", "C", 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 15, 76
"d:\Projects\C\cleonos\limine\common\lib\time.h", "C++", 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9
"d:\Projects\C\cleonos\limine\common\lib\trace.h", "C++", 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9
"d:\Projects\C\cleonos\limine\common\lib\trace.s2.c", "C", 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 88
"d:\Projects\C\cleonos\limine\common\lib\uri.c", "C", 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 54, 287
"d:\Projects\C\cleonos\limine\common\lib\uri.h", "C++", 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 11
"d:\Projects\C\cleonos\limine\common\libc-compat\stdlib.h", "C++", 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\limine\common\libc-compat\string.h", "C++", 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 24
"d:\Projects\C\cleonos\limine\common\menu.c", "C", 0, 0, 1378, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 150, 1558
"d:\Projects\C\cleonos\limine\common\menu.h", "C++", 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 21
"d:\Projects\C\cleonos\limine\common\mm\mtrr.c", "C", 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 32, 141
"d:\Projects\C\cleonos\limine\common\mm\mtrr.h", "C++", 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 12
"d:\Projects\C\cleonos\limine\common\mm\pmm.c", "C", 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 16, 89
"d:\Projects\C\cleonos\limine\common\mm\pmm.h", "C++", 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 81
"d:\Projects\C\cleonos\limine\common\mm\pmm.s2.c", "C", 0, 0, 662, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 192, 891
"d:\Projects\C\cleonos\limine\common\mm\vmm.c", "C", 0, 0, 416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 110, 556
"d:\Projects\C\cleonos\limine\common\mm\vmm.h", "C++", 0, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 45, 176
"d:\Projects\C\cleonos\limine\common\protos\chainload.c", "C", 0, 0, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 78, 368
"d:\Projects\C\cleonos\limine\common\protos\chainload.h", "C++", 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9
"d:\Projects\C\cleonos\limine\common\protos\efi_boot_entry.c", "C", 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 26, 126
"d:\Projects\C\cleonos\limine\common\protos\efi_boot_entry.h", "C++", 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9
"d:\Projects\C\cleonos\limine\common\protos\limine.c", "C", 0, 0, 1523, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 331, 1934
"d:\Projects\C\cleonos\limine\common\protos\limine.h", "C++", 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9
"d:\Projects\C\cleonos\limine\common\protos\linux.h", "C++", 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 14, 74
"d:\Projects\C\cleonos\limine\common\protos\linux_risc.c", "C", 0, 0, 412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 99, 533
"d:\Projects\C\cleonos\limine\common\protos\linux_x86.c", "C", 0, 0, 527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 96, 664
"d:\Projects\C\cleonos\limine\common\protos\multiboot.h", "C++", 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 18
"d:\Projects\C\cleonos\limine\common\protos\multiboot1.c", "C", 0, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 105, 513
"d:\Projects\C\cleonos\limine\common\protos\multiboot1.h", "C++", 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 101
"d:\Projects\C\cleonos\limine\common\protos\multiboot2.c", "C", 0, 0, 782, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 182, 1041
"d:\Projects\C\cleonos\limine\common\protos\multiboot2.h", "C++", 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 58, 419
"d:\Projects\C\cleonos\limine\common\pxe\pxe.h", "C++", 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 112
"d:\Projects\C\cleonos\limine\common\pxe\pxe.s2.c", "C", 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 18, 73
"d:\Projects\C\cleonos\limine\common\pxe\tftp.h", "C++", 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 47
"d:\Projects\C\cleonos\limine\common\pxe\tftp.s2.c", "C", 0, 0, 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 52, 268
"d:\Projects\C\cleonos\limine\common\stb_image.patch", "Diff", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 7, 10, 91
"d:\Projects\C\cleonos\limine\common\sys\a20.h", "C++", 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10
"d:\Projects\C\cleonos\limine\common\sys\a20.s2.c", "C", 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 21, 93
"d:\Projects\C\cleonos\limine\common\sys\cpu.h", "C++", 0, 0, 0, 429, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 82, 513
"d:\Projects\C\cleonos\limine\common\sys\cpu.s2.c", "C", 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 14, 78
"d:\Projects\C\cleonos\limine\common\sys\cpu_riscv.c", "C", 0, 0, 353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 65, 428
"d:\Projects\C\cleonos\limine\common\sys\e820.h", "C++", 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 14
"d:\Projects\C\cleonos\limine\common\sys\e820.s2.c", "C", 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 45
"d:\Projects\C\cleonos\limine\common\sys\exceptions.s2.c", "C", 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 51
"d:\Projects\C\cleonos\limine\common\sys\gdt.h", "C++", 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 30
"d:\Projects\C\cleonos\limine\common\sys\gdt.s2.c", "C", 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 96
"d:\Projects\C\cleonos\limine\common\sys\idt.c", "C", 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 16, 72
"d:\Projects\C\cleonos\limine\common\sys\idt.h", "C++", 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 60
"d:\Projects\C\cleonos\limine\common\sys\idt.s2.c", "C", 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 36
"d:\Projects\C\cleonos\limine\common\sys\iommu.c", "C", 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 30, 145
"d:\Projects\C\cleonos\limine\common\sys\iommu.h", "C++", 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\limine\common\sys\lapic.c", "C", 0, 0, 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 69, 512
"d:\Projects\C\cleonos\limine\common\sys\lapic.h", "C++", 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 39
"d:\Projects\C\cleonos\limine\common\sys\pic.c", "C", 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 11, 49
"d:\Projects\C\cleonos\limine\common\sys\pic.h", "C++", 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 12
"d:\Projects\C\cleonos\limine\common\sys\sbi.h", "C++", 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 33
"d:\Projects\C\cleonos\limine\common\sys\smp.c", "C", 0, 0, 917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 259, 1230
"d:\Projects\C\cleonos\limine\common\sys\smp.h", "C++", 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 51
"d:\Projects\C\cleonos\limine\decompressor\decompressor.mk", "Makefile", 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 85
"d:\Projects\C\cleonos\limine\decompressor\main.c", "C", 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5, 38
"d:\Projects\C\cleonos\limine\decompressor\memory.c", "C", 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 54
"d:\Projects\C\cleonos\limine\decompressor\tinf.patch", "Diff", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 3, 10, 55
"d:\Projects\C\cleonos\limine\host\hgen.sh", "Shell Script", 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 1, 6, 17
"d:\Projects\C\cleonos\limine\host\host.mk", "Makefile", 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 20
"d:\Projects\C\cleonos\limine\host\limine.c", "C", 0, 0, 1192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 225, 1449
"d:\Projects\C\cleonos\limine\test.mk", "Makefile", 0, 0, 0, 0, 263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 279
"d:\Projects\C\cleonos\limine\test\e9print.c", "C", 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 99
"d:\Projects\C\cleonos\limine\test\e9print.h", "C++", 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 10
"d:\Projects\C\cleonos\limine\test\limine.c", "C", 0, 0, 624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 706
"d:\Projects\C\cleonos\limine\test\limine.conf", "Properties", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 1, 19, 60
"d:\Projects\C\cleonos\limine\test\memory.c", "C", 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 53
"d:\Projects\C\cleonos\limine\test\multiboot.c", "C", 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 24, 93
"d:\Projects\C\cleonos\limine\test\multiboot2.c", "C", 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 36, 182
"d:\Projects\C\cleonos\limine\test\test.mk", "Makefile", 0, 0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 164
"d:\Projects\C\cleonos\limine\version.sh", "Shell Script", 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 1, 10, 30
"d:\Projects\C\cleonos\scripts\menuconfig.py", "Python", 0, 622, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 722
"d:\Projects\C\cleonos\wine\README.md", "Markdown", 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4
"d:\Projects\C\cleonos\wine\cleonos_wine_lib\constants.py", "Python", 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 42
"d:\Projects\C\cleonos\wine\cleonos_wine_lib\runner.py", "Python", 0, 469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 560
"d:\Projects\C\cleonos\wine\cleonos_wine_lib\state.py", "Python", 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 31, 151
"Total", "-", 692, 1245, 65649, 7861, 1086, 339, 180, 130, 0, 62, 116, 319, 40, 13900, 20413, 112032
1 filename language Markdown Python C C++ Makefile XML JSON CMake Go Assembly Shell Script Diff YAML Properties comment blank total
2 d:\Projects\C\cleonos\.github\workflows\style-check.yml YAML 0 0 0 0 0 0 0 0 0 0 0 109 0 0 19 128
3 d:\Projects\C\cleonos\CMakeLists.txt CMake 0 0 0 0 0 0 0 130 0 0 0 0 0 0 10 140
4 d:\Projects\C\cleonos\cleonos\c\apps\ansi_main.c C 0 0 2 0 0 0 0 0 0 0 0 0 0 0 -2 0
5 d:\Projects\C\cleonos\cleonos\c\apps\ansitest_main.c C 0 0 3 0 0 0 0 0 0 0 0 0 0 0 -2 1
6 d:\Projects\C\cleonos\cleonos\c\apps\append_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
7 d:\Projects\C\cleonos\cleonos\c\apps\bmpview_main.c C 0 0 331 0 0 0 0 0 0 0 0 0 0 0 81 412
8 d:\Projects\C\cleonos\cleonos\c\apps\cat_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
9 d:\Projects\C\cleonos\cleonos\c\apps\cd_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
10 d:\Projects\C\cleonos\cleonos\c\apps\clear_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
11 d:\Projects\C\cleonos\cleonos\c\apps\cmd_runtime.c C 0 0 -5 0 0 0 0 0 0 0 0 0 0 0 0 -5
12 d:\Projects\C\cleonos\cleonos\c\apps\cmd_runtime.h C++ 0 0 0 -4 0 0 0 0 0 0 0 0 0 0 0 -4
13 d:\Projects\C\cleonos\cleonos\c\apps\cp_main.c C 0 0 -2 0 0 0 0 0 0 0 0 0 0 0 -2 -4
14 d:\Projects\C\cleonos\cleonos\c\apps\cut_main.c C 0 0 -4 0 0 0 0 0 0 0 0 0 0 0 -1 -5
15 d:\Projects\C\cleonos\cleonos\c\apps\dmesg_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
16 d:\Projects\C\cleonos\cleonos\c\apps\doom\doom_compat.c C 0 0 1196 0 0 0 0 0 0 0 0 0 0 0 277 1473
17 d:\Projects\C\cleonos\cleonos\c\apps\doom\doom_shim.h C++ 0 0 0 17 0 0 0 0 0 0 0 0 0 1 3 21
18 d:\Projects\C\cleonos\cleonos\c\apps\doom\doomgeneric_clks.c C 0 0 153 0 0 0 0 0 0 0 0 0 0 0 48 201
19 d:\Projects\C\cleonos\cleonos\c\apps\doom_main.c C 0 0 66 0 0 0 0 0 0 0 0 0 0 0 16 82
20 d:\Projects\C\cleonos\cleonos\c\apps\exec_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
21 d:\Projects\C\cleonos\cleonos\c\apps\exit_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
22 d:\Projects\C\cleonos\cleonos\c\apps\fastfetch_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
23 d:\Projects\C\cleonos\cleonos\c\apps\fg_main.c C 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1
24 d:\Projects\C\cleonos\cleonos\c\apps\fsstat_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
25 d:\Projects\C\cleonos\cleonos\c\apps\grep_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
26 d:\Projects\C\cleonos\cleonos\c\apps\head_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1
27 d:\Projects\C\cleonos\cleonos\c\apps\help_main.c C 0 0 3 0 0 0 0 0 0 0 0 0 0 0 -1 2
28 d:\Projects\C\cleonos\cleonos\c\apps\kbdstat_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
29 d:\Projects\C\cleonos\cleonos\c\apps\kdbg_main.c C 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1
30 d:\Projects\C\cleonos\cleonos\c\apps\ls_main.c C 0 0 -10 0 0 0 0 0 0 0 0 0 0 0 -2 -12
31 d:\Projects\C\cleonos\cleonos\c\apps\memstat_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
32 d:\Projects\C\cleonos\cleonos\c\apps\mkdir_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
33 d:\Projects\C\cleonos\cleonos\c\apps\mv_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
34 d:\Projects\C\cleonos\cleonos\c\apps\pid_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
35 d:\Projects\C\cleonos\cleonos\c\apps\pwd_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
36 d:\Projects\C\cleonos\cleonos\c\apps\qrcode\qrcodegen.c C 0 0 759 0 0 0 0 0 0 0 0 0 0 176 96 1031
37 d:\Projects\C\cleonos\cleonos\c\apps\qrcode\qrcodegen.h C++ 0 0 0 62 0 0 0 0 0 0 0 0 0 268 34 364
38 d:\Projects\C\cleonos\cleonos\c\apps\qrcode_main.c C 0 0 207 0 0 0 0 0 0 0 0 0 0 1 58 266
39 d:\Projects\C\cleonos\cleonos\c\apps\restart_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
40 d:\Projects\C\cleonos\cleonos\c\apps\rm_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
41 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_cmd.c C 0 0 -35 0 0 0 0 0 0 0 0 0 0 0 -4 -39
42 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_external.c C 0 0 -10 0 0 0 0 0 0 0 0 0 0 0 0 -10
43 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_input.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1
44 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_internal.h C++ 0 0 0 -5 0 0 0 0 0 0 0 0 0 0 -1 -6
45 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_path.c C 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1
46 d:\Projects\C\cleonos\cleonos\c\apps\shell_main.c C 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1
47 d:\Projects\C\cleonos\cleonos\c\apps\shstat_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
48 d:\Projects\C\cleonos\cleonos\c\apps\shutdown_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
49 d:\Projects\C\cleonos\cleonos\c\apps\sleep_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
50 d:\Projects\C\cleonos\cleonos\c\apps\sort_main.c C 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 0
51 d:\Projects\C\cleonos\cleonos\c\apps\spawn_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
52 d:\Projects\C\cleonos\cleonos\c\apps\spin_main.c C 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1
53 d:\Projects\C\cleonos\cleonos\c\apps\stats_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
54 d:\Projects\C\cleonos\cleonos\c\apps\sysstat_main.c C 0 0 74 0 0 0 0 0 0 0 0 0 0 0 0 74
55 d:\Projects\C\cleonos\cleonos\c\apps\tail_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1
56 d:\Projects\C\cleonos\cleonos\c\apps\taskstat_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
57 d:\Projects\C\cleonos\cleonos\c\apps\top_main.c C 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1
58 d:\Projects\C\cleonos\cleonos\c\apps\touch_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
59 d:\Projects\C\cleonos\cleonos\c\apps\tty_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
60 d:\Projects\C\cleonos\cleonos\c\apps\uniq_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1
61 d:\Projects\C\cleonos\cleonos\c\apps\userstat_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
62 d:\Projects\C\cleonos\cleonos\c\apps\wait_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
63 d:\Projects\C\cleonos\cleonos\c\apps\wavplay_main.c C 0 0 -8 0 0 0 0 0 0 0 0 0 0 0 0 -8
64 d:\Projects\C\cleonos\cleonos\c\apps\wc_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1
65 d:\Projects\C\cleonos\cleonos\c\apps\write_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
66 d:\Projects\C\cleonos\cleonos\c\apps\yield_main.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2
67 d:\Projects\C\cleonos\cleonos\c\include\cleonos_syscall.h C++ 0 0 0 17 0 0 0 0 0 0 0 0 0 0 2 19
68 d:\Projects\C\cleonos\cleonos\c\src\stdio.c C 0 0 177 0 0 0 0 0 0 0 0 0 0 0 35 212
69 d:\Projects\C\cleonos\cleonos\c\src\syscall.c C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2
70 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\README.md Markdown 51 0 0 0 0 0 0 0 0 0 0 0 0 0 17 68
71 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\Makefile Makefile 0 0 0 0 34 0 0 0 0 0 0 0 0 7 14 55
72 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\am_map.c C 0 0 970 0 0 0 0 0 0 0 0 0 0 162 224 1356
73 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\am_map.h C++ 0 0 0 13 0 0 0 0 0 0 0 0 0 24 13 50
74 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\config.h C++ 0 0 0 33 0 0 0 0 0 0 0 0 0 34 34 101
75 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_englsh.h C++ 0 0 0 522 0 0 0 0 0 0 0 0 0 65 107 694
76 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_event.c C 0 0 22 0 0 0 0 0 0 0 0 0 0 27 15 64
77 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_event.h C++ 0 0 0 43 0 0 0 0 0 0 0 0 0 66 29 138
78 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_items.c C 0 0 77 0 0 0 0 0 0 0 0 0 0 38 14 129
79 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_items.h C++ 0 0 0 14 0 0 0 0 0 0 0 0 0 18 10 42
80 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_iwad.c C 0 0 509 0 0 0 0 0 0 0 0 0 0 133 207 849
81 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_iwad.h C++ 0 0 0 28 0 0 0 0 0 0 0 0 0 16 9 53
82 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_loop.c C 0 0 464 0 0 0 0 0 0 0 0 0 0 169 194 827
83 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_loop.h C++ 0 0 0 23 0 0 0 0 0 0 0 0 0 34 25 82
84 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_main.c C 0 0 1089 0 0 0 0 0 0 0 0 0 0 418 339 1846
85 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_main.h C++ 0 0 0 11 0 0 0 0 0 0 0 0 0 24 16 51
86 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_mode.c C 0 0 150 0 0 0 0 0 0 0 0 0 0 28 32 210
87 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_mode.h C++ 0 0 0 58 0 0 0 0 0 0 0 0 0 24 17 99
88 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_net.c C 0 0 158 0 0 0 0 0 0 0 0 0 0 61 63 282
89 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_player.h C++ 0 0 0 82 0 0 0 0 0 0 0 0 0 77 51 210
90 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_textur.h C++ 0 0 0 10 0 0 0 0 0 0 0 0 0 22 12 44
91 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_think.h C++ 0 0 0 19 0 0 0 0 0 0 0 0 0 29 21 69
92 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_ticcmd.h C++ 0 0 0 17 0 0 0 0 0 0 0 0 0 26 14 57
93 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\deh_main.h C++ 0 0 0 19 0 0 0 0 0 0 0 0 0 19 11 49
94 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\deh_misc.h C++ 0 0 0 55 0 0 0 0 0 0 0 0 0 17 12 84
95 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\deh_str.h C++ 0 0 0 18 0 0 0 0 0 0 0 0 0 17 13 48
96 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doom.h C++ 0 0 0 4 0 0 0 0 0 0 0 0 0 27 12 43
97 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomdata.h C++ 0 0 0 93 0 0 0 0 0 0 0 0 0 70 51 214
98 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomdef.c C 0 0 1 0 0 0 0 0 0 0 0 0 0 20 8 29
99 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomdef.h C++ 0 0 0 86 0 0 0 0 0 0 0 0 0 48 35 169
100 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomfeatures.h C++ 0 0 0 6 0 0 0 0 0 0 0 0 0 22 13 41
101 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric.c C 0 0 15 0 0 0 0 0 0 0 0 0 0 1 12 28
102 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric.h C++ 0 0 0 31 0 0 0 0 0 0 0 0 0 1 18 50
103 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric.vcxproj XML 0 0 0 0 0 339 0 0 0 0 0 0 0 0 0 339
104 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_allegro.c C 0 0 319 0 0 0 0 0 0 0 0 0 0 16 119 454
105 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_emscripten.c C 0 0 184 0 0 0 0 0 0 0 0 0 0 5 31 220
106 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_linuxvt.c C 0 0 412 0 0 0 0 0 0 0 0 0 0 39 78 529
107 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_sdl.c C 0 0 173 0 0 0 0 0 0 0 0 0 0 9 29 211
108 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_soso.c C 0 0 217 0 0 0 0 0 0 0 0 0 0 6 54 277
109 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_sosox.c C 0 0 197 0 0 0 0 0 0 0 0 0 0 3 48 248
110 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_win.c C 0 0 171 0 0 0 0 0 0 0 0 0 0 2 37 210
111 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_xlib.c C 0 0 161 0 0 0 0 0 0 0 0 0 0 7 46 214
112 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomkeys.h C++ 0 0 0 61 0 0 0 0 0 0 0 0 0 23 14 98
113 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomstat.c C 0 0 7 0 0 0 0 0 0 0 0 0 0 19 10 36
114 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomstat.h C++ 0 0 0 77 0 0 0 0 0 0 0 0 0 108 97 282
115 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomtype.h C++ 0 0 0 40 0 0 0 0 0 0 0 0 0 35 30 105
116 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\dstrings.c C 0 0 37 0 0 0 0 0 0 0 0 0 0 22 15 74
117 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\dstrings.h C++ 0 0 0 8 0 0 0 0 0 0 0 0 0 22 12 42
118 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\dummy.c C 0 0 8 0 0 0 0 0 0 0 0 0 0 30 16 54
119 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\f_finale.c C 0 0 528 0 0 0 0 0 0 0 0 0 0 77 114 719
120 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\f_finale.h C++ 0 0 0 9 0 0 0 0 0 0 0 0 0 23 14 46
121 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\f_wipe.c C 0 0 220 0 0 0 0 0 0 0 0 0 0 31 44 295
122 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\f_wipe.h C++ 0 0 0 29 0 0 0 0 0 0 0 0 0 22 13 64
123 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\g_game.c C 0 0 1572 0 0 0 0 0 0 0 0 0 0 319 413 2304
124 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\g_game.h C++ 0 0 0 29 0 0 0 0 0 0 0 0 0 28 24 81
125 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\gusconf.c C 0 0 190 0 0 0 0 0 0 0 0 0 0 24 58 272
126 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\gusconf.h C++ 0 0 0 7 0 0 0 0 0 0 0 0 0 16 7 30
127 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\hu_lib.c C 0 0 252 0 0 0 0 0 0 0 0 0 0 32 64 348
128 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\hu_lib.h C++ 0 0 0 77 0 0 0 0 0 0 0 0 0 59 47 183
129 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\hu_stuff.c C 0 0 493 0 0 0 0 0 0 0 0 0 0 51 98 642
130 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\hu_stuff.h C++ 0 0 0 21 0 0 0 0 0 0 0 0 0 23 16 60
131 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_allegromusic.c C 0 0 192 0 0 0 0 0 0 0 0 0 0 38 79 309
132 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_allegrosound.c C 0 0 255 0 0 0 0 0 0 0 0 0 0 73 106 434
133 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_cdmus.c C 0 0 159 0 0 0 0 0 0 0 0 0 0 31 54 244
134 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_cdmus.h C++ 0 0 0 20 0 0 0 0 0 0 0 0 0 15 7 42
135 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_endoom.c C 0 0 48 0 0 0 0 0 0 0 0 0 0 26 28 102
136 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_endoom.h C++ 0 0 0 4 0 0 0 0 0 0 0 0 0 19 7 30
137 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_input.c C 0 0 261 0 0 0 0 0 0 0 0 0 0 45 36 342
138 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_joystick.c C 0 0 254 0 0 0 0 0 0 0 0 0 0 38 68 360
139 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_joystick.h C++ 0 0 0 21 0 0 0 0 0 0 0 0 0 33 17 71
140 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_scale.c C 0 0 889 0 0 0 0 0 0 0 0 0 0 225 339 1453
141 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_scale.h C++ 0 0 0 21 0 0 0 0 0 0 0 0 0 20 13 54
142 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_sdlmusic.c C 0 0 887 0 0 0 0 0 0 0 0 0 0 177 253 1317
143 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_sdlsound.c C 0 0 616 0 0 0 0 0 0 0 0 0 0 195 266 1077
144 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_sound.c C 0 0 284 0 0 0 0 0 0 0 0 0 0 62 75 421
145 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_sound.h C++ 0 0 0 104 0 0 0 0 0 0 0 0 0 71 82 257
146 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_swap.h C++ 0 0 0 34 0 0 0 0 0 0 0 0 0 18 22 74
147 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_system.c C 0 0 347 0 0 0 0 0 0 0 0 0 0 112 120 579
148 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_system.h C++ 0 0 0 19 0 0 0 0 0 0 0 0 0 37 29 85
149 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_timer.c C 0 0 36 0 0 0 0 0 0 0 0 0 0 32 29 97
150 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_timer.h C++ 0 0 0 9 0 0 0 0 0 0 0 0 0 23 11 43
151 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_video.c C 0 0 309 0 0 0 0 0 0 0 0 0 0 74 113 496
152 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_video.h C++ 0 0 0 63 0 0 0 0 0 0 0 0 0 65 48 176
153 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\icon.c C 0 0 260 0 0 0 0 0 0 0 0 0 0 0 3 263
154 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\info.c C 0 0 4492 0 0 0 0 0 0 0 0 0 0 21 150 4663
155 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\info.h C++ 0 0 0 1296 0 0 0 0 0 0 0 0 0 21 15 1332
156 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_argv.c C 0 0 150 0 0 0 0 0 0 0 0 0 0 52 64 266
157 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_argv.h C++ 0 0 0 11 0 0 0 0 0 0 0 0 0 26 13 50
158 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_bbox.c C 0 0 21 0 0 0 0 0 0 0 0 0 0 20 14 55
159 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_bbox.h C++ 0 0 0 18 0 0 0 0 0 0 0 0 0 19 11 48
160 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_cheat.c C 0 0 38 0 0 0 0 0 0 0 0 0 0 32 20 90
161 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_cheat.h C++ 0 0 0 24 0 0 0 0 0 0 0 0 0 23 16 63
162 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_config.c C 0 0 615 0 0 0 0 0 0 0 0 0 0 948 566 2129
163 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_config.h C++ 0 0 0 16 0 0 0 0 0 0 0 0 0 17 7 40
164 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_controls.c C 0 0 269 0 0 0 0 0 0 0 0 0 0 57 73 399
165 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_controls.h C++ 0 0 0 121 0 0 0 0 0 0 0 0 0 17 31 169
166 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_fixed.c C 0 0 24 0 0 0 0 0 0 0 0 0 0 21 18 63
167 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_fixed.h C++ 0 0 0 8 0 0 0 0 0 0 0 0 0 20 12 40
168 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_menu.c C 0 0 1502 0 0 0 0 0 0 0 0 0 0 250 374 2126
169 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_menu.h C++ 0 0 0 11 0 0 0 0 0 0 0 0 0 33 18 62
170 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_misc.c C 0 0 335 0 0 0 0 0 0 0 0 0 0 87 115 537
171 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_misc.h C++ 0 0 0 27 0 0 0 0 0 0 0 0 0 17 8 52
172 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_random.c C 0 0 37 0 0 0 0 0 0 0 0 0 0 22 7 66
173 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_random.h C++ 0 0 0 7 0 0 0 0 0 0 0 0 0 21 12 40
174 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\memio.c C 0 0 122 0 0 0 0 0 0 0 0 0 0 27 49 198
175 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\memio.h C++ 0 0 0 18 0 0 0 0 0 0 0 0 0 14 7 39
176 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\mus2mid.c C 0 0 504 0 0 0 0 0 0 0 0 0 0 76 158 738
177 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\mus2mid.h C++ 0 0 0 6 0 0 0 0 0 0 0 0 0 0 3 9
178 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_client.h C++ 0 0 0 29 0 0 0 0 0 0 0 0 0 15 9 53
179 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_dedicated.h C++ 0 0 0 4 0 0 0 0 0 0 0 0 0 16 6 26
180 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_defs.h C++ 0 0 0 148 0 0 0 0 0 0 0 0 0 46 55 249
181 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_gui.h C++ 0 0 0 5 0 0 0 0 0 0 0 0 0 18 7 30
182 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_io.h C++ 0 0 0 14 0 0 0 0 0 0 0 0 0 16 7 37
183 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_loop.h C++ 0 0 0 6 0 0 0 0 0 0 0 0 0 16 6 28
184 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_packet.h C++ 0 0 0 18 0 0 0 0 0 0 0 0 0 16 11 45
185 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_query.h C++ 0 0 0 19 0 0 0 0 0 0 0 0 0 16 10 45
186 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_sdl.h C++ 0 0 0 5 0 0 0 0 0 0 0 0 0 16 6 27
187 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_server.h C++ 0 0 0 8 0 0 0 0 0 0 0 0 0 21 14 43
188 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_ceilng.c C 0 0 226 0 0 0 0 0 0 0 0 0 0 47 52 325
189 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_doors.c C 0 0 571 0 0 0 0 0 0 0 0 0 0 83 125 779
190 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_enemy.c C 0 0 1341 0 0 0 0 0 0 0 0 0 0 238 428 2007
191 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_floor.c C 0 0 429 0 0 0 0 0 0 0 0 0 0 54 64 547
192 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_inter.c C 0 0 643 0 0 0 0 0 0 0 0 0 0 115 165 923
193 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_inter.h C++ 0 0 0 4 0 0 0 0 0 0 0 0 0 17 10 31
194 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_lights.c C 0 0 201 0 0 0 0 0 0 0 0 0 0 72 78 351
195 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_local.h C++ 0 0 0 155 0 0 0 0 0 0 0 0 0 66 77 298
196 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_map.c C 0 0 828 0 0 0 0 0 0 0 0 0 0 304 317 1449
197 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_maputl.c C 0 0 651 0 0 0 0 0 0 0 0 0 0 161 190 1002
198 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_mobj.c C 0 0 654 0 0 0 0 0 0 0 0 0 0 184 212 1050
199 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_mobj.h C++ 0 0 0 77 0 0 0 0 0 0 0 0 0 161 47 285
200 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_plats.c C 0 0 218 0 0 0 0 0 0 0 0 0 0 29 58 305
201 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_pspr.c C 0 0 537 0 0 0 0 0 0 0 0 0 0 173 179 889
202 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_pspr.h C++ 0 0 0 21 0 0 0 0 0 0 0 0 0 35 16 72
203 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_saveg.c C 0 0 975 0 0 0 0 0 0 0 0 0 0 435 482 1892
204 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_saveg.h C++ 0 0 0 21 0 0 0 0 0 0 0 0 0 24 18 63
205 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_setup.c C 0 0 547 0 0 0 0 0 0 0 0 0 0 134 175 856
206 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_setup.h C++ 0 0 0 10 0 0 0 0 0 0 0 0 0 19 9 38
207 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_sight.c C 0 0 204 0 0 0 0 0 0 0 0 0 0 75 72 351
208 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_spec.c C 0 0 908 0 0 0 0 0 0 0 0 0 0 307 275 1490
209 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_spec.h C++ 0 0 0 380 0 0 0 0 0 0 0 0 0 75 183 638
210 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_switch.c C 0 0 425 0 0 0 0 0 0 0 0 0 0 111 113 649
211 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_telept.c C 0 0 69 0 0 0 0 0 0 0 0 0 0 35 30 134
212 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_tick.c C 0 0 63 0 0 0 0 0 0 0 0 0 0 53 36 152
213 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_tick.h C++ 0 0 0 4 0 0 0 0 0 0 0 0 0 20 10 34
214 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_user.c C 0 0 219 0 0 0 0 0 0 0 0 0 0 73 88 380
215 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_bsp.c C 0 0 329 0 0 0 0 0 0 0 0 0 0 122 123 574
216 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_bsp.h C++ 0 0 0 23 0 0 0 0 0 0 0 0 0 19 20 62
217 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_data.c C 0 0 543 0 0 0 0 0 0 0 0 0 0 167 203 913
218 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_data.h C++ 0 0 0 14 0 0 0 0 0 0 0 0 0 25 13 52
219 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_defs.h C++ 0 0 0 164 0 0 0 0 0 0 0 0 0 155 130 449
220 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_draw.c C 0 0 554 0 0 0 0 0 0 0 0 0 0 216 206 976
221 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_draw.h C++ 0 0 0 40 0 0 0 0 0 0 0 0 0 33 32 105
222 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_local.h C++ 0 0 0 13 0 0 0 0 0 0 0 0 0 24 9 46
223 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_main.c C 0 0 556 0 0 0 0 0 0 0 0 0 0 155 181 892
224 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_main.h C++ 0 0 0 72 0 0 0 0 0 0 0 0 0 45 44 161
225 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_plane.c C 0 0 278 0 0 0 0 0 0 0 0 0 0 84 85 447
226 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_plane.h C++ 0 0 0 37 0 0 0 0 0 0 0 0 0 18 22 77
227 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_segs.c C 0 0 507 0 0 0 0 0 0 0 0 0 0 103 134 744
228 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_segs.h C++ 0 0 0 8 0 0 0 0 0 0 0 0 0 17 9 34
229 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_sky.c C 0 0 10 0 0 0 0 0 0 0 0 0 0 31 12 53
230 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_sky.h C++ 0 0 0 8 0 0 0 0 0 0 0 0 0 20 10 38
231 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_state.h C++ 0 0 0 49 0 0 0 0 0 0 0 0 0 36 43 128
232 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_things.c C 0 0 605 0 0 0 0 0 0 0 0 0 0 171 207 983
233 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_things.h C++ 0 0 0 28 0 0 0 0 0 0 0 0 0 20 18 66
234 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\s_sound.c C 0 0 431 0 0 0 0 0 0 0 0 0 0 108 132 671
235 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\s_sound.h C++ 0 0 0 20 0 0 0 0 0 0 0 0 0 42 28 90
236 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\sha1.c C 0 0 239 0 0 0 0 0 0 0 0 0 0 49 32 320
237 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\sha1.h C++ 0 0 0 17 0 0 0 0 0 0 0 0 0 16 8 41
238 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\sounds.c C 0 0 192 0 0 0 0 0 0 0 0 0 0 25 13 230
239 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\sounds.h C++ 0 0 0 191 0 0 0 0 0 0 0 0 0 26 11 228
240 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\st_lib.c C 0 0 186 0 0 0 0 0 0 0 0 0 0 35 64 285
241 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\st_lib.h C++ 0 0 0 91 0 0 0 0 0 0 0 0 0 60 59 210
242 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\st_stuff.c C 0 0 903 0 0 0 0 0 0 0 0 0 0 216 298 1417
243 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\st_stuff.h C++ 0 0 0 36 0 0 0 0 0 0 0 0 0 31 23 90
244 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\statdump.c C 0 0 239 0 0 0 0 0 0 0 0 0 0 58 96 393
245 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\statdump.h C++ 0 0 0 5 0 0 0 0 0 0 0 0 0 15 4 24
246 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\tables.c C 0 0 2173 0 0 0 0 0 0 0 0 0 0 37 18 2228
247 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\tables.h C++ 0 0 0 26 0 0 0 0 0 0 0 0 0 44 27 97
248 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\v_patch.h C++ 0 0 0 17 0 0 0 0 0 0 0 0 0 25 9 51
249 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\v_video.c C 0 0 617 0 0 0 0 0 0 0 0 0 0 139 177 933
250 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\v_video.h C++ 0 0 0 34 0 0 0 0 0 0 0 0 0 40 35 109
251 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_checksum.c C 0 0 48 0 0 0 0 0 0 0 0 0 0 21 19 88
252 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_checksum.h C++ 0 0 0 5 0 0 0 0 0 0 0 0 0 17 6 28
253 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_file.c C 0 0 44 0 0 0 0 0 0 0 0 0 0 32 20 96
254 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_file.h C++ 0 0 0 23 0 0 0 0 0 0 0 0 0 31 25 79
255 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_file_stdc.c C 0 0 49 0 0 0 0 0 0 0 0 0 0 22 26 97
256 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_main.c C 0 0 87 0 0 0 0 0 0 0 0 0 0 66 46 199
257 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_main.h C++ 0 0 0 4 0 0 0 0 0 0 0 0 0 16 5 25
258 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_merge.h C++ 0 0 0 9 0 0 0 0 0 0 0 0 0 23 13 45
259 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_wad.c C 0 0 353 0 0 0 0 0 0 0 0 0 0 124 136 613
260 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_wad.h C++ 0 0 0 31 0 0 0 0 0 0 0 0 0 24 24 79
261 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\wi_stuff.c C 0 0 1215 0 0 0 0 0 0 0 0 0 0 210 405 1830
262 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\wi_stuff.h C++ 0 0 0 14 0 0 0 0 0 0 0 0 0 24 11 49
263 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\z_zone.c C 0 0 278 0 0 0 0 0 0 0 0 0 0 89 122 489
264 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\z_zone.h C++ 0 0 0 29 0 0 0 0 0 0 0 0 0 29 16 74
265 d:\Projects\C\cleonos\clks\arch\aarch64\boot.c C 0 0 -6 0 0 0 0 0 0 0 0 0 0 0 -1 -7
266 d:\Projects\C\cleonos\clks\arch\aarch64\startup\boot.c C 0 0 6 0 0 0 0 0 0 0 0 0 0 0 1 7
267 d:\Projects\C\cleonos\clks\arch\x86_64\boot.c C 0 0 -6 0 0 0 0 0 0 0 0 0 0 0 -1 -7
268 d:\Projects\C\cleonos\clks\arch\x86_64\exec_stack_call.S Go Assembly 0 0 0 0 0 0 0 0 -40 0 0 0 0 0 -8 -48
269 d:\Projects\C\cleonos\clks\arch\x86_64\interrupt\interrupt_stubs.S Go Assembly 0 0 0 0 0 0 0 0 108 0 0 0 0 0 12 120
270 d:\Projects\C\cleonos\clks\arch\x86_64\interrupt_stubs.S Go Assembly 0 0 0 0 0 0 0 0 -108 0 0 0 0 0 -12 -120
271 d:\Projects\C\cleonos\clks\arch\x86_64\startup\boot.c C 0 0 6 0 0 0 0 0 0 0 0 0 0 0 1 7
272 d:\Projects\C\cleonos\clks\arch\x86_64\startup\exec_stack_call.S Go Assembly 0 0 0 0 0 0 0 0 40 0 0 0 0 0 8 48
273 d:\Projects\C\cleonos\clks\drivers\audio\pcspeaker.c C 0 0 -101 0 0 0 0 0 0 0 0 0 0 0 -25 -126
274 d:\Projects\C\cleonos\clks\drivers\serial\serial.c C 0 0 -52 0 0 0 0 0 0 0 0 0 0 0 -16 -68
275 d:\Projects\C\cleonos\clks\drivers\video\font8x8.c C 0 0 -67 0 0 0 0 0 0 0 0 0 0 0 -8 -75
276 d:\Projects\C\cleonos\clks\drivers\video\font8x8.h C++ 0 0 0 -5 0 0 0 0 0 0 0 0 0 0 -3 -8
277 d:\Projects\C\cleonos\clks\drivers\video\framebuffer.c C 0 0 -251 0 0 0 0 0 0 0 0 0 0 0 -70 -321
278 d:\Projects\C\cleonos\clks\drivers\video\psf_font.c C 0 0 -230 0 0 0 0 0 0 0 0 0 0 0 -56 -286
279 d:\Projects\C\cleonos\clks\drivers\video\psf_font.h C++ 0 0 0 -15 0 0 0 0 0 0 0 0 0 0 -5 -20
280 d:\Projects\C\cleonos\clks\include\clks\exec.h C++ 0 0 0 -8 0 0 0 0 0 0 0 0 0 0 0 -8
281 d:\Projects\C\cleonos\clks\include\clks\keyboard.h C++ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1
282 d:\Projects\C\cleonos\clks\include\clks\limine.h C++ 0 0 0 -20 0 0 0 0 0 0 0 0 0 0 0 -20
283 d:\Projects\C\cleonos\clks\include\clks\panic.h C++ 0 0 0 -5 0 0 0 0 0 0 0 0 0 0 0 -5
284 d:\Projects\C\cleonos\clks\include\clks\syscall.h C++ 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 3
285 d:\Projects\C\cleonos\clks\include\clks\task.h C++ 0 0 0 -5 0 0 0 0 0 0 0 0 0 0 0 -5
286 d:\Projects\C\cleonos\clks\include\clks\types.h C++ 0 0 0 -3 0 0 0 0 0 0 0 0 0 0 0 -3
287 d:\Projects\C\cleonos\clks\kernel\boot\limine\limine_requests.c C 0 0 76 0 0 0 0 0 0 0 0 0 0 0 26 102
288 d:\Projects\C\cleonos\clks\kernel\core\interrupts.c C 0 0 307 0 0 0 0 0 0 0 0 0 0 0 43 350
289 d:\Projects\C\cleonos\clks\kernel\core\kmain.c C 0 0 388 0 0 0 0 0 0 0 0 0 0 1 77 466
290 d:\Projects\C\cleonos\clks\kernel\core\log.c C 0 0 179 0 0 0 0 0 0 0 0 0 0 0 48 227
291 d:\Projects\C\cleonos\clks\kernel\core\panic.c C 0 0 527 0 0 0 0 0 0 0 0 0 0 0 155 682
292 d:\Projects\C\cleonos\clks\kernel\core\scheduler.c C 0 0 136 0 0 0 0 0 0 0 0 0 0 0 44 180
293 d:\Projects\C\cleonos\clks\kernel\core\service.c C 0 0 107 0 0 0 0 0 0 0 0 0 0 0 34 141
294 d:\Projects\C\cleonos\clks\kernel\desktop.c C 0 0 -321 0 0 0 0 0 0 0 0 0 0 0 -86 -407
295 d:\Projects\C\cleonos\clks\kernel\driver.c C 0 0 -169 0 0 0 0 0 0 0 0 0 0 0 -49 -218
296 d:\Projects\C\cleonos\clks\kernel\elf64.c C 0 0 -239 0 0 0 0 0 0 0 0 0 0 0 -73 -312
297 d:\Projects\C\cleonos\clks\kernel\elfrunner.c C 0 0 -30 0 0 0 0 0 0 0 0 0 0 0 -8 -38
298 d:\Projects\C\cleonos\clks\kernel\exec.c C 0 0 -2037 0 0 0 0 0 0 0 0 0 0 -1 -555 -2593
299 d:\Projects\C\cleonos\clks\kernel\fs.c C 0 0 -701 0 0 0 0 0 0 0 0 0 0 0 -222 -923
300 d:\Projects\C\cleonos\clks\kernel\hal\audio\pcspeaker.c C 0 0 101 0 0 0 0 0 0 0 0 0 0 0 25 126
301 d:\Projects\C\cleonos\clks\kernel\hal\serial\serial.c C 0 0 51 0 0 0 0 0 0 0 0 0 0 0 16 67
302 d:\Projects\C\cleonos\clks\kernel\hal\video\font8x8.c C 0 0 45 0 0 0 0 0 0 0 0 0 0 0 8 53
303 d:\Projects\C\cleonos\clks\kernel\hal\video\font8x8.h C++ 0 0 0 5 0 0 0 0 0 0 0 0 0 0 3 8
304 d:\Projects\C\cleonos\clks\kernel\hal\video\framebuffer.c C 0 0 247 0 0 0 0 0 0 0 0 0 0 0 69 316
305 d:\Projects\C\cleonos\clks\kernel\hal\video\psf_font.c C 0 0 203 0 0 0 0 0 0 0 0 0 0 0 56 259
306 d:\Projects\C\cleonos\clks\kernel\hal\video\psf_font.h C++ 0 0 0 15 0 0 0 0 0 0 0 0 0 0 5 20
307 d:\Projects\C\cleonos\clks\kernel\heap.c C 0 0 -134 0 0 0 0 0 0 0 0 0 0 0 -42 -176
308 d:\Projects\C\cleonos\clks\kernel\input\keyboard.c C 0 0 370 0 0 0 0 0 0 0 0 0 0 0 95 465
309 d:\Projects\C\cleonos\clks\kernel\input\mouse.c C 0 0 243 0 0 0 0 0 0 0 0 0 0 0 63 306
310 d:\Projects\C\cleonos\clks\kernel\interface\desktop.c C 0 0 321 0 0 0 0 0 0 0 0 0 0 0 86 407
311 d:\Projects\C\cleonos\clks\kernel\interface\shell.c C 0 0 1232 0 0 0 0 0 0 0 0 0 0 0 316 1548
312 d:\Projects\C\cleonos\clks\kernel\interface\tty.c C 0 0 1137 0 0 0 0 0 0 0 0 0 0 0 288 1425
313 d:\Projects\C\cleonos\clks\kernel\interrupts.c C 0 0 -317 0 0 0 0 0 0 0 0 0 0 0 -44 -361
314 d:\Projects\C\cleonos\clks\kernel\kelf.c C 0 0 -203 0 0 0 0 0 0 0 0 0 0 -1 -53 -257
315 d:\Projects\C\cleonos\clks\kernel\keyboard.c C 0 0 -379 0 0 0 0 0 0 0 0 0 0 0 -96 -475
316 d:\Projects\C\cleonos\clks\kernel\kmain.c C 0 0 -388 0 0 0 0 0 0 0 0 0 0 -1 -77 -466
317 d:\Projects\C\cleonos\clks\kernel\limine_requests.c C 0 0 -76 0 0 0 0 0 0 0 0 0 0 0 -26 -102
318 d:\Projects\C\cleonos\clks\kernel\log.c C 0 0 -185 0 0 0 0 0 0 0 0 0 0 0 -48 -233
319 d:\Projects\C\cleonos\clks\kernel\memory\heap.c C 0 0 137 0 0 0 0 0 0 0 0 0 0 0 44 181
320 d:\Projects\C\cleonos\clks\kernel\memory\pmm.c C 0 0 82 0 0 0 0 0 0 0 0 0 0 0 23 105
321 d:\Projects\C\cleonos\clks\kernel\mouse.c C 0 0 -246 0 0 0 0 0 0 0 0 0 0 0 -63 -309
322 d:\Projects\C\cleonos\clks\kernel\panic.c C 0 0 -546 0 0 0 0 0 0 0 0 0 0 0 -155 -701
323 d:\Projects\C\cleonos\clks\kernel\pmm.c C 0 0 -82 0 0 0 0 0 0 0 0 0 0 0 -23 -105
324 d:\Projects\C\cleonos\clks\kernel\ramdisk.c C 0 0 -172 0 0 0 0 0 0 0 0 0 0 0 -50 -222
325 d:\Projects\C\cleonos\clks\kernel\runtime\driver.c C 0 0 166 0 0 0 0 0 0 0 0 0 0 0 49 215
326 d:\Projects\C\cleonos\clks\kernel\runtime\elf64.c C 0 0 279 0 0 0 0 0 0 0 0 0 0 1 84 364
327 d:\Projects\C\cleonos\clks\kernel\runtime\elfrunner.c C 0 0 30 0 0 0 0 0 0 0 0 0 0 0 8 38
328 d:\Projects\C\cleonos\clks\kernel\runtime\exec.c C 0 0 2179 0 0 0 0 0 0 0 0 0 0 1 595 2775
329 d:\Projects\C\cleonos\clks\kernel\runtime\kelf.c C 0 0 198 0 0 0 0 0 0 0 0 0 0 1 52 251
330 d:\Projects\C\cleonos\clks\kernel\runtime\syscall.c C 0 0 2021 0 0 0 0 0 0 0 0 0 0 0 507 2528
331 d:\Projects\C\cleonos\clks\kernel\runtime\userland.c C 0 0 146 0 0 0 0 0 0 0 0 0 0 0 38 184
332 d:\Projects\C\cleonos\clks\kernel\scheduler.c C 0 0 -136 0 0 0 0 0 0 0 0 0 0 0 -44 -180
333 d:\Projects\C\cleonos\clks\kernel\service.c C 0 0 -113 0 0 0 0 0 0 0 0 0 0 0 -34 -147
334 d:\Projects\C\cleonos\clks\kernel\shell.c C 0 0 -1250 0 0 0 0 0 0 0 0 0 0 0 -317 -1567
335 d:\Projects\C\cleonos\clks\kernel\storage\fs.c C 0 0 684 0 0 0 0 0 0 0 0 0 0 0 222 906
336 d:\Projects\C\cleonos\clks\kernel\storage\ramdisk.c C 0 0 172 0 0 0 0 0 0 0 0 0 0 0 50 222
337 d:\Projects\C\cleonos\clks\kernel\support\libc_compat.c C 0 0 25 0 0 0 0 0 0 0 0 0 0 0 7 32
338 d:\Projects\C\cleonos\clks\kernel\support\string.c C 0 0 54 0 0 0 0 0 0 0 0 0 0 0 16 70
339 d:\Projects\C\cleonos\clks\kernel\syscall.c C 0 0 -1588 0 0 0 0 0 0 0 0 0 0 0 -401 -1989
340 d:\Projects\C\cleonos\clks\kernel\tty.c C 0 0 -1188 0 0 0 0 0 0 0 0 0 0 0 -290 -1478
341 d:\Projects\C\cleonos\clks\kernel\userland.c C 0 0 -145 0 0 0 0 0 0 0 0 0 0 0 -38 -183
342 d:\Projects\C\cleonos\clks\lib\libc_compat.c C 0 0 -25 0 0 0 0 0 0 0 0 0 0 0 -7 -32
343 d:\Projects\C\cleonos\clks\lib\string.c C 0 0 -54 0 0 0 0 0 0 0 0 0 0 0 -16 -70
344 d:\Projects\C\cleonos\configs\menuconfig\clks_features.json JSON 0 0 0 0 0 0 180 0 0 0 0 0 0 0 0 180
345 d:\Projects\C\cleonos\docs\syscall.md Markdown 46 0 0 0 0 0 0 0 0 0 0 0 0 0 14 60
346 d:\Projects\C\cleonos\limine\.github\dependabot.yml YAML 0 0 0 0 0 0 0 0 0 0 0 7 0 0 1 8
347 d:\Projects\C\cleonos\limine\.github\workflows\binary-release.yml YAML 0 0 0 0 0 0 0 0 0 0 0 78 0 0 21 99
348 d:\Projects\C\cleonos\limine\.github\workflows\check.yml YAML 0 0 0 0 0 0 0 0 0 0 0 34 0 0 12 46
349 d:\Projects\C\cleonos\limine\.github\workflows\pr_branch_check.yml YAML 0 0 0 0 0 0 0 0 0 0 0 13 0 0 3 16
350 d:\Projects\C\cleonos\limine\.github\workflows\qa.yml YAML 0 0 0 0 0 0 0 0 0 0 0 14 0 0 5 19
351 d:\Projects\C\cleonos\limine\.github\workflows\release.yml YAML 0 0 0 0 0 0 0 0 0 0 0 64 0 0 17 81
352 d:\Projects\C\cleonos\limine\3RDPARTY.md Markdown 53 0 0 0 0 0 0 0 0 0 0 0 0 0 15 68
353 d:\Projects\C\cleonos\limine\CONFIG.md Markdown 320 0 0 0 0 0 0 0 0 0 0 0 0 0 53 373
354 d:\Projects\C\cleonos\limine\FAQ.md Markdown 26 0 0 0 0 0 0 0 0 0 0 0 0 0 10 36
355 d:\Projects\C\cleonos\limine\INSTALL.md Markdown 37 0 0 0 0 0 0 0 0 0 0 0 0 0 15 52
356 d:\Projects\C\cleonos\limine\README.md Markdown 70 0 0 0 0 0 0 0 0 0 0 0 0 0 33 103
357 d:\Projects\C\cleonos\limine\USAGE.md Markdown 85 0 0 0 0 0 0 0 0 0 0 0 0 0 23 108
358 d:\Projects\C\cleonos\limine\common\common.mk Makefile 0 0 0 0 562 0 0 0 0 0 0 0 0 0 115 677
359 d:\Projects\C\cleonos\limine\common\crypt\blake2b.c C 0 0 179 0 0 0 0 0 0 0 0 0 0 3 39 221
360 d:\Projects\C\cleonos\limine\common\crypt\blake2b.h C++ 0 0 0 6 0 0 0 0 0 0 0 0 0 0 5 11
361 d:\Projects\C\cleonos\limine\common\drivers\disk.h C++ 0 0 0 18 0 0 0 0 0 0 0 0 0 0 9 27
362 d:\Projects\C\cleonos\limine\common\drivers\disk.s2.c C 0 0 646 0 0 0 0 0 0 0 0 0 0 33 178 857
363 d:\Projects\C\cleonos\limine\common\drivers\edid.c C 0 0 61 0 0 0 0 0 0 0 0 0 0 0 25 86
364 d:\Projects\C\cleonos\limine\common\drivers\edid.h C++ 0 0 0 37 0 0 0 0 0 0 0 0 0 0 7 44
365 d:\Projects\C\cleonos\limine\common\drivers\gop.c C 0 0 306 0 0 0 0 0 0 0 0 0 0 3 73 382
366 d:\Projects\C\cleonos\limine\common\drivers\gop.h C++ 0 0 0 13 0 0 0 0 0 0 0 0 0 0 7 20
367 d:\Projects\C\cleonos\limine\common\drivers\serial.c C 0 0 37 0 0 0 0 0 0 0 0 0 0 1 13 51
368 d:\Projects\C\cleonos\limine\common\drivers\serial.h C++ 0 0 0 9 0 0 0 0 0 0 0 0 0 0 7 16
369 d:\Projects\C\cleonos\limine\common\drivers\vbe.c C 0 0 307 0 0 0 0 0 0 0 0 0 0 8 53 368
370 d:\Projects\C\cleonos\limine\common\drivers\vbe.h C++ 0 0 0 11 0 0 0 0 0 0 0 0 0 0 5 16
371 d:\Projects\C\cleonos\limine\common\drivers\vga_textmode.c C 0 0 294 0 0 0 0 0 0 0 0 0 0 5 71 370
372 d:\Projects\C\cleonos\limine\common\drivers\vga_textmode.h C++ 0 0 0 24 0 0 0 0 0 0 0 0 0 0 12 36
373 d:\Projects\C\cleonos\limine\common\entry.s2.c C 0 0 106 0 0 0 0 0 0 0 0 0 0 1 28 135
374 d:\Projects\C\cleonos\limine\common\entry.s3.c C 0 0 202 0 0 0 0 0 0 0 0 0 0 0 47 249
375 d:\Projects\C\cleonos\limine\common\fs\fat32.h C++ 0 0 0 7 0 0 0 0 0 0 0 0 0 0 5 12
376 d:\Projects\C\cleonos\limine\common\fs\fat32.s2.c C 0 0 577 0 0 0 0 0 0 0 0 0 0 39 111 727
377 d:\Projects\C\cleonos\limine\common\fs\file.h C++ 0 0 0 39 0 0 0 0 0 0 0 0 0 0 7 46
378 d:\Projects\C\cleonos\limine\common\fs\file.s2.c C 0 0 163 0 0 0 0 0 0 0 0 0 0 0 22 185
379 d:\Projects\C\cleonos\limine\common\fs\iso9660.h C++ 0 0 0 7 0 0 0 0 0 0 0 0 0 0 4 11
380 d:\Projects\C\cleonos\limine\common\fs\iso9660.s2.c C 0 0 407 0 0 0 0 0 0 0 0 0 0 38 94 539
381 d:\Projects\C\cleonos\limine\common\gensyms.sh Shell Script 0 0 0 0 0 0 0 0 0 33 0 0 0 2 17 52
382 d:\Projects\C\cleonos\limine\common\lib\acpi.c C 0 0 344 0 0 0 0 0 0 0 0 0 0 27 102 473
383 d:\Projects\C\cleonos\limine\common\lib\acpi.h C++ 0 0 0 163 0 0 0 0 0 0 0 0 0 24 30 217
384 d:\Projects\C\cleonos\limine\common\lib\bli.c C 0 0 67 0 0 0 0 0 0 0 0 0 0 4 20 91
385 d:\Projects\C\cleonos\limine\common\lib\bli.h C++ 0 0 0 7 0 0 0 0 0 0 0 0 0 0 5 12
386 d:\Projects\C\cleonos\limine\common\lib\config.c C 0 0 628 0 0 0 0 0 0 0 0 0 0 11 126 765
387 d:\Projects\C\cleonos\limine\common\lib\config.h C++ 0 0 0 28 0 0 0 0 0 0 0 0 0 0 9 37
388 d:\Projects\C\cleonos\limine\common\lib\elf.c C 0 0 964 0 0 0 0 0 0 0 0 0 0 27 212 1203
389 d:\Projects\C\cleonos\limine\common\lib\elf.h C++ 0 0 0 74 0 0 0 0 0 0 0 0 0 0 14 88
390 d:\Projects\C\cleonos\limine\common\lib\elsewhere.c C 0 0 81 0 0 0 0 0 0 0 0 0 0 7 17 105
391 d:\Projects\C\cleonos\limine\common\lib\elsewhere.h C++ 0 0 0 16 0 0 0 0 0 0 0 0 0 0 5 21
392 d:\Projects\C\cleonos\limine\common\lib\fb.c C 0 0 153 0 0 0 0 0 0 0 0 0 0 4 17 174
393 d:\Projects\C\cleonos\limine\common\lib\fb.h C++ 0 0 0 36 0 0 0 0 0 0 0 0 0 0 12 48
394 d:\Projects\C\cleonos\limine\common\lib\fdt.c C 0 0 33 0 0 0 0 0 0 0 0 0 0 0 12 45
395 d:\Projects\C\cleonos\limine\common\lib\fdt.h C++ 0 0 0 10 0 0 0 0 0 0 0 0 0 0 6 16
396 d:\Projects\C\cleonos\limine\common\lib\getchar.c C 0 0 306 0 0 0 0 0 0 0 0 0 0 1 59 366
397 d:\Projects\C\cleonos\limine\common\lib\getchar.h C++ 0 0 0 23 0 0 0 0 0 0 0 0 0 0 6 29
398 d:\Projects\C\cleonos\limine\common\lib\gterm.c C 0 0 813 0 0 0 0 0 0 0 0 0 0 9 118 940
399 d:\Projects\C\cleonos\limine\common\lib\gterm.h C++ 0 0 0 29 0 0 0 0 0 0 0 0 0 0 6 35
400 d:\Projects\C\cleonos\limine\common\lib\guid.c C 0 0 82 0 0 0 0 0 0 0 0 0 0 0 14 96
401 d:\Projects\C\cleonos\limine\common\lib\guid.h C++ 0 0 0 15 0 0 0 0 0 0 0 0 0 1 5 21
402 d:\Projects\C\cleonos\limine\common\lib\image.c C 0 0 52 0 0 0 0 0 0 0 0 0 0 2 18 72
403 d:\Projects\C\cleonos\limine\common\lib\image.h C++ 0 0 0 27 0 0 0 0 0 0 0 0 0 0 6 33
404 d:\Projects\C\cleonos\limine\common\lib\libc.c C 0 0 114 0 0 0 0 0 0 0 0 0 0 3 15 132
405 d:\Projects\C\cleonos\limine\common\lib\libc.h C++ 0 0 0 29 0 0 0 0 0 0 0 0 0 0 8 37
406 d:\Projects\C\cleonos\limine\common\lib\libc.s2.c C 0 0 122 0 0 0 0 0 0 0 0 0 0 2 26 150
407 d:\Projects\C\cleonos\limine\common\lib\macros.aarch64_asm.h C++ 0 0 0 44 0 0 0 0 0 0 0 0 0 4 5 53
408 d:\Projects\C\cleonos\limine\common\lib\memory.s2.c C 0 0 41 0 0 0 0 0 0 0 0 0 0 0 13 54
409 d:\Projects\C\cleonos\limine\common\lib\misc.c C 0 0 322 0 0 0 0 0 0 0 0 0 0 8 90 420
410 d:\Projects\C\cleonos\limine\common\lib\misc.h C++ 0 0 0 122 0 0 0 0 0 0 0 0 0 0 32 154
411 d:\Projects\C\cleonos\limine\common\lib\misc.s2.c C 0 0 117 0 0 0 0 0 0 0 0 0 0 0 12 129
412 d:\Projects\C\cleonos\limine\common\lib\panic.s2.c C 0 0 70 0 0 0 0 0 0 0 0 0 0 8 12 90
413 d:\Projects\C\cleonos\limine\common\lib\part.h C++ 0 0 0 86 0 0 0 0 0 0 0 0 0 2 23 111
414 d:\Projects\C\cleonos\limine\common\lib\part.s2.c C 0 0 464 0 0 0 0 0 0 0 0 0 0 31 121 616
415 d:\Projects\C\cleonos\limine\common\lib\pe.c C 0 0 398 0 0 0 0 0 0 0 0 0 0 5 98 501
416 d:\Projects\C\cleonos\limine\common\lib\pe.h C++ 0 0 0 8 0 0 0 0 0 0 0 0 0 0 5 13
417 d:\Projects\C\cleonos\limine\common\lib\print.h C++ 0 0 0 11 0 0 0 0 0 0 0 0 0 0 6 17
418 d:\Projects\C\cleonos\limine\common\lib\print.s2.c C 0 0 200 0 0 0 0 0 0 0 0 0 0 0 36 236
419 d:\Projects\C\cleonos\limine\common\lib\rand.c C 0 0 112 0 0 0 0 0 0 0 0 0 0 5 25 142
420 d:\Projects\C\cleonos\limine\common\lib\rand.h C++ 0 0 0 7 0 0 0 0 0 0 0 0 0 0 5 12
421 d:\Projects\C\cleonos\limine\common\lib\real.h C++ 0 0 0 26 0 0 0 0 0 0 0 0 0 0 9 35
422 d:\Projects\C\cleonos\limine\common\lib\stb_image.c C 0 0 4 0 0 0 0 0 0 0 0 0 0 0 3 7
423 d:\Projects\C\cleonos\limine\common\lib\term.c C 0 0 266 0 0 0 0 0 0 0 0 0 0 5 49 320
424 d:\Projects\C\cleonos\limine\common\lib\term.h C++ 0 0 0 47 0 0 0 0 0 0 0 0 0 0 13 60
425 d:\Projects\C\cleonos\limine\common\lib\time.c C 0 0 59 0 0 0 0 0 0 0 0 0 0 2 15 76
426 d:\Projects\C\cleonos\limine\common\lib\time.h C++ 0 0 0 5 0 0 0 0 0 0 0 0 0 0 4 9
427 d:\Projects\C\cleonos\limine\common\lib\trace.h C++ 0 0 0 5 0 0 0 0 0 0 0 0 0 0 4 9
428 d:\Projects\C\cleonos\limine\common\lib\trace.s2.c C 0 0 79 0 0 0 0 0 0 0 0 0 0 0 9 88
429 d:\Projects\C\cleonos\limine\common\lib\uri.c C 0 0 224 0 0 0 0 0 0 0 0 0 0 9 54 287
430 d:\Projects\C\cleonos\limine\common\lib\uri.h C++ 0 0 0 7 0 0 0 0 0 0 0 0 0 0 4 11
431 d:\Projects\C\cleonos\limine\common\libc-compat\stdlib.h C++ 0 0 0 4 0 0 0 0 0 0 0 0 0 0 3 7
432 d:\Projects\C\cleonos\limine\common\libc-compat\string.h C++ 0 0 0 19 0 0 0 0 0 0 0 0 0 0 5 24
433 d:\Projects\C\cleonos\limine\common\menu.c C 0 0 1378 0 0 0 0 0 0 0 0 0 0 30 150 1558
434 d:\Projects\C\cleonos\limine\common\menu.h C++ 0 0 0 13 0 0 0 0 0 0 0 0 0 0 8 21
435 d:\Projects\C\cleonos\limine\common\mm\mtrr.c C 0 0 91 0 0 0 0 0 0 0 0 0 0 18 32 141
436 d:\Projects\C\cleonos\limine\common\mm\mtrr.h C++ 0 0 0 7 0 0 0 0 0 0 0 0 0 0 5 12
437 d:\Projects\C\cleonos\limine\common\mm\pmm.c C 0 0 70 0 0 0 0 0 0 0 0 0 0 3 16 89
438 d:\Projects\C\cleonos\limine\common\mm\pmm.h C++ 0 0 0 63 0 0 0 0 0 0 0 0 0 0 18 81
439 d:\Projects\C\cleonos\limine\common\mm\pmm.s2.c C 0 0 662 0 0 0 0 0 0 0 0 0 0 37 192 891
440 d:\Projects\C\cleonos\limine\common\mm\vmm.c C 0 0 416 0 0 0 0 0 0 0 0 0 0 30 110 556
441 d:\Projects\C\cleonos\limine\common\mm\vmm.h C++ 0 0 0 125 0 0 0 0 0 0 0 0 0 6 45 176
442 d:\Projects\C\cleonos\limine\common\protos\chainload.c C 0 0 283 0 0 0 0 0 0 0 0 0 0 7 78 368
443 d:\Projects\C\cleonos\limine\common\protos\chainload.h C++ 0 0 0 5 0 0 0 0 0 0 0 0 0 0 4 9
444 d:\Projects\C\cleonos\limine\common\protos\efi_boot_entry.c C 0 0 94 0 0 0 0 0 0 0 0 0 0 6 26 126
445 d:\Projects\C\cleonos\limine\common\protos\efi_boot_entry.h C++ 0 0 0 5 0 0 0 0 0 0 0 0 0 0 4 9
446 d:\Projects\C\cleonos\limine\common\protos\limine.c C 0 0 1523 0 0 0 0 0 0 0 0 0 0 80 331 1934
447 d:\Projects\C\cleonos\limine\common\protos\limine.h C++ 0 0 0 5 0 0 0 0 0 0 0 0 0 0 4 9
448 d:\Projects\C\cleonos\limine\common\protos\linux.h C++ 0 0 0 59 0 0 0 0 0 0 0 0 0 1 14 74
449 d:\Projects\C\cleonos\limine\common\protos\linux_risc.c C 0 0 412 0 0 0 0 0 0 0 0 0 0 22 99 533
450 d:\Projects\C\cleonos\limine\common\protos\linux_x86.c C 0 0 527 0 0 0 0 0 0 0 0 0 0 41 96 664
451 d:\Projects\C\cleonos\limine\common\protos\multiboot.h C++ 0 0 0 13 0 0 0 0 0 0 0 0 0 0 5 18
452 d:\Projects\C\cleonos\limine\common\protos\multiboot1.c C 0 0 394 0 0 0 0 0 0 0 0 0 0 14 105 513
453 d:\Projects\C\cleonos\limine\common\protos\multiboot1.h C++ 0 0 0 76 0 0 0 0 0 0 0 0 0 0 25 101
454 d:\Projects\C\cleonos\limine\common\protos\multiboot2.c C 0 0 782 0 0 0 0 0 0 0 0 0 0 77 182 1041
455 d:\Projects\C\cleonos\limine\common\protos\multiboot2.h C++ 0 0 0 331 0 0 0 0 0 0 0 0 0 30 58 419
456 d:\Projects\C\cleonos\limine\common\pxe\pxe.h C++ 0 0 0 96 0 0 0 0 0 0 0 0 0 0 16 112
457 d:\Projects\C\cleonos\limine\common\pxe\pxe.s2.c C 0 0 53 0 0 0 0 0 0 0 0 0 0 2 18 73
458 d:\Projects\C\cleonos\limine\common\pxe\tftp.h C++ 0 0 0 36 0 0 0 0 0 0 0 0 0 0 11 47
459 d:\Projects\C\cleonos\limine\common\pxe\tftp.s2.c C 0 0 211 0 0 0 0 0 0 0 0 0 0 5 52 268
460 d:\Projects\C\cleonos\limine\common\stb_image.patch Diff 0 0 0 0 0 0 0 0 0 0 74 0 0 7 10 91
461 d:\Projects\C\cleonos\limine\common\sys\a20.h C++ 0 0 0 6 0 0 0 0 0 0 0 0 0 0 4 10
462 d:\Projects\C\cleonos\limine\common\sys\a20.s2.c C 0 0 67 0 0 0 0 0 0 0 0 0 0 5 21 93
463 d:\Projects\C\cleonos\limine\common\sys\cpu.h C++ 0 0 0 429 0 0 0 0 0 0 0 0 0 2 82 513
464 d:\Projects\C\cleonos\limine\common\sys\cpu.s2.c C 0 0 58 0 0 0 0 0 0 0 0 0 0 6 14 78
465 d:\Projects\C\cleonos\limine\common\sys\cpu_riscv.c C 0 0 353 0 0 0 0 0 0 0 0 0 0 10 65 428
466 d:\Projects\C\cleonos\limine\common\sys\e820.h C++ 0 0 0 9 0 0 0 0 0 0 0 0 0 0 5 14
467 d:\Projects\C\cleonos\limine\common\sys\e820.s2.c C 0 0 33 0 0 0 0 0 0 0 0 0 0 0 12 45
468 d:\Projects\C\cleonos\limine\common\sys\exceptions.s2.c C 0 0 46 0 0 0 0 0 0 0 0 0 0 0 5 51
469 d:\Projects\C\cleonos\limine\common\sys\gdt.h C++ 0 0 0 23 0 0 0 0 0 0 0 0 0 0 7 30
470 d:\Projects\C\cleonos\limine\common\sys\gdt.s2.c C 0 0 83 0 0 0 0 0 0 0 0 0 0 0 13 96
471 d:\Projects\C\cleonos\limine\common\sys\idt.c C 0 0 53 0 0 0 0 0 0 0 0 0 0 3 16 72
472 d:\Projects\C\cleonos\limine\common\sys\idt.h C++ 0 0 0 43 0 0 0 0 0 0 0 0 0 0 17 60
473 d:\Projects\C\cleonos\limine\common\sys\idt.s2.c C 0 0 26 0 0 0 0 0 0 0 0 0 0 0 10 36
474 d:\Projects\C\cleonos\limine\common\sys\iommu.c C 0 0 94 0 0 0 0 0 0 0 0 0 0 21 30 145
475 d:\Projects\C\cleonos\limine\common\sys\iommu.h C++ 0 0 0 4 0 0 0 0 0 0 0 0 0 0 3 7
476 d:\Projects\C\cleonos\limine\common\sys\lapic.c C 0 0 420 0 0 0 0 0 0 0 0 0 0 23 69 512
477 d:\Projects\C\cleonos\limine\common\sys\lapic.h C++ 0 0 0 30 0 0 0 0 0 0 0 0 0 0 9 39
478 d:\Projects\C\cleonos\limine\common\sys\pic.c C 0 0 37 0 0 0 0 0 0 0 0 0 0 1 11 49
479 d:\Projects\C\cleonos\limine\common\sys\pic.h C++ 0 0 0 8 0 0 0 0 0 0 0 0 0 0 4 12
480 d:\Projects\C\cleonos\limine\common\sys\sbi.h C++ 0 0 0 25 0 0 0 0 0 0 0 0 0 0 8 33
481 d:\Projects\C\cleonos\limine\common\sys\smp.c C 0 0 917 0 0 0 0 0 0 0 0 0 0 54 259 1230
482 d:\Projects\C\cleonos\limine\common\sys\smp.h C++ 0 0 0 38 0 0 0 0 0 0 0 0 0 0 13 51
483 d:\Projects\C\cleonos\limine\decompressor\decompressor.mk Makefile 0 0 0 0 70 0 0 0 0 0 0 0 0 0 15 85
484 d:\Projects\C\cleonos\limine\decompressor\main.c C 0 0 31 0 0 0 0 0 0 0 0 0 0 2 5 38
485 d:\Projects\C\cleonos\limine\decompressor\memory.c C 0 0 41 0 0 0 0 0 0 0 0 0 0 0 13 54
486 d:\Projects\C\cleonos\limine\decompressor\tinf.patch Diff 0 0 0 0 0 0 0 0 0 0 42 0 0 3 10 55
487 d:\Projects\C\cleonos\limine\host\hgen.sh Shell Script 0 0 0 0 0 0 0 0 0 10 0 0 0 1 6 17
488 d:\Projects\C\cleonos\limine\host\host.mk Makefile 0 0 0 0 14 0 0 0 0 0 0 0 0 0 6 20
489 d:\Projects\C\cleonos\limine\host\limine.c C 0 0 1192 0 0 0 0 0 0 0 0 0 0 32 225 1449
490 d:\Projects\C\cleonos\limine\test.mk Makefile 0 0 0 0 263 0 0 0 0 0 0 0 0 0 16 279
491 d:\Projects\C\cleonos\limine\test\e9print.c C 0 0 81 0 0 0 0 0 0 0 0 0 0 0 18 99
492 d:\Projects\C\cleonos\limine\test\e9print.h C++ 0 0 0 7 0 0 0 0 0 0 0 0 0 0 3 10
493 d:\Projects\C\cleonos\limine\test\limine.c C 0 0 624 0 0 0 0 0 0 0 0 0 0 0 82 706
494 d:\Projects\C\cleonos\limine\test\limine.conf Properties 0 0 0 0 0 0 0 0 0 0 0 0 40 1 19 60
495 d:\Projects\C\cleonos\limine\test\memory.c C 0 0 40 0 0 0 0 0 0 0 0 0 0 0 13 53
496 d:\Projects\C\cleonos\limine\test\multiboot.c C 0 0 57 0 0 0 0 0 0 0 0 0 0 12 24 93
497 d:\Projects\C\cleonos\limine\test\multiboot2.c C 0 0 141 0 0 0 0 0 0 0 0 0 0 5 36 182
498 d:\Projects\C\cleonos\limine\test\test.mk Makefile 0 0 0 0 143 0 0 0 0 0 0 0 0 0 21 164
499 d:\Projects\C\cleonos\limine\version.sh Shell Script 0 0 0 0 0 0 0 0 0 19 0 0 0 1 10 30
500 d:\Projects\C\cleonos\scripts\menuconfig.py Python 0 622 0 0 0 0 0 0 0 0 0 0 0 0 100 722
501 d:\Projects\C\cleonos\wine\README.md Markdown 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4
502 d:\Projects\C\cleonos\wine\cleonos_wine_lib\constants.py Python 0 36 0 0 0 0 0 0 0 0 0 0 0 3 3 42
503 d:\Projects\C\cleonos\wine\cleonos_wine_lib\runner.py Python 0 469 0 0 0 0 0 0 0 0 0 0 0 0 91 560
504 d:\Projects\C\cleonos\wine\cleonos_wine_lib\state.py Python 0 118 0 0 0 0 0 0 0 0 0 0 0 2 31 151
505 Total - 692 1245 65649 7861 1086 339 180 130 0 62 116 319 40 13900 20413 112032

View File

@@ -0,0 +1,106 @@
# Diff Summary
Date : 2026-04-21 02:41:45
Directory d:\\Projects\\C\\cleonos
Total : 503 files, 77719 codes, 13900 comments, 20413 blanks, all 112032 lines
[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)
## Languages
| language | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| C | 292 | 65,649 | 10,478 | 16,613 | 92,740 |
| C++ | 172 | 7,861 | 3,395 | 3,048 | 14,304 |
| Python | 4 | 1,245 | 5 | 225 | 1,475 |
| Makefile | 6 | 1,086 | 7 | 187 | 1,280 |
| Markdown | 9 | 692 | 0 | 180 | 872 |
| XML | 1 | 339 | 0 | 0 | 339 |
| YAML | 7 | 319 | 0 | 78 | 397 |
| JSON | 1 | 180 | 0 | 0 | 180 |
| CMake | 1 | 130 | 0 | 10 | 140 |
| Diff | 2 | 116 | 10 | 20 | 146 |
| Shell Script | 3 | 62 | 4 | 33 | 99 |
| Properties | 1 | 40 | 1 | 19 | 60 |
| Go Assembly | 4 | 0 | 0 | 0 | 0 |
## Directories
| path | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| . | 503 | 77,719 | 13,900 | 20,413 | 112,032 |
| . (Files) | 1 | 130 | 0 | 10 | 140 |
| .github | 1 | 109 | 0 | 19 | 128 |
| .github\\workflows | 1 | 109 | 0 | 19 | 128 |
| cleonos | 261 | 50,389 | 12,962 | 14,396 | 77,747 |
| cleonos\\c | 66 | 2,981 | 446 | 571 | 3,998 |
| cleonos\\c\\apps | 63 | 2,787 | 446 | 532 | 3,765 |
| cleonos\\c\\apps (Files) | 53 | 649 | 1 | 80 | 730 |
| cleonos\\c\\apps\\doom | 3 | 1,366 | 1 | 328 | 1,695 |
| cleonos\\c\\apps\\qrcode | 2 | 821 | 444 | 130 | 1,395 |
| cleonos\\c\\apps\\shell | 5 | -49 | 0 | -6 | -55 |
| cleonos\\c\\include | 1 | 17 | 0 | 2 | 19 |
| cleonos\\c\\src | 2 | 177 | 0 | 37 | 214 |
| cleonos\\third-party | 195 | 47,408 | 12,516 | 13,825 | 73,749 |
| cleonos\\third-party\\doomgeneric | 195 | 47,408 | 12,516 | 13,825 | 73,749 |
| cleonos\\third-party\\doomgeneric (Files) | 1 | 51 | 0 | 17 | 68 |
| cleonos\\third-party\\doomgeneric\\doomgeneric | 194 | 47,357 | 12,516 | 13,808 | 73,681 |
| clks | 79 | 380 | 1 | 151 | 532 |
| clks\\arch | 8 | 0 | 0 | 0 | 0 |
| clks\\arch\\aarch64 | 2 | 0 | 0 | 0 | 0 |
| clks\\arch\\aarch64 (Files) | 1 | -6 | 0 | -1 | -7 |
| clks\\arch\\aarch64\\startup | 1 | 6 | 0 | 1 | 7 |
| clks\\arch\\x86_64 | 6 | 0 | 0 | 0 | 0 |
| clks\\arch\\x86_64 (Files) | 3 | -154 | 0 | -21 | -175 |
| clks\\arch\\x86_64\\interrupt | 1 | 108 | 0 | 12 | 120 |
| clks\\arch\\x86_64\\startup | 2 | 46 | 0 | 9 | 55 |
| clks\\drivers | 7 | -721 | 0 | -183 | -904 |
| clks\\drivers\\audio | 1 | -101 | 0 | -25 | -126 |
| clks\\drivers\\serial | 1 | -52 | 0 | -16 | -68 |
| clks\\drivers\\video | 5 | -568 | 0 | -142 | -710 |
| clks\\include | 7 | -38 | 0 | -1 | -39 |
| clks\\include\\clks | 7 | -38 | 0 | -1 | -39 |
| clks\\kernel | 55 | 1,218 | 1 | 358 | 1,577 |
| clks\\kernel (Files) | 23 | -10,645 | -3 | -2,794 | -13,442 |
| clks\\kernel\\boot | 1 | 76 | 0 | 26 | 102 |
| clks\\kernel\\boot\\limine | 1 | 76 | 0 | 26 | 102 |
| clks\\kernel\\core | 6 | 1,644 | 1 | 401 | 2,046 |
| clks\\kernel\\hal | 7 | 667 | 0 | 182 | 849 |
| clks\\kernel\\hal\\audio | 1 | 101 | 0 | 25 | 126 |
| clks\\kernel\\hal\\serial | 1 | 51 | 0 | 16 | 67 |
| clks\\kernel\\hal\\video | 5 | 515 | 0 | 141 | 656 |
| clks\\kernel\\input | 2 | 613 | 0 | 158 | 771 |
| clks\\kernel\\interface | 3 | 2,690 | 0 | 690 | 3,380 |
| clks\\kernel\\memory | 2 | 219 | 0 | 67 | 286 |
| clks\\kernel\\runtime | 7 | 5,019 | 3 | 1,333 | 6,355 |
| clks\\kernel\\storage | 2 | 856 | 0 | 272 | 1,128 |
| clks\\kernel\\support | 2 | 79 | 0 | 23 | 102 |
| clks\\lib | 2 | -79 | 0 | -23 | -102 |
| configs | 1 | 180 | 0 | 0 | 180 |
| configs\\menuconfig | 1 | 180 | 0 | 0 | 180 |
| docs | 1 | 46 | 0 | 14 | 60 |
| limine | 154 | 25,236 | 932 | 5,598 | 31,766 |
| limine (Files) | 8 | 873 | 1 | 175 | 1,049 |
| limine\\.github | 6 | 210 | 0 | 59 | 269 |
| limine\\.github (Files) | 1 | 7 | 0 | 1 | 8 |
| limine\\.github\\workflows | 5 | 203 | 0 | 58 | 261 |
| limine\\common | 125 | 21,620 | 875 | 4,868 | 27,363 |
| limine\\common (Files) | 7 | 2,368 | 40 | 375 | 2,783 |
| limine\\common\\crypt | 2 | 185 | 3 | 44 | 232 |
| limine\\common\\drivers | 12 | 1,763 | 50 | 460 | 2,273 |
| limine\\common\\fs | 6 | 1,200 | 77 | 243 | 1,520 |
| limine\\common\\lib | 49 | 6,940 | 201 | 1,515 | 8,656 |
| limine\\common\\libc-compat | 2 | 23 | 0 | 8 | 31 |
| limine\\common\\mm | 7 | 1,434 | 94 | 418 | 1,946 |
| limine\\common\\protos | 14 | 4,509 | 278 | 1,031 | 5,818 |
| limine\\common\\pxe | 4 | 396 | 7 | 97 | 500 |
| limine\\common\\sys | 22 | 2,802 | 125 | 677 | 3,604 |
| limine\\decompressor | 4 | 184 | 5 | 43 | 232 |
| limine\\host | 3 | 1,216 | 33 | 237 | 1,486 |
| limine\\test | 8 | 1,133 | 18 | 216 | 1,367 |
| scripts | 1 | 622 | 0 | 100 | 722 |
| wine | 4 | 627 | 5 | 125 | 757 |
| wine (Files) | 1 | 4 | 0 | 0 | 4 |
| wine\\cleonos_wine_lib | 3 | 623 | 5 | 125 | 753 |
[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)

View File

@@ -0,0 +1,612 @@
Date : 2026-04-21 02:41:45
Directory : d:\Projects\C\cleonos
Total : 503 files, 77719 codes, 13900 comments, 20413 blanks, all 112032 lines
Languages
+--------------+------------+------------+------------+------------+------------+
| language | files | code | comment | blank | total |
+--------------+------------+------------+------------+------------+------------+
| C | 292 | 65,649 | 10,478 | 16,613 | 92,740 |
| C++ | 172 | 7,861 | 3,395 | 3,048 | 14,304 |
| Python | 4 | 1,245 | 5 | 225 | 1,475 |
| Makefile | 6 | 1,086 | 7 | 187 | 1,280 |
| Markdown | 9 | 692 | 0 | 180 | 872 |
| XML | 1 | 339 | 0 | 0 | 339 |
| YAML | 7 | 319 | 0 | 78 | 397 |
| JSON | 1 | 180 | 0 | 0 | 180 |
| CMake | 1 | 130 | 0 | 10 | 140 |
| Diff | 2 | 116 | 10 | 20 | 146 |
| Shell Script | 3 | 62 | 4 | 33 | 99 |
| Properties | 1 | 40 | 1 | 19 | 60 |
| Go Assembly | 4 | 0 | 0 | 0 | 0 |
+--------------+------------+------------+------------+------------+------------+
Directories
+--------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| path | files | code | comment | blank | total |
+--------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| . | 503 | 77,719 | 13,900 | 20,413 | 112,032 |
| . (Files) | 1 | 130 | 0 | 10 | 140 |
| .github | 1 | 109 | 0 | 19 | 128 |
| .github\workflows | 1 | 109 | 0 | 19 | 128 |
| cleonos | 261 | 50,389 | 12,962 | 14,396 | 77,747 |
| cleonos\c | 66 | 2,981 | 446 | 571 | 3,998 |
| cleonos\c\apps | 63 | 2,787 | 446 | 532 | 3,765 |
| cleonos\c\apps (Files) | 53 | 649 | 1 | 80 | 730 |
| cleonos\c\apps\doom | 3 | 1,366 | 1 | 328 | 1,695 |
| cleonos\c\apps\qrcode | 2 | 821 | 444 | 130 | 1,395 |
| cleonos\c\apps\shell | 5 | -49 | 0 | -6 | -55 |
| cleonos\c\include | 1 | 17 | 0 | 2 | 19 |
| cleonos\c\src | 2 | 177 | 0 | 37 | 214 |
| cleonos\third-party | 195 | 47,408 | 12,516 | 13,825 | 73,749 |
| cleonos\third-party\doomgeneric | 195 | 47,408 | 12,516 | 13,825 | 73,749 |
| cleonos\third-party\doomgeneric (Files) | 1 | 51 | 0 | 17 | 68 |
| cleonos\third-party\doomgeneric\doomgeneric | 194 | 47,357 | 12,516 | 13,808 | 73,681 |
| clks | 79 | 380 | 1 | 151 | 532 |
| clks\arch | 8 | 0 | 0 | 0 | 0 |
| clks\arch\aarch64 | 2 | 0 | 0 | 0 | 0 |
| clks\arch\aarch64 (Files) | 1 | -6 | 0 | -1 | -7 |
| clks\arch\aarch64\startup | 1 | 6 | 0 | 1 | 7 |
| clks\arch\x86_64 | 6 | 0 | 0 | 0 | 0 |
| clks\arch\x86_64 (Files) | 3 | -154 | 0 | -21 | -175 |
| clks\arch\x86_64\interrupt | 1 | 108 | 0 | 12 | 120 |
| clks\arch\x86_64\startup | 2 | 46 | 0 | 9 | 55 |
| clks\drivers | 7 | -721 | 0 | -183 | -904 |
| clks\drivers\audio | 1 | -101 | 0 | -25 | -126 |
| clks\drivers\serial | 1 | -52 | 0 | -16 | -68 |
| clks\drivers\video | 5 | -568 | 0 | -142 | -710 |
| clks\include | 7 | -38 | 0 | -1 | -39 |
| clks\include\clks | 7 | -38 | 0 | -1 | -39 |
| clks\kernel | 55 | 1,218 | 1 | 358 | 1,577 |
| clks\kernel (Files) | 23 | -10,645 | -3 | -2,794 | -13,442 |
| clks\kernel\boot | 1 | 76 | 0 | 26 | 102 |
| clks\kernel\boot\limine | 1 | 76 | 0 | 26 | 102 |
| clks\kernel\core | 6 | 1,644 | 1 | 401 | 2,046 |
| clks\kernel\hal | 7 | 667 | 0 | 182 | 849 |
| clks\kernel\hal\audio | 1 | 101 | 0 | 25 | 126 |
| clks\kernel\hal\serial | 1 | 51 | 0 | 16 | 67 |
| clks\kernel\hal\video | 5 | 515 | 0 | 141 | 656 |
| clks\kernel\input | 2 | 613 | 0 | 158 | 771 |
| clks\kernel\interface | 3 | 2,690 | 0 | 690 | 3,380 |
| clks\kernel\memory | 2 | 219 | 0 | 67 | 286 |
| clks\kernel\runtime | 7 | 5,019 | 3 | 1,333 | 6,355 |
| clks\kernel\storage | 2 | 856 | 0 | 272 | 1,128 |
| clks\kernel\support | 2 | 79 | 0 | 23 | 102 |
| clks\lib | 2 | -79 | 0 | -23 | -102 |
| configs | 1 | 180 | 0 | 0 | 180 |
| configs\menuconfig | 1 | 180 | 0 | 0 | 180 |
| docs | 1 | 46 | 0 | 14 | 60 |
| limine | 154 | 25,236 | 932 | 5,598 | 31,766 |
| limine (Files) | 8 | 873 | 1 | 175 | 1,049 |
| limine\.github | 6 | 210 | 0 | 59 | 269 |
| limine\.github (Files) | 1 | 7 | 0 | 1 | 8 |
| limine\.github\workflows | 5 | 203 | 0 | 58 | 261 |
| limine\common | 125 | 21,620 | 875 | 4,868 | 27,363 |
| limine\common (Files) | 7 | 2,368 | 40 | 375 | 2,783 |
| limine\common\crypt | 2 | 185 | 3 | 44 | 232 |
| limine\common\drivers | 12 | 1,763 | 50 | 460 | 2,273 |
| limine\common\fs | 6 | 1,200 | 77 | 243 | 1,520 |
| limine\common\lib | 49 | 6,940 | 201 | 1,515 | 8,656 |
| limine\common\libc-compat | 2 | 23 | 0 | 8 | 31 |
| limine\common\mm | 7 | 1,434 | 94 | 418 | 1,946 |
| limine\common\protos | 14 | 4,509 | 278 | 1,031 | 5,818 |
| limine\common\pxe | 4 | 396 | 7 | 97 | 500 |
| limine\common\sys | 22 | 2,802 | 125 | 677 | 3,604 |
| limine\decompressor | 4 | 184 | 5 | 43 | 232 |
| limine\host | 3 | 1,216 | 33 | 237 | 1,486 |
| limine\test | 8 | 1,133 | 18 | 216 | 1,367 |
| scripts | 1 | 622 | 0 | 100 | 722 |
| wine | 4 | 627 | 5 | 125 | 757 |
| wine (Files) | 1 | 4 | 0 | 0 | 4 |
| wine\cleonos_wine_lib | 3 | 623 | 5 | 125 | 753 |
+--------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
Files
+--------------------------------------------------------------------------------------------+--------------+------------+------------+------------+------------+
| filename | language | code | comment | blank | total |
+--------------------------------------------------------------------------------------------+--------------+------------+------------+------------+------------+
| d:\Projects\C\cleonos\.github\workflows\style-check.yml | YAML | 109 | 0 | 19 | 128 |
| d:\Projects\C\cleonos\CMakeLists.txt | CMake | 130 | 0 | 10 | 140 |
| d:\Projects\C\cleonos\cleonos\c\apps\ansi_main.c | C | 2 | 0 | -2 | 0 |
| d:\Projects\C\cleonos\cleonos\c\apps\ansitest_main.c | C | 3 | 0 | -2 | 1 |
| d:\Projects\C\cleonos\cleonos\c\apps\append_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\bmpview_main.c | C | 331 | 0 | 81 | 412 |
| d:\Projects\C\cleonos\cleonos\c\apps\cat_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\cd_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\clear_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\cmd_runtime.c | C | -5 | 0 | 0 | -5 |
| d:\Projects\C\cleonos\cleonos\c\apps\cmd_runtime.h | C++ | -4 | 0 | 0 | -4 |
| d:\Projects\C\cleonos\cleonos\c\apps\cp_main.c | C | -2 | 0 | -2 | -4 |
| d:\Projects\C\cleonos\cleonos\c\apps\cut_main.c | C | -4 | 0 | -1 | -5 |
| d:\Projects\C\cleonos\cleonos\c\apps\dmesg_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\doom\doom_compat.c | C | 1,196 | 0 | 277 | 1,473 |
| d:\Projects\C\cleonos\cleonos\c\apps\doom\doom_shim.h | C++ | 17 | 1 | 3 | 21 |
| d:\Projects\C\cleonos\cleonos\c\apps\doom\doomgeneric_clks.c | C | 153 | 0 | 48 | 201 |
| d:\Projects\C\cleonos\cleonos\c\apps\doom_main.c | C | 66 | 0 | 16 | 82 |
| d:\Projects\C\cleonos\cleonos\c\apps\exec_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\exit_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\fastfetch_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\fg_main.c | C | -1 | 0 | 0 | -1 |
| d:\Projects\C\cleonos\cleonos\c\apps\fsstat_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\grep_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\head_main.c | C | 0 | 0 | -1 | -1 |
| d:\Projects\C\cleonos\cleonos\c\apps\help_main.c | C | 3 | 0 | -1 | 2 |
| d:\Projects\C\cleonos\cleonos\c\apps\kbdstat_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\kdbg_main.c | C | -1 | 0 | 0 | -1 |
| d:\Projects\C\cleonos\cleonos\c\apps\ls_main.c | C | -10 | 0 | -2 | -12 |
| d:\Projects\C\cleonos\cleonos\c\apps\memstat_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\mkdir_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\mv_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\pid_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\pwd_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\qrcode\qrcodegen.c | C | 759 | 176 | 96 | 1,031 |
| d:\Projects\C\cleonos\cleonos\c\apps\qrcode\qrcodegen.h | C++ | 62 | 268 | 34 | 364 |
| d:\Projects\C\cleonos\cleonos\c\apps\qrcode_main.c | C | 207 | 1 | 58 | 266 |
| d:\Projects\C\cleonos\cleonos\c\apps\restart_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\rm_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_cmd.c | C | -35 | 0 | -4 | -39 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_external.c | C | -10 | 0 | 0 | -10 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_input.c | C | 0 | 0 | -1 | -1 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_internal.h | C++ | -5 | 0 | -1 | -6 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_path.c | C | 1 | 0 | 0 | 1 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell_main.c | C | -1 | 0 | 0 | -1 |
| d:\Projects\C\cleonos\cleonos\c\apps\shstat_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\shutdown_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\sleep_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\sort_main.c | C | 1 | 0 | -1 | 0 |
| d:\Projects\C\cleonos\cleonos\c\apps\spawn_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\spin_main.c | C | -1 | 0 | 0 | -1 |
| d:\Projects\C\cleonos\cleonos\c\apps\stats_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\sysstat_main.c | C | 74 | 0 | 0 | 74 |
| d:\Projects\C\cleonos\cleonos\c\apps\tail_main.c | C | 0 | 0 | -1 | -1 |
| d:\Projects\C\cleonos\cleonos\c\apps\taskstat_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\top_main.c | C | -1 | 0 | 0 | -1 |
| d:\Projects\C\cleonos\cleonos\c\apps\touch_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\tty_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\uniq_main.c | C | 0 | 0 | -1 | -1 |
| d:\Projects\C\cleonos\cleonos\c\apps\userstat_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\wait_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\wavplay_main.c | C | -8 | 0 | 0 | -8 |
| d:\Projects\C\cleonos\cleonos\c\apps\wc_main.c | C | 0 | 0 | -1 | -1 |
| d:\Projects\C\cleonos\cleonos\c\apps\write_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\apps\yield_main.c | C | 0 | 0 | -2 | -2 |
| d:\Projects\C\cleonos\cleonos\c\include\cleonos_syscall.h | C++ | 17 | 0 | 2 | 19 |
| d:\Projects\C\cleonos\cleonos\c\src\stdio.c | C | 177 | 0 | 35 | 212 |
| d:\Projects\C\cleonos\cleonos\c\src\syscall.c | C | 0 | 0 | 2 | 2 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\README.md | Markdown | 51 | 0 | 17 | 68 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\Makefile | Makefile | 34 | 7 | 14 | 55 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\am_map.c | C | 970 | 162 | 224 | 1,356 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\am_map.h | C++ | 13 | 24 | 13 | 50 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\config.h | C++ | 33 | 34 | 34 | 101 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_englsh.h | C++ | 522 | 65 | 107 | 694 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_event.c | C | 22 | 27 | 15 | 64 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_event.h | C++ | 43 | 66 | 29 | 138 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_items.c | C | 77 | 38 | 14 | 129 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_items.h | C++ | 14 | 18 | 10 | 42 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_iwad.c | C | 509 | 133 | 207 | 849 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_iwad.h | C++ | 28 | 16 | 9 | 53 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_loop.c | C | 464 | 169 | 194 | 827 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_loop.h | C++ | 23 | 34 | 25 | 82 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_main.c | C | 1,089 | 418 | 339 | 1,846 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_main.h | C++ | 11 | 24 | 16 | 51 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_mode.c | C | 150 | 28 | 32 | 210 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_mode.h | C++ | 58 | 24 | 17 | 99 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_net.c | C | 158 | 61 | 63 | 282 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_player.h | C++ | 82 | 77 | 51 | 210 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_textur.h | C++ | 10 | 22 | 12 | 44 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_think.h | C++ | 19 | 29 | 21 | 69 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_ticcmd.h | C++ | 17 | 26 | 14 | 57 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\deh_main.h | C++ | 19 | 19 | 11 | 49 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\deh_misc.h | C++ | 55 | 17 | 12 | 84 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\deh_str.h | C++ | 18 | 17 | 13 | 48 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doom.h | C++ | 4 | 27 | 12 | 43 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomdata.h | C++ | 93 | 70 | 51 | 214 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomdef.c | C | 1 | 20 | 8 | 29 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomdef.h | C++ | 86 | 48 | 35 | 169 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomfeatures.h | C++ | 6 | 22 | 13 | 41 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric.c | C | 15 | 1 | 12 | 28 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric.h | C++ | 31 | 1 | 18 | 50 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric.vcxproj | XML | 339 | 0 | 0 | 339 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_allegro.c | C | 319 | 16 | 119 | 454 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_emscripten.c | C | 184 | 5 | 31 | 220 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_linuxvt.c | C | 412 | 39 | 78 | 529 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_sdl.c | C | 173 | 9 | 29 | 211 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_soso.c | C | 217 | 6 | 54 | 277 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_sosox.c | C | 197 | 3 | 48 | 248 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_win.c | C | 171 | 2 | 37 | 210 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_xlib.c | C | 161 | 7 | 46 | 214 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomkeys.h | C++ | 61 | 23 | 14 | 98 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomstat.c | C | 7 | 19 | 10 | 36 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomstat.h | C++ | 77 | 108 | 97 | 282 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomtype.h | C++ | 40 | 35 | 30 | 105 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\dstrings.c | C | 37 | 22 | 15 | 74 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\dstrings.h | C++ | 8 | 22 | 12 | 42 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\dummy.c | C | 8 | 30 | 16 | 54 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\f_finale.c | C | 528 | 77 | 114 | 719 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\f_finale.h | C++ | 9 | 23 | 14 | 46 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\f_wipe.c | C | 220 | 31 | 44 | 295 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\f_wipe.h | C++ | 29 | 22 | 13 | 64 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\g_game.c | C | 1,572 | 319 | 413 | 2,304 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\g_game.h | C++ | 29 | 28 | 24 | 81 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\gusconf.c | C | 190 | 24 | 58 | 272 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\gusconf.h | C++ | 7 | 16 | 7 | 30 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\hu_lib.c | C | 252 | 32 | 64 | 348 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\hu_lib.h | C++ | 77 | 59 | 47 | 183 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\hu_stuff.c | C | 493 | 51 | 98 | 642 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\hu_stuff.h | C++ | 21 | 23 | 16 | 60 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_allegromusic.c | C | 192 | 38 | 79 | 309 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_allegrosound.c | C | 255 | 73 | 106 | 434 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_cdmus.c | C | 159 | 31 | 54 | 244 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_cdmus.h | C++ | 20 | 15 | 7 | 42 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_endoom.c | C | 48 | 26 | 28 | 102 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_endoom.h | C++ | 4 | 19 | 7 | 30 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_input.c | C | 261 | 45 | 36 | 342 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_joystick.c | C | 254 | 38 | 68 | 360 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_joystick.h | C++ | 21 | 33 | 17 | 71 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_scale.c | C | 889 | 225 | 339 | 1,453 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_scale.h | C++ | 21 | 20 | 13 | 54 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_sdlmusic.c | C | 887 | 177 | 253 | 1,317 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_sdlsound.c | C | 616 | 195 | 266 | 1,077 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_sound.c | C | 284 | 62 | 75 | 421 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_sound.h | C++ | 104 | 71 | 82 | 257 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_swap.h | C++ | 34 | 18 | 22 | 74 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_system.c | C | 347 | 112 | 120 | 579 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_system.h | C++ | 19 | 37 | 29 | 85 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_timer.c | C | 36 | 32 | 29 | 97 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_timer.h | C++ | 9 | 23 | 11 | 43 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_video.c | C | 309 | 74 | 113 | 496 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_video.h | C++ | 63 | 65 | 48 | 176 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\icon.c | C | 260 | 0 | 3 | 263 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\info.c | C | 4,492 | 21 | 150 | 4,663 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\info.h | C++ | 1,296 | 21 | 15 | 1,332 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_argv.c | C | 150 | 52 | 64 | 266 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_argv.h | C++ | 11 | 26 | 13 | 50 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_bbox.c | C | 21 | 20 | 14 | 55 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_bbox.h | C++ | 18 | 19 | 11 | 48 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_cheat.c | C | 38 | 32 | 20 | 90 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_cheat.h | C++ | 24 | 23 | 16 | 63 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_config.c | C | 615 | 948 | 566 | 2,129 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_config.h | C++ | 16 | 17 | 7 | 40 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_controls.c | C | 269 | 57 | 73 | 399 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_controls.h | C++ | 121 | 17 | 31 | 169 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_fixed.c | C | 24 | 21 | 18 | 63 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_fixed.h | C++ | 8 | 20 | 12 | 40 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_menu.c | C | 1,502 | 250 | 374 | 2,126 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_menu.h | C++ | 11 | 33 | 18 | 62 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_misc.c | C | 335 | 87 | 115 | 537 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_misc.h | C++ | 27 | 17 | 8 | 52 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_random.c | C | 37 | 22 | 7 | 66 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_random.h | C++ | 7 | 21 | 12 | 40 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\memio.c | C | 122 | 27 | 49 | 198 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\memio.h | C++ | 18 | 14 | 7 | 39 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\mus2mid.c | C | 504 | 76 | 158 | 738 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\mus2mid.h | C++ | 6 | 0 | 3 | 9 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_client.h | C++ | 29 | 15 | 9 | 53 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_dedicated.h | C++ | 4 | 16 | 6 | 26 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_defs.h | C++ | 148 | 46 | 55 | 249 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_gui.h | C++ | 5 | 18 | 7 | 30 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_io.h | C++ | 14 | 16 | 7 | 37 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_loop.h | C++ | 6 | 16 | 6 | 28 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_packet.h | C++ | 18 | 16 | 11 | 45 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_query.h | C++ | 19 | 16 | 10 | 45 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_sdl.h | C++ | 5 | 16 | 6 | 27 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_server.h | C++ | 8 | 21 | 14 | 43 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_ceilng.c | C | 226 | 47 | 52 | 325 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_doors.c | C | 571 | 83 | 125 | 779 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_enemy.c | C | 1,341 | 238 | 428 | 2,007 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_floor.c | C | 429 | 54 | 64 | 547 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_inter.c | C | 643 | 115 | 165 | 923 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_inter.h | C++ | 4 | 17 | 10 | 31 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_lights.c | C | 201 | 72 | 78 | 351 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_local.h | C++ | 155 | 66 | 77 | 298 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_map.c | C | 828 | 304 | 317 | 1,449 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_maputl.c | C | 651 | 161 | 190 | 1,002 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_mobj.c | C | 654 | 184 | 212 | 1,050 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_mobj.h | C++ | 77 | 161 | 47 | 285 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_plats.c | C | 218 | 29 | 58 | 305 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_pspr.c | C | 537 | 173 | 179 | 889 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_pspr.h | C++ | 21 | 35 | 16 | 72 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_saveg.c | C | 975 | 435 | 482 | 1,892 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_saveg.h | C++ | 21 | 24 | 18 | 63 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_setup.c | C | 547 | 134 | 175 | 856 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_setup.h | C++ | 10 | 19 | 9 | 38 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_sight.c | C | 204 | 75 | 72 | 351 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_spec.c | C | 908 | 307 | 275 | 1,490 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_spec.h | C++ | 380 | 75 | 183 | 638 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_switch.c | C | 425 | 111 | 113 | 649 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_telept.c | C | 69 | 35 | 30 | 134 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_tick.c | C | 63 | 53 | 36 | 152 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_tick.h | C++ | 4 | 20 | 10 | 34 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_user.c | C | 219 | 73 | 88 | 380 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_bsp.c | C | 329 | 122 | 123 | 574 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_bsp.h | C++ | 23 | 19 | 20 | 62 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_data.c | C | 543 | 167 | 203 | 913 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_data.h | C++ | 14 | 25 | 13 | 52 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_defs.h | C++ | 164 | 155 | 130 | 449 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_draw.c | C | 554 | 216 | 206 | 976 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_draw.h | C++ | 40 | 33 | 32 | 105 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_local.h | C++ | 13 | 24 | 9 | 46 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_main.c | C | 556 | 155 | 181 | 892 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_main.h | C++ | 72 | 45 | 44 | 161 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_plane.c | C | 278 | 84 | 85 | 447 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_plane.h | C++ | 37 | 18 | 22 | 77 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_segs.c | C | 507 | 103 | 134 | 744 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_segs.h | C++ | 8 | 17 | 9 | 34 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_sky.c | C | 10 | 31 | 12 | 53 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_sky.h | C++ | 8 | 20 | 10 | 38 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_state.h | C++ | 49 | 36 | 43 | 128 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_things.c | C | 605 | 171 | 207 | 983 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_things.h | C++ | 28 | 20 | 18 | 66 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\s_sound.c | C | 431 | 108 | 132 | 671 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\s_sound.h | C++ | 20 | 42 | 28 | 90 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\sha1.c | C | 239 | 49 | 32 | 320 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\sha1.h | C++ | 17 | 16 | 8 | 41 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\sounds.c | C | 192 | 25 | 13 | 230 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\sounds.h | C++ | 191 | 26 | 11 | 228 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\st_lib.c | C | 186 | 35 | 64 | 285 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\st_lib.h | C++ | 91 | 60 | 59 | 210 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\st_stuff.c | C | 903 | 216 | 298 | 1,417 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\st_stuff.h | C++ | 36 | 31 | 23 | 90 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\statdump.c | C | 239 | 58 | 96 | 393 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\statdump.h | C++ | 5 | 15 | 4 | 24 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\tables.c | C | 2,173 | 37 | 18 | 2,228 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\tables.h | C++ | 26 | 44 | 27 | 97 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\v_patch.h | C++ | 17 | 25 | 9 | 51 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\v_video.c | C | 617 | 139 | 177 | 933 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\v_video.h | C++ | 34 | 40 | 35 | 109 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_checksum.c | C | 48 | 21 | 19 | 88 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_checksum.h | C++ | 5 | 17 | 6 | 28 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_file.c | C | 44 | 32 | 20 | 96 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_file.h | C++ | 23 | 31 | 25 | 79 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_file_stdc.c | C | 49 | 22 | 26 | 97 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_main.c | C | 87 | 66 | 46 | 199 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_main.h | C++ | 4 | 16 | 5 | 25 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_merge.h | C++ | 9 | 23 | 13 | 45 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_wad.c | C | 353 | 124 | 136 | 613 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_wad.h | C++ | 31 | 24 | 24 | 79 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\wi_stuff.c | C | 1,215 | 210 | 405 | 1,830 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\wi_stuff.h | C++ | 14 | 24 | 11 | 49 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\z_zone.c | C | 278 | 89 | 122 | 489 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\z_zone.h | C++ | 29 | 29 | 16 | 74 |
| d:\Projects\C\cleonos\clks\arch\aarch64\boot.c | C | -6 | 0 | -1 | -7 |
| d:\Projects\C\cleonos\clks\arch\aarch64\startup\boot.c | C | 6 | 0 | 1 | 7 |
| d:\Projects\C\cleonos\clks\arch\x86_64\boot.c | C | -6 | 0 | -1 | -7 |
| d:\Projects\C\cleonos\clks\arch\x86_64\exec_stack_call.S | Go Assembly | -40 | 0 | -8 | -48 |
| d:\Projects\C\cleonos\clks\arch\x86_64\interrupt\interrupt_stubs.S | Go Assembly | 108 | 0 | 12 | 120 |
| d:\Projects\C\cleonos\clks\arch\x86_64\interrupt_stubs.S | Go Assembly | -108 | 0 | -12 | -120 |
| d:\Projects\C\cleonos\clks\arch\x86_64\startup\boot.c | C | 6 | 0 | 1 | 7 |
| d:\Projects\C\cleonos\clks\arch\x86_64\startup\exec_stack_call.S | Go Assembly | 40 | 0 | 8 | 48 |
| d:\Projects\C\cleonos\clks\drivers\audio\pcspeaker.c | C | -101 | 0 | -25 | -126 |
| d:\Projects\C\cleonos\clks\drivers\serial\serial.c | C | -52 | 0 | -16 | -68 |
| d:\Projects\C\cleonos\clks\drivers\video\font8x8.c | C | -67 | 0 | -8 | -75 |
| d:\Projects\C\cleonos\clks\drivers\video\font8x8.h | C++ | -5 | 0 | -3 | -8 |
| d:\Projects\C\cleonos\clks\drivers\video\framebuffer.c | C | -251 | 0 | -70 | -321 |
| d:\Projects\C\cleonos\clks\drivers\video\psf_font.c | C | -230 | 0 | -56 | -286 |
| d:\Projects\C\cleonos\clks\drivers\video\psf_font.h | C++ | -15 | 0 | -5 | -20 |
| d:\Projects\C\cleonos\clks\include\clks\exec.h | C++ | -8 | 0 | 0 | -8 |
| d:\Projects\C\cleonos\clks\include\clks\keyboard.h | C++ | 0 | 0 | -1 | -1 |
| d:\Projects\C\cleonos\clks\include\clks\limine.h | C++ | -20 | 0 | 0 | -20 |
| d:\Projects\C\cleonos\clks\include\clks\panic.h | C++ | -5 | 0 | 0 | -5 |
| d:\Projects\C\cleonos\clks\include\clks\syscall.h | C++ | 3 | 0 | 0 | 3 |
| d:\Projects\C\cleonos\clks\include\clks\task.h | C++ | -5 | 0 | 0 | -5 |
| d:\Projects\C\cleonos\clks\include\clks\types.h | C++ | -3 | 0 | 0 | -3 |
| d:\Projects\C\cleonos\clks\kernel\boot\limine\limine_requests.c | C | 76 | 0 | 26 | 102 |
| d:\Projects\C\cleonos\clks\kernel\core\interrupts.c | C | 307 | 0 | 43 | 350 |
| d:\Projects\C\cleonos\clks\kernel\core\kmain.c | C | 388 | 1 | 77 | 466 |
| d:\Projects\C\cleonos\clks\kernel\core\log.c | C | 179 | 0 | 48 | 227 |
| d:\Projects\C\cleonos\clks\kernel\core\panic.c | C | 527 | 0 | 155 | 682 |
| d:\Projects\C\cleonos\clks\kernel\core\scheduler.c | C | 136 | 0 | 44 | 180 |
| d:\Projects\C\cleonos\clks\kernel\core\service.c | C | 107 | 0 | 34 | 141 |
| d:\Projects\C\cleonos\clks\kernel\desktop.c | C | -321 | 0 | -86 | -407 |
| d:\Projects\C\cleonos\clks\kernel\driver.c | C | -169 | 0 | -49 | -218 |
| d:\Projects\C\cleonos\clks\kernel\elf64.c | C | -239 | 0 | -73 | -312 |
| d:\Projects\C\cleonos\clks\kernel\elfrunner.c | C | -30 | 0 | -8 | -38 |
| d:\Projects\C\cleonos\clks\kernel\exec.c | C | -2,037 | -1 | -555 | -2,593 |
| d:\Projects\C\cleonos\clks\kernel\fs.c | C | -701 | 0 | -222 | -923 |
| d:\Projects\C\cleonos\clks\kernel\hal\audio\pcspeaker.c | C | 101 | 0 | 25 | 126 |
| d:\Projects\C\cleonos\clks\kernel\hal\serial\serial.c | C | 51 | 0 | 16 | 67 |
| d:\Projects\C\cleonos\clks\kernel\hal\video\font8x8.c | C | 45 | 0 | 8 | 53 |
| d:\Projects\C\cleonos\clks\kernel\hal\video\font8x8.h | C++ | 5 | 0 | 3 | 8 |
| d:\Projects\C\cleonos\clks\kernel\hal\video\framebuffer.c | C | 247 | 0 | 69 | 316 |
| d:\Projects\C\cleonos\clks\kernel\hal\video\psf_font.c | C | 203 | 0 | 56 | 259 |
| d:\Projects\C\cleonos\clks\kernel\hal\video\psf_font.h | C++ | 15 | 0 | 5 | 20 |
| d:\Projects\C\cleonos\clks\kernel\heap.c | C | -134 | 0 | -42 | -176 |
| d:\Projects\C\cleonos\clks\kernel\input\keyboard.c | C | 370 | 0 | 95 | 465 |
| d:\Projects\C\cleonos\clks\kernel\input\mouse.c | C | 243 | 0 | 63 | 306 |
| d:\Projects\C\cleonos\clks\kernel\interface\desktop.c | C | 321 | 0 | 86 | 407 |
| d:\Projects\C\cleonos\clks\kernel\interface\shell.c | C | 1,232 | 0 | 316 | 1,548 |
| d:\Projects\C\cleonos\clks\kernel\interface\tty.c | C | 1,137 | 0 | 288 | 1,425 |
| d:\Projects\C\cleonos\clks\kernel\interrupts.c | C | -317 | 0 | -44 | -361 |
| d:\Projects\C\cleonos\clks\kernel\kelf.c | C | -203 | -1 | -53 | -257 |
| d:\Projects\C\cleonos\clks\kernel\keyboard.c | C | -379 | 0 | -96 | -475 |
| d:\Projects\C\cleonos\clks\kernel\kmain.c | C | -388 | -1 | -77 | -466 |
| d:\Projects\C\cleonos\clks\kernel\limine_requests.c | C | -76 | 0 | -26 | -102 |
| d:\Projects\C\cleonos\clks\kernel\log.c | C | -185 | 0 | -48 | -233 |
| d:\Projects\C\cleonos\clks\kernel\memory\heap.c | C | 137 | 0 | 44 | 181 |
| d:\Projects\C\cleonos\clks\kernel\memory\pmm.c | C | 82 | 0 | 23 | 105 |
| d:\Projects\C\cleonos\clks\kernel\mouse.c | C | -246 | 0 | -63 | -309 |
| d:\Projects\C\cleonos\clks\kernel\panic.c | C | -546 | 0 | -155 | -701 |
| d:\Projects\C\cleonos\clks\kernel\pmm.c | C | -82 | 0 | -23 | -105 |
| d:\Projects\C\cleonos\clks\kernel\ramdisk.c | C | -172 | 0 | -50 | -222 |
| d:\Projects\C\cleonos\clks\kernel\runtime\driver.c | C | 166 | 0 | 49 | 215 |
| d:\Projects\C\cleonos\clks\kernel\runtime\elf64.c | C | 279 | 1 | 84 | 364 |
| d:\Projects\C\cleonos\clks\kernel\runtime\elfrunner.c | C | 30 | 0 | 8 | 38 |
| d:\Projects\C\cleonos\clks\kernel\runtime\exec.c | C | 2,179 | 1 | 595 | 2,775 |
| d:\Projects\C\cleonos\clks\kernel\runtime\kelf.c | C | 198 | 1 | 52 | 251 |
| d:\Projects\C\cleonos\clks\kernel\runtime\syscall.c | C | 2,021 | 0 | 507 | 2,528 |
| d:\Projects\C\cleonos\clks\kernel\runtime\userland.c | C | 146 | 0 | 38 | 184 |
| d:\Projects\C\cleonos\clks\kernel\scheduler.c | C | -136 | 0 | -44 | -180 |
| d:\Projects\C\cleonos\clks\kernel\service.c | C | -113 | 0 | -34 | -147 |
| d:\Projects\C\cleonos\clks\kernel\shell.c | C | -1,250 | 0 | -317 | -1,567 |
| d:\Projects\C\cleonos\clks\kernel\storage\fs.c | C | 684 | 0 | 222 | 906 |
| d:\Projects\C\cleonos\clks\kernel\storage\ramdisk.c | C | 172 | 0 | 50 | 222 |
| d:\Projects\C\cleonos\clks\kernel\support\libc_compat.c | C | 25 | 0 | 7 | 32 |
| d:\Projects\C\cleonos\clks\kernel\support\string.c | C | 54 | 0 | 16 | 70 |
| d:\Projects\C\cleonos\clks\kernel\syscall.c | C | -1,588 | 0 | -401 | -1,989 |
| d:\Projects\C\cleonos\clks\kernel\tty.c | C | -1,188 | 0 | -290 | -1,478 |
| d:\Projects\C\cleonos\clks\kernel\userland.c | C | -145 | 0 | -38 | -183 |
| d:\Projects\C\cleonos\clks\lib\libc_compat.c | C | -25 | 0 | -7 | -32 |
| d:\Projects\C\cleonos\clks\lib\string.c | C | -54 | 0 | -16 | -70 |
| d:\Projects\C\cleonos\configs\menuconfig\clks_features.json | JSON | 180 | 0 | 0 | 180 |
| d:\Projects\C\cleonos\docs\syscall.md | Markdown | 46 | 0 | 14 | 60 |
| d:\Projects\C\cleonos\limine\.github\dependabot.yml | YAML | 7 | 0 | 1 | 8 |
| d:\Projects\C\cleonos\limine\.github\workflows\binary-release.yml | YAML | 78 | 0 | 21 | 99 |
| d:\Projects\C\cleonos\limine\.github\workflows\check.yml | YAML | 34 | 0 | 12 | 46 |
| d:\Projects\C\cleonos\limine\.github\workflows\pr_branch_check.yml | YAML | 13 | 0 | 3 | 16 |
| d:\Projects\C\cleonos\limine\.github\workflows\qa.yml | YAML | 14 | 0 | 5 | 19 |
| d:\Projects\C\cleonos\limine\.github\workflows\release.yml | YAML | 64 | 0 | 17 | 81 |
| d:\Projects\C\cleonos\limine\3RDPARTY.md | Markdown | 53 | 0 | 15 | 68 |
| d:\Projects\C\cleonos\limine\CONFIG.md | Markdown | 320 | 0 | 53 | 373 |
| d:\Projects\C\cleonos\limine\FAQ.md | Markdown | 26 | 0 | 10 | 36 |
| d:\Projects\C\cleonos\limine\INSTALL.md | Markdown | 37 | 0 | 15 | 52 |
| d:\Projects\C\cleonos\limine\README.md | Markdown | 70 | 0 | 33 | 103 |
| d:\Projects\C\cleonos\limine\USAGE.md | Markdown | 85 | 0 | 23 | 108 |
| d:\Projects\C\cleonos\limine\common\common.mk | Makefile | 562 | 0 | 115 | 677 |
| d:\Projects\C\cleonos\limine\common\crypt\blake2b.c | C | 179 | 3 | 39 | 221 |
| d:\Projects\C\cleonos\limine\common\crypt\blake2b.h | C++ | 6 | 0 | 5 | 11 |
| d:\Projects\C\cleonos\limine\common\drivers\disk.h | C++ | 18 | 0 | 9 | 27 |
| d:\Projects\C\cleonos\limine\common\drivers\disk.s2.c | C | 646 | 33 | 178 | 857 |
| d:\Projects\C\cleonos\limine\common\drivers\edid.c | C | 61 | 0 | 25 | 86 |
| d:\Projects\C\cleonos\limine\common\drivers\edid.h | C++ | 37 | 0 | 7 | 44 |
| d:\Projects\C\cleonos\limine\common\drivers\gop.c | C | 306 | 3 | 73 | 382 |
| d:\Projects\C\cleonos\limine\common\drivers\gop.h | C++ | 13 | 0 | 7 | 20 |
| d:\Projects\C\cleonos\limine\common\drivers\serial.c | C | 37 | 1 | 13 | 51 |
| d:\Projects\C\cleonos\limine\common\drivers\serial.h | C++ | 9 | 0 | 7 | 16 |
| d:\Projects\C\cleonos\limine\common\drivers\vbe.c | C | 307 | 8 | 53 | 368 |
| d:\Projects\C\cleonos\limine\common\drivers\vbe.h | C++ | 11 | 0 | 5 | 16 |
| d:\Projects\C\cleonos\limine\common\drivers\vga_textmode.c | C | 294 | 5 | 71 | 370 |
| d:\Projects\C\cleonos\limine\common\drivers\vga_textmode.h | C++ | 24 | 0 | 12 | 36 |
| d:\Projects\C\cleonos\limine\common\entry.s2.c | C | 106 | 1 | 28 | 135 |
| d:\Projects\C\cleonos\limine\common\entry.s3.c | C | 202 | 0 | 47 | 249 |
| d:\Projects\C\cleonos\limine\common\fs\fat32.h | C++ | 7 | 0 | 5 | 12 |
| d:\Projects\C\cleonos\limine\common\fs\fat32.s2.c | C | 577 | 39 | 111 | 727 |
| d:\Projects\C\cleonos\limine\common\fs\file.h | C++ | 39 | 0 | 7 | 46 |
| d:\Projects\C\cleonos\limine\common\fs\file.s2.c | C | 163 | 0 | 22 | 185 |
| d:\Projects\C\cleonos\limine\common\fs\iso9660.h | C++ | 7 | 0 | 4 | 11 |
| d:\Projects\C\cleonos\limine\common\fs\iso9660.s2.c | C | 407 | 38 | 94 | 539 |
| d:\Projects\C\cleonos\limine\common\gensyms.sh | Shell Script | 33 | 2 | 17 | 52 |
| d:\Projects\C\cleonos\limine\common\lib\acpi.c | C | 344 | 27 | 102 | 473 |
| d:\Projects\C\cleonos\limine\common\lib\acpi.h | C++ | 163 | 24 | 30 | 217 |
| d:\Projects\C\cleonos\limine\common\lib\bli.c | C | 67 | 4 | 20 | 91 |
| d:\Projects\C\cleonos\limine\common\lib\bli.h | C++ | 7 | 0 | 5 | 12 |
| d:\Projects\C\cleonos\limine\common\lib\config.c | C | 628 | 11 | 126 | 765 |
| d:\Projects\C\cleonos\limine\common\lib\config.h | C++ | 28 | 0 | 9 | 37 |
| d:\Projects\C\cleonos\limine\common\lib\elf.c | C | 964 | 27 | 212 | 1,203 |
| d:\Projects\C\cleonos\limine\common\lib\elf.h | C++ | 74 | 0 | 14 | 88 |
| d:\Projects\C\cleonos\limine\common\lib\elsewhere.c | C | 81 | 7 | 17 | 105 |
| d:\Projects\C\cleonos\limine\common\lib\elsewhere.h | C++ | 16 | 0 | 5 | 21 |
| d:\Projects\C\cleonos\limine\common\lib\fb.c | C | 153 | 4 | 17 | 174 |
| d:\Projects\C\cleonos\limine\common\lib\fb.h | C++ | 36 | 0 | 12 | 48 |
| d:\Projects\C\cleonos\limine\common\lib\fdt.c | C | 33 | 0 | 12 | 45 |
| d:\Projects\C\cleonos\limine\common\lib\fdt.h | C++ | 10 | 0 | 6 | 16 |
| d:\Projects\C\cleonos\limine\common\lib\getchar.c | C | 306 | 1 | 59 | 366 |
| d:\Projects\C\cleonos\limine\common\lib\getchar.h | C++ | 23 | 0 | 6 | 29 |
| d:\Projects\C\cleonos\limine\common\lib\gterm.c | C | 813 | 9 | 118 | 940 |
| d:\Projects\C\cleonos\limine\common\lib\gterm.h | C++ | 29 | 0 | 6 | 35 |
| d:\Projects\C\cleonos\limine\common\lib\guid.c | C | 82 | 0 | 14 | 96 |
| d:\Projects\C\cleonos\limine\common\lib\guid.h | C++ | 15 | 1 | 5 | 21 |
| d:\Projects\C\cleonos\limine\common\lib\image.c | C | 52 | 2 | 18 | 72 |
| d:\Projects\C\cleonos\limine\common\lib\image.h | C++ | 27 | 0 | 6 | 33 |
| d:\Projects\C\cleonos\limine\common\lib\libc.c | C | 114 | 3 | 15 | 132 |
| d:\Projects\C\cleonos\limine\common\lib\libc.h | C++ | 29 | 0 | 8 | 37 |
| d:\Projects\C\cleonos\limine\common\lib\libc.s2.c | C | 122 | 2 | 26 | 150 |
| d:\Projects\C\cleonos\limine\common\lib\macros.aarch64_asm.h | C++ | 44 | 4 | 5 | 53 |
| d:\Projects\C\cleonos\limine\common\lib\memory.s2.c | C | 41 | 0 | 13 | 54 |
| d:\Projects\C\cleonos\limine\common\lib\misc.c | C | 322 | 8 | 90 | 420 |
| d:\Projects\C\cleonos\limine\common\lib\misc.h | C++ | 122 | 0 | 32 | 154 |
| d:\Projects\C\cleonos\limine\common\lib\misc.s2.c | C | 117 | 0 | 12 | 129 |
| d:\Projects\C\cleonos\limine\common\lib\panic.s2.c | C | 70 | 8 | 12 | 90 |
| d:\Projects\C\cleonos\limine\common\lib\part.h | C++ | 86 | 2 | 23 | 111 |
| d:\Projects\C\cleonos\limine\common\lib\part.s2.c | C | 464 | 31 | 121 | 616 |
| d:\Projects\C\cleonos\limine\common\lib\pe.c | C | 398 | 5 | 98 | 501 |
| d:\Projects\C\cleonos\limine\common\lib\pe.h | C++ | 8 | 0 | 5 | 13 |
| d:\Projects\C\cleonos\limine\common\lib\print.h | C++ | 11 | 0 | 6 | 17 |
| d:\Projects\C\cleonos\limine\common\lib\print.s2.c | C | 200 | 0 | 36 | 236 |
| d:\Projects\C\cleonos\limine\common\lib\rand.c | C | 112 | 5 | 25 | 142 |
| d:\Projects\C\cleonos\limine\common\lib\rand.h | C++ | 7 | 0 | 5 | 12 |
| d:\Projects\C\cleonos\limine\common\lib\real.h | C++ | 26 | 0 | 9 | 35 |
| d:\Projects\C\cleonos\limine\common\lib\stb_image.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\limine\common\lib\term.c | C | 266 | 5 | 49 | 320 |
| d:\Projects\C\cleonos\limine\common\lib\term.h | C++ | 47 | 0 | 13 | 60 |
| d:\Projects\C\cleonos\limine\common\lib\time.c | C | 59 | 2 | 15 | 76 |
| d:\Projects\C\cleonos\limine\common\lib\time.h | C++ | 5 | 0 | 4 | 9 |
| d:\Projects\C\cleonos\limine\common\lib\trace.h | C++ | 5 | 0 | 4 | 9 |
| d:\Projects\C\cleonos\limine\common\lib\trace.s2.c | C | 79 | 0 | 9 | 88 |
| d:\Projects\C\cleonos\limine\common\lib\uri.c | C | 224 | 9 | 54 | 287 |
| d:\Projects\C\cleonos\limine\common\lib\uri.h | C++ | 7 | 0 | 4 | 11 |
| d:\Projects\C\cleonos\limine\common\libc-compat\stdlib.h | C++ | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\limine\common\libc-compat\string.h | C++ | 19 | 0 | 5 | 24 |
| d:\Projects\C\cleonos\limine\common\menu.c | C | 1,378 | 30 | 150 | 1,558 |
| d:\Projects\C\cleonos\limine\common\menu.h | C++ | 13 | 0 | 8 | 21 |
| d:\Projects\C\cleonos\limine\common\mm\mtrr.c | C | 91 | 18 | 32 | 141 |
| d:\Projects\C\cleonos\limine\common\mm\mtrr.h | C++ | 7 | 0 | 5 | 12 |
| d:\Projects\C\cleonos\limine\common\mm\pmm.c | C | 70 | 3 | 16 | 89 |
| d:\Projects\C\cleonos\limine\common\mm\pmm.h | C++ | 63 | 0 | 18 | 81 |
| d:\Projects\C\cleonos\limine\common\mm\pmm.s2.c | C | 662 | 37 | 192 | 891 |
| d:\Projects\C\cleonos\limine\common\mm\vmm.c | C | 416 | 30 | 110 | 556 |
| d:\Projects\C\cleonos\limine\common\mm\vmm.h | C++ | 125 | 6 | 45 | 176 |
| d:\Projects\C\cleonos\limine\common\protos\chainload.c | C | 283 | 7 | 78 | 368 |
| d:\Projects\C\cleonos\limine\common\protos\chainload.h | C++ | 5 | 0 | 4 | 9 |
| d:\Projects\C\cleonos\limine\common\protos\efi_boot_entry.c | C | 94 | 6 | 26 | 126 |
| d:\Projects\C\cleonos\limine\common\protos\efi_boot_entry.h | C++ | 5 | 0 | 4 | 9 |
| d:\Projects\C\cleonos\limine\common\protos\limine.c | C | 1,523 | 80 | 331 | 1,934 |
| d:\Projects\C\cleonos\limine\common\protos\limine.h | C++ | 5 | 0 | 4 | 9 |
| d:\Projects\C\cleonos\limine\common\protos\linux.h | C++ | 59 | 1 | 14 | 74 |
| d:\Projects\C\cleonos\limine\common\protos\linux_risc.c | C | 412 | 22 | 99 | 533 |
| d:\Projects\C\cleonos\limine\common\protos\linux_x86.c | C | 527 | 41 | 96 | 664 |
| d:\Projects\C\cleonos\limine\common\protos\multiboot.h | C++ | 13 | 0 | 5 | 18 |
| d:\Projects\C\cleonos\limine\common\protos\multiboot1.c | C | 394 | 14 | 105 | 513 |
| d:\Projects\C\cleonos\limine\common\protos\multiboot1.h | C++ | 76 | 0 | 25 | 101 |
| d:\Projects\C\cleonos\limine\common\protos\multiboot2.c | C | 782 | 77 | 182 | 1,041 |
| d:\Projects\C\cleonos\limine\common\protos\multiboot2.h | C++ | 331 | 30 | 58 | 419 |
| d:\Projects\C\cleonos\limine\common\pxe\pxe.h | C++ | 96 | 0 | 16 | 112 |
| d:\Projects\C\cleonos\limine\common\pxe\pxe.s2.c | C | 53 | 2 | 18 | 73 |
| d:\Projects\C\cleonos\limine\common\pxe\tftp.h | C++ | 36 | 0 | 11 | 47 |
| d:\Projects\C\cleonos\limine\common\pxe\tftp.s2.c | C | 211 | 5 | 52 | 268 |
| d:\Projects\C\cleonos\limine\common\stb_image.patch | Diff | 74 | 7 | 10 | 91 |
| d:\Projects\C\cleonos\limine\common\sys\a20.h | C++ | 6 | 0 | 4 | 10 |
| d:\Projects\C\cleonos\limine\common\sys\a20.s2.c | C | 67 | 5 | 21 | 93 |
| d:\Projects\C\cleonos\limine\common\sys\cpu.h | C++ | 429 | 2 | 82 | 513 |
| d:\Projects\C\cleonos\limine\common\sys\cpu.s2.c | C | 58 | 6 | 14 | 78 |
| d:\Projects\C\cleonos\limine\common\sys\cpu_riscv.c | C | 353 | 10 | 65 | 428 |
| d:\Projects\C\cleonos\limine\common\sys\e820.h | C++ | 9 | 0 | 5 | 14 |
| d:\Projects\C\cleonos\limine\common\sys\e820.s2.c | C | 33 | 0 | 12 | 45 |
| d:\Projects\C\cleonos\limine\common\sys\exceptions.s2.c | C | 46 | 0 | 5 | 51 |
| d:\Projects\C\cleonos\limine\common\sys\gdt.h | C++ | 23 | 0 | 7 | 30 |
| d:\Projects\C\cleonos\limine\common\sys\gdt.s2.c | C | 83 | 0 | 13 | 96 |
| d:\Projects\C\cleonos\limine\common\sys\idt.c | C | 53 | 3 | 16 | 72 |
| d:\Projects\C\cleonos\limine\common\sys\idt.h | C++ | 43 | 0 | 17 | 60 |
| d:\Projects\C\cleonos\limine\common\sys\idt.s2.c | C | 26 | 0 | 10 | 36 |
| d:\Projects\C\cleonos\limine\common\sys\iommu.c | C | 94 | 21 | 30 | 145 |
| d:\Projects\C\cleonos\limine\common\sys\iommu.h | C++ | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\limine\common\sys\lapic.c | C | 420 | 23 | 69 | 512 |
| d:\Projects\C\cleonos\limine\common\sys\lapic.h | C++ | 30 | 0 | 9 | 39 |
| d:\Projects\C\cleonos\limine\common\sys\pic.c | C | 37 | 1 | 11 | 49 |
| d:\Projects\C\cleonos\limine\common\sys\pic.h | C++ | 8 | 0 | 4 | 12 |
| d:\Projects\C\cleonos\limine\common\sys\sbi.h | C++ | 25 | 0 | 8 | 33 |
| d:\Projects\C\cleonos\limine\common\sys\smp.c | C | 917 | 54 | 259 | 1,230 |
| d:\Projects\C\cleonos\limine\common\sys\smp.h | C++ | 38 | 0 | 13 | 51 |
| d:\Projects\C\cleonos\limine\decompressor\decompressor.mk | Makefile | 70 | 0 | 15 | 85 |
| d:\Projects\C\cleonos\limine\decompressor\main.c | C | 31 | 2 | 5 | 38 |
| d:\Projects\C\cleonos\limine\decompressor\memory.c | C | 41 | 0 | 13 | 54 |
| d:\Projects\C\cleonos\limine\decompressor\tinf.patch | Diff | 42 | 3 | 10 | 55 |
| d:\Projects\C\cleonos\limine\host\hgen.sh | Shell Script | 10 | 1 | 6 | 17 |
| d:\Projects\C\cleonos\limine\host\host.mk | Makefile | 14 | 0 | 6 | 20 |
| d:\Projects\C\cleonos\limine\host\limine.c | C | 1,192 | 32 | 225 | 1,449 |
| d:\Projects\C\cleonos\limine\test.mk | Makefile | 263 | 0 | 16 | 279 |
| d:\Projects\C\cleonos\limine\test\e9print.c | C | 81 | 0 | 18 | 99 |
| d:\Projects\C\cleonos\limine\test\e9print.h | C++ | 7 | 0 | 3 | 10 |
| d:\Projects\C\cleonos\limine\test\limine.c | C | 624 | 0 | 82 | 706 |
| d:\Projects\C\cleonos\limine\test\limine.conf | Properties | 40 | 1 | 19 | 60 |
| d:\Projects\C\cleonos\limine\test\memory.c | C | 40 | 0 | 13 | 53 |
| d:\Projects\C\cleonos\limine\test\multiboot.c | C | 57 | 12 | 24 | 93 |
| d:\Projects\C\cleonos\limine\test\multiboot2.c | C | 141 | 5 | 36 | 182 |
| d:\Projects\C\cleonos\limine\test\test.mk | Makefile | 143 | 0 | 21 | 164 |
| d:\Projects\C\cleonos\limine\version.sh | Shell Script | 19 | 1 | 10 | 30 |
| d:\Projects\C\cleonos\scripts\menuconfig.py | Python | 622 | 0 | 100 | 722 |
| d:\Projects\C\cleonos\wine\README.md | Markdown | 4 | 0 | 0 | 4 |
| d:\Projects\C\cleonos\wine\cleonos_wine_lib\constants.py | Python | 36 | 3 | 3 | 42 |
| d:\Projects\C\cleonos\wine\cleonos_wine_lib\runner.py | Python | 469 | 0 | 91 | 560 |
| d:\Projects\C\cleonos\wine\cleonos_wine_lib\state.py | Python | 118 | 2 | 31 | 151 |
| Total | | 77,719 | 13,900 | 20,413 | 112,032 |
+--------------------------------------------------------------------------------------------+--------------+------------+------------+------------+------------+

View File

@@ -0,0 +1,571 @@
"filename", "language", "YAML", "pip requirements", "Markdown", "C", "Python", "CMake", "C++", "Makefile", "XML", "JSON", "Properties", "Rust", "Batch", "Go Assembly", "Shell Script", "Diff", "PowerShell", "comment", "blank", "total"
"d:\Projects\C\cleonos\.github\workflows\build-os.yml", "YAML", 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 11, 88
"d:\Projects\C\cleonos\.github\workflows\style-check.yml", "YAML", 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 128
"d:\Projects\C\cleonos\CMakeLists.txt", "CMake", 0, 0, 0, 0, 0, 906, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 1014
"d:\Projects\C\cleonos\Makefile", "Makefile", 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 154
"d:\Projects\C\cleonos\README.md", "Markdown", 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 126
"d:\Projects\C\cleonos\README.zh-CN.md", "Markdown", 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 126
"d:\Projects\C\cleonos\cleonos\c\apps\ansi_main.c", "C", 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 54
"d:\Projects\C\cleonos\cleonos\c\apps\ansitest_main.c", "C", 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 178
"d:\Projects\C\cleonos\cleonos\c\apps\append_main.c", "C", 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 90
"d:\Projects\C\cleonos\cleonos\c\apps\args_main.c", "C", 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 62
"d:\Projects\C\cleonos\cleonos\c\apps\bg_main.c", "C", 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 127
"d:\Projects\C\cleonos\cleonos\c\apps\bmpview_main.c", "C", 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 412
"d:\Projects\C\cleonos\cleonos\c\apps\cat_main.c", "C", 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 107
"d:\Projects\C\cleonos\cleonos\c\apps\cd_main.c", "C", 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 67
"d:\Projects\C\cleonos\cleonos\c\apps\clear_main.c", "C", 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 48
"d:\Projects\C\cleonos\cleonos\c\apps\cmd_runtime.c", "C", 0, 0, 0, 459, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 598
"d:\Projects\C\cleonos\cleonos\c\apps\cmd_runtime.h", "C++", 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 99
"d:\Projects\C\cleonos\cleonos\c\apps\cp_main.c", "C", 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 132
"d:\Projects\C\cleonos\cleonos\c\apps\cut_main.c", "C", 0, 0, 0, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 54, 265
"d:\Projects\C\cleonos\cleonos\c\apps\dltest_main.c", "C", 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 49
"d:\Projects\C\cleonos\cleonos\c\apps\dmesg_main.c", "C", 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 80
"d:\Projects\C\cleonos\cleonos\c\apps\doom\doom_compat.c", "C", 0, 0, 0, 1196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, 1473
"d:\Projects\C\cleonos\cleonos\c\apps\doom\doom_shim.h", "C++", 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 21
"d:\Projects\C\cleonos\cleonos\c\apps\doom\doomgeneric_clks.c", "C", 0, 0, 0, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 201
"d:\Projects\C\cleonos\cleonos\c\apps\doom_main.c", "C", 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 82
"d:\Projects\C\cleonos\cleonos\c\apps\elfrunner_kmain.c", "C", 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 9
"d:\Projects\C\cleonos\cleonos\c\apps\elfrunner_main.c", "C", 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 9
"d:\Projects\C\cleonos\cleonos\c\apps\exec_main.c", "C", 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 107
"d:\Projects\C\cleonos\cleonos\c\apps\exit_main.c", "C", 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 66
"d:\Projects\C\cleonos\cleonos\c\apps\fastfetch_main.c", "C", 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 212
"d:\Projects\C\cleonos\cleonos\c\apps\fg_main.c", "C", 0, 0, 0, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 185
"d:\Projects\C\cleonos\cleonos\c\apps\fsstat_main.c", "C", 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 55
"d:\Projects\C\cleonos\cleonos\c\apps\grep_main.c", "C", 0, 0, 0, 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 249
"d:\Projects\C\cleonos\cleonos\c\apps\head_main.c", "C", 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 211
"d:\Projects\C\cleonos\cleonos\c\apps\hello_main.c", "C", 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 7
"d:\Projects\C\cleonos\cleonos\c\apps\help_main.c", "C", 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 92
"d:\Projects\C\cleonos\cleonos\c\apps\jobs_main.c", "C", 0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 146
"d:\Projects\C\cleonos\cleonos\c\apps\kbdstat_main.c", "C", 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 53
"d:\Projects\C\cleonos\cleonos\c\apps\kdbg_main.c", "C", 0, 0, 0, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 269
"d:\Projects\C\cleonos\cleonos\c\apps\kill_main.c", "C", 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 183
"d:\Projects\C\cleonos\cleonos\c\apps\libctest_main.c", "C", 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 258
"d:\Projects\C\cleonos\cleonos\c\apps\libdemo_main.c", "C", 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 25
"d:\Projects\C\cleonos\cleonos\c\apps\ls_main.c", "C", 0, 0, 0, 266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 345
"d:\Projects\C\cleonos\cleonos\c\apps\memc_kmain.c", "C", 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 9
"d:\Projects\C\cleonos\cleonos\c\apps\memc_main.c", "C", 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 11
"d:\Projects\C\cleonos\cleonos\c\apps\memstat_main.c", "C", 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 52
"d:\Projects\C\cleonos\cleonos\c\apps\mkdir_main.c", "C", 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 71
"d:\Projects\C\cleonos\cleonos\c\apps\mv_main.c", "C", 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 128
"d:\Projects\C\cleonos\cleonos\c\apps\pid_main.c", "C", 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 48
"d:\Projects\C\cleonos\cleonos\c\apps\procstat_main.c", "C", 0, 0, 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 245
"d:\Projects\C\cleonos\cleonos\c\apps\ps_main.c", "C", 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 195
"d:\Projects\C\cleonos\cleonos\c\apps\pwd_main.c", "C", 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 48
"d:\Projects\C\cleonos\cleonos\c\apps\qrcode\qrcodegen.c", "C", 0, 0, 0, 759, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 96, 1031
"d:\Projects\C\cleonos\cleonos\c\apps\qrcode\qrcodegen.h", "C++", 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 268, 34, 364
"d:\Projects\C\cleonos\cleonos\c\apps\qrcode_main.c", "C", 0, 0, 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 58, 266
"d:\Projects\C\cleonos\cleonos\c\apps\restart_main.c", "C", 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 49
"d:\Projects\C\cleonos\cleonos\c\apps\rm_main.c", "C", 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 71
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_cmd.c", "C", 0, 0, 0, 2499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 633, 3132
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_external.c", "C", 0, 0, 0, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 231
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_input.c", "C", 0, 0, 0, 567, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 715
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_internal.h", "C++", 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 119
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_path.c", "C", 0, 0, 0, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 204
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_script.c", "C", 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 47
"d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_util.c", "C", 0, 0, 0, 263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 340
"d:\Projects\C\cleonos\cleonos\c\apps\shell_main.c", "C", 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 24
"d:\Projects\C\cleonos\cleonos\c\apps\shstat_main.c", "C", 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 54
"d:\Projects\C\cleonos\cleonos\c\apps\shutdown_main.c", "C", 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 49
"d:\Projects\C\cleonos\cleonos\c\apps\sleep_main.c", "C", 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 64
"d:\Projects\C\cleonos\cleonos\c\apps\sort_main.c", "C", 0, 0, 0, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 268
"d:\Projects\C\cleonos\cleonos\c\apps\spawn_main.c", "C", 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 94
"d:\Projects\C\cleonos\cleonos\c\apps\spin_main.c", "C", 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 16
"d:\Projects\C\cleonos\cleonos\c\apps\stats_main.c", "C", 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 118
"d:\Projects\C\cleonos\cleonos\c\apps\sysstat_main.c", "C", 0, 0, 0, 341, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 386
"d:\Projects\C\cleonos\cleonos\c\apps\tail_main.c", "C", 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 244
"d:\Projects\C\cleonos\cleonos\c\apps\taskstat_main.c", "C", 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 52
"d:\Projects\C\cleonos\cleonos\c\apps\top_main.c", "C", 0, 0, 0, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 238
"d:\Projects\C\cleonos\cleonos\c\apps\touch_main.c", "C", 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 72
"d:\Projects\C\cleonos\cleonos\c\apps\tty_main.c", "C", 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 79
"d:\Projects\C\cleonos\cleonos\c\apps\ttydrv_main.c", "C", 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 9
"d:\Projects\C\cleonos\cleonos\c\apps\uniq_main.c", "C", 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 215
"d:\Projects\C\cleonos\cleonos\c\apps\userstat_main.c", "C", 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 57
"d:\Projects\C\cleonos\cleonos\c\apps\wait_main.c", "C", 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 83
"d:\Projects\C\cleonos\cleonos\c\apps\wavplay_main.c", "C", 0, 0, 0, 447, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 557
"d:\Projects\C\cleonos\cleonos\c\apps\wc_main.c", "C", 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 209
"d:\Projects\C\cleonos\cleonos\c\apps\write_main.c", "C", 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 90
"d:\Projects\C\cleonos\cleonos\c\apps\yield_main.c", "C", 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 48
"d:\Projects\C\cleonos\cleonos\c\include\cleonos_rust_bridge.h", "C++", 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10
"d:\Projects\C\cleonos\cleonos\c\include\cleonos_stdio.h", "C++", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\cleonos\c\include\cleonos_syscall.h", "C++", 0, 0, 0, 0, 0, 0, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 235
"d:\Projects\C\cleonos\cleonos\c\include\ctype.h", "C++", 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 17
"d:\Projects\C\cleonos\cleonos\c\include\dlfcn.h", "C++", 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 9
"d:\Projects\C\cleonos\cleonos\c\include\stdio.h", "C++", 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 28
"d:\Projects\C\cleonos\cleonos\c\include\stdlib.h", "C++", 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 37
"d:\Projects\C\cleonos\cleonos\c\include\string.h", "C++", 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 30
"d:\Projects\C\cleonos\cleonos\c\src\dlfcn.c", "C", 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 49
"d:\Projects\C\cleonos\cleonos\c\src\libc_ctype.c", "C", 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 46
"d:\Projects\C\cleonos\cleonos\c\src\libc_stdlib.c", "C", 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 255
"d:\Projects\C\cleonos\cleonos\c\src\libc_string.c", "C", 0, 0, 0, 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 446
"d:\Projects\C\cleonos\cleonos\c\src\runtime.c", "C", 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 54
"d:\Projects\C\cleonos\cleonos\c\src\stdio.c", "C", 0, 0, 0, 570, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 713
"d:\Projects\C\cleonos\cleonos\c\src\syscall.c", "C", 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 370
"d:\Projects\C\cleonos\cleonos\c\stub.c", "C", 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 9
"d:\Projects\C\cleonos\cleonos\rust\src\lib.rs", "Rust", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 9, 32
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\README.md", "Markdown", 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 68
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\Makefile", "Makefile", 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 14, 55
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\am_map.c", "C", 0, 0, 0, 970, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 224, 1356
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\am_map.h", "C++", 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 13, 50
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\config.h", "C++", 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 34, 101
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_englsh.h", "C++", 0, 0, 0, 0, 0, 0, 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 107, 694
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_event.c", "C", 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 15, 64
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_event.h", "C++", 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 29, 138
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_items.c", "C", 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 14, 129
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_items.h", "C++", 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 10, 42
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_iwad.c", "C", 0, 0, 0, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 207, 849
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_iwad.h", "C++", 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 9, 53
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_loop.c", "C", 0, 0, 0, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 194, 827
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_loop.h", "C++", 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 25, 82
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_main.c", "C", 0, 0, 0, 1089, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 418, 339, 1846
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_main.h", "C++", 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 16, 51
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_mode.c", "C", 0, 0, 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 32, 210
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_mode.h", "C++", 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 17, 99
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_net.c", "C", 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 63, 282
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_player.h", "C++", 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 51, 210
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_textur.h", "C++", 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 12, 44
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_think.h", "C++", 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 21, 69
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_ticcmd.h", "C++", 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 14, 57
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\deh_main.h", "C++", 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 11, 49
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\deh_misc.h", "C++", 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 12, 84
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\deh_str.h", "C++", 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 13, 48
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doom.h", "C++", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 12, 43
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomdata.h", "C++", 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 51, 214
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomdef.c", "C", 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 8, 29
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomdef.h", "C++", 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 35, 169
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomfeatures.h", "C++", 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 13, 41
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric.c", "C", 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 28
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric.h", "C++", 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 18, 50
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric.vcxproj", "XML", 0, 0, 0, 0, 0, 0, 0, 0, 339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 339
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_allegro.c", "C", 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 119, 454
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_emscripten.c", "C", 0, 0, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 31, 220
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_linuxvt.c", "C", 0, 0, 0, 412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 78, 529
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_sdl.c", "C", 0, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 29, 211
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_soso.c", "C", 0, 0, 0, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 54, 277
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_sosox.c", "C", 0, 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 48, 248
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_win.c", "C", 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 37, 210
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_xlib.c", "C", 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 46, 214
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomkeys.h", "C++", 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 14, 98
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomstat.c", "C", 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 10, 36
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomstat.h", "C++", 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 97, 282
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomtype.h", "C++", 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 30, 105
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\dstrings.c", "C", 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 15, 74
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\dstrings.h", "C++", 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 12, 42
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\dummy.c", "C", 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 16, 54
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\f_finale.c", "C", 0, 0, 0, 528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 114, 719
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\f_finale.h", "C++", 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 14, 46
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\f_wipe.c", "C", 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 44, 295
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\f_wipe.h", "C++", 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 13, 64
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\g_game.c", "C", 0, 0, 0, 1572, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 413, 2304
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\g_game.h", "C++", 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 24, 81
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\gusconf.c", "C", 0, 0, 0, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 58, 272
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\gusconf.h", "C++", 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 7, 30
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\hu_lib.c", "C", 0, 0, 0, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 64, 348
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\hu_lib.h", "C++", 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 47, 183
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\hu_stuff.c", "C", 0, 0, 0, 493, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 98, 642
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\hu_stuff.h", "C++", 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 16, 60
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_allegromusic.c", "C", 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 79, 309
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_allegrosound.c", "C", 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 106, 434
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_cdmus.c", "C", 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 54, 244
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_cdmus.h", "C++", 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 7, 42
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_endoom.c", "C", 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 28, 102
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_endoom.h", "C++", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 7, 30
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_input.c", "C", 0, 0, 0, 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 36, 342
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_joystick.c", "C", 0, 0, 0, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 68, 360
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_joystick.h", "C++", 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 17, 71
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_scale.c", "C", 0, 0, 0, 889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 339, 1453
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_scale.h", "C++", 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 13, 54
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_sdlmusic.c", "C", 0, 0, 0, 887, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 253, 1317
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_sdlsound.c", "C", 0, 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, 266, 1077
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_sound.c", "C", 0, 0, 0, 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 75, 421
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_sound.h", "C++", 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 82, 257
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_swap.h", "C++", 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 22, 74
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_system.c", "C", 0, 0, 0, 347, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 120, 579
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_system.h", "C++", 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 29, 85
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_timer.c", "C", 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 29, 97
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_timer.h", "C++", 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 11, 43
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_video.c", "C", 0, 0, 0, 309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 113, 496
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_video.h", "C++", 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 48, 176
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\icon.c", "C", 0, 0, 0, 260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 263
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\info.c", "C", 0, 0, 0, 4492, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 150, 4663
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\info.h", "C++", 0, 0, 0, 0, 0, 0, 1296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 15, 1332
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_argv.c", "C", 0, 0, 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 64, 266
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_argv.h", "C++", 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 13, 50
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_bbox.c", "C", 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 14, 55
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_bbox.h", "C++", 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 11, 48
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_cheat.c", "C", 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 20, 90
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_cheat.h", "C++", 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 16, 63
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_config.c", "C", 0, 0, 0, 615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 948, 566, 2129
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_config.h", "C++", 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 7, 40
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_controls.c", "C", 0, 0, 0, 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 73, 399
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_controls.h", "C++", 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 31, 169
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_fixed.c", "C", 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 18, 63
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_fixed.h", "C++", 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 12, 40
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_menu.c", "C", 0, 0, 0, 1502, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 374, 2126
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_menu.h", "C++", 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 18, 62
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_misc.c", "C", 0, 0, 0, 335, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 115, 537
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_misc.h", "C++", 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 8, 52
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_random.c", "C", 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 7, 66
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_random.h", "C++", 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 12, 40
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\memio.c", "C", 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 49, 198
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\memio.h", "C++", 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 7, 39
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\mus2mid.c", "C", 0, 0, 0, 504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 158, 738
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\mus2mid.h", "C++", 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 9
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_client.h", "C++", 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 9, 53
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_dedicated.h", "C++", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 6, 26
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_defs.h", "C++", 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 55, 249
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_gui.h", "C++", 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 7, 30
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_io.h", "C++", 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 7, 37
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_loop.h", "C++", 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 6, 28
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_packet.h", "C++", 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 11, 45
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_query.h", "C++", 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 10, 45
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_sdl.h", "C++", 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 6, 27
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_server.h", "C++", 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 14, 43
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_ceilng.c", "C", 0, 0, 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 52, 325
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_doors.c", "C", 0, 0, 0, 571, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 125, 779
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_enemy.c", "C", 0, 0, 0, 1341, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 238, 428, 2007
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_floor.c", "C", 0, 0, 0, 429, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 64, 547
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_inter.c", "C", 0, 0, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 165, 923
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_inter.h", "C++", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 10, 31
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_lights.c", "C", 0, 0, 0, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 78, 351
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_local.h", "C++", 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 77, 298
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_map.c", "C", 0, 0, 0, 828, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, 317, 1449
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_maputl.c", "C", 0, 0, 0, 651, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, 190, 1002
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_mobj.c", "C", 0, 0, 0, 654, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 184, 212, 1050
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_mobj.h", "C++", 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, 47, 285
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_plats.c", "C", 0, 0, 0, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 58, 305
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_pspr.c", "C", 0, 0, 0, 537, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 179, 889
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_pspr.h", "C++", 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 16, 72
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_saveg.c", "C", 0, 0, 0, 975, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 435, 482, 1892
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_saveg.h", "C++", 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 18, 63
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_setup.c", "C", 0, 0, 0, 547, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 175, 856
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_setup.h", "C++", 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 9, 38
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_sight.c", "C", 0, 0, 0, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 72, 351
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_spec.c", "C", 0, 0, 0, 908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 307, 275, 1490
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_spec.h", "C++", 0, 0, 0, 0, 0, 0, 380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 183, 638
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_switch.c", "C", 0, 0, 0, 425, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 113, 649
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_telept.c", "C", 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 30, 134
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_tick.c", "C", 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 36, 152
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_tick.h", "C++", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 10, 34
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_user.c", "C", 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 88, 380
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_bsp.c", "C", 0, 0, 0, 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 123, 574
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_bsp.h", "C++", 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 62
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_data.c", "C", 0, 0, 0, 543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 167, 203, 913
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_data.h", "C++", 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 13, 52
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_defs.h", "C++", 0, 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 130, 449
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_draw.c", "C", 0, 0, 0, 554, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 206, 976
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_draw.h", "C++", 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 32, 105
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_local.h", "C++", 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 9, 46
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_main.c", "C", 0, 0, 0, 556, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 181, 892
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_main.h", "C++", 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 44, 161
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_plane.c", "C", 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 447
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_plane.h", "C++", 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 22, 77
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_segs.c", "C", 0, 0, 0, 507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 134, 744
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_segs.h", "C++", 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 9, 34
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_sky.c", "C", 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 12, 53
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_sky.h", "C++", 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 10, 38
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_state.h", "C++", 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 43, 128
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_things.c", "C", 0, 0, 0, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 207, 983
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_things.h", "C++", 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 18, 66
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\s_sound.c", "C", 0, 0, 0, 431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 132, 671
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\s_sound.h", "C++", 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 28, 90
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\sha1.c", "C", 0, 0, 0, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 32, 320
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\sha1.h", "C++", 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 8, 41
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\sounds.c", "C", 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 13, 230
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\sounds.h", "C++", 0, 0, 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 11, 228
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\st_lib.c", "C", 0, 0, 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 64, 285
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\st_lib.h", "C++", 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 59, 210
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\st_stuff.c", "C", 0, 0, 0, 903, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 298, 1417
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\st_stuff.h", "C++", 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 23, 90
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\statdump.c", "C", 0, 0, 0, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 96, 393
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\statdump.h", "C++", 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 4, 24
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\tables.c", "C", 0, 0, 0, 2173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 18, 2228
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\tables.h", "C++", 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 27, 97
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\v_patch.h", "C++", 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 9, 51
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\v_video.c", "C", 0, 0, 0, 617, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 177, 933
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\v_video.h", "C++", 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 35, 109
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_checksum.c", "C", 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 19, 88
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_checksum.h", "C++", 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 6, 28
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_file.c", "C", 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 20, 96
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_file.h", "C++", 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 25, 79
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_file_stdc.c", "C", 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 26, 97
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_main.c", "C", 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 46, 199
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_main.h", "C++", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 5, 25
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_merge.h", "C++", 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 13, 45
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_wad.c", "C", 0, 0, 0, 353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 136, 613
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_wad.h", "C++", 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 79
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\wi_stuff.c", "C", 0, 0, 0, 1215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 405, 1830
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\wi_stuff.h", "C++", 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 11, 49
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\z_zone.c", "C", 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 122, 489
"d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\z_zone.h", "C++", 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 16, 74
"d:\Projects\C\cleonos\clks\arch\aarch64\startup\boot.c", "C", 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7
"d:\Projects\C\cleonos\clks\arch\x86_64\interrupt\interrupt_stubs.S", "Go Assembly", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 12, 120
"d:\Projects\C\cleonos\clks\arch\x86_64\startup\boot.c", "C", 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7
"d:\Projects\C\cleonos\clks\arch\x86_64\startup\exec_stack_call.S", "Go Assembly", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 8, 48
"d:\Projects\C\cleonos\clks\include\clks\audio.h", "C++", 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 12
"d:\Projects\C\cleonos\clks\include\clks\boot.h", "C++", 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 15
"d:\Projects\C\cleonos\clks\include\clks\compiler.h", "C++", 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 17
"d:\Projects\C\cleonos\clks\include\clks\cpu.h", "C++", 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 24
"d:\Projects\C\cleonos\clks\include\clks\desktop.h", "C++", 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 11
"d:\Projects\C\cleonos\clks\include\clks\driver.h", "C++", 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 37
"d:\Projects\C\cleonos\clks\include\clks\elf64.h", "C++", 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 41
"d:\Projects\C\cleonos\clks\include\clks\elfrunner.h", "C++", 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 9
"d:\Projects\C\cleonos\clks\include\clks\exec.h", "C++", 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 81
"d:\Projects\C\cleonos\clks\include\clks\framebuffer.h", "C++", 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 32
"d:\Projects\C\cleonos\clks\include\clks\fs.h", "C++", 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 30
"d:\Projects\C\cleonos\clks\include\clks\heap.h", "C++", 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 19
"d:\Projects\C\cleonos\clks\include\clks\interrupts.h", "C++", 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 9
"d:\Projects\C\cleonos\clks\include\clks\kelf.h", "C++", 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 14
"d:\Projects\C\cleonos\clks\include\clks\kernel.h", "C++", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6
"d:\Projects\C\cleonos\clks\include\clks\keyboard.h", "C++", 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 32
"d:\Projects\C\cleonos\clks\include\clks\limine.h", "C++", 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 136
"d:\Projects\C\cleonos\clks\include\clks\log.h", "C++", 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 19
"d:\Projects\C\cleonos\clks\include\clks\mouse.h", "C++", 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 26
"d:\Projects\C\cleonos\clks\include\clks\panic.h", "C++", 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 11
"d:\Projects\C\cleonos\clks\include\clks\pmm.h", "C++", 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 21
"d:\Projects\C\cleonos\clks\include\clks\ramdisk.h", "C++", 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 25
"d:\Projects\C\cleonos\clks\include\clks\scheduler.h", "C++", 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 23
"d:\Projects\C\cleonos\clks\include\clks\serial.h", "C++", 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 8
"d:\Projects\C\cleonos\clks\include\clks\service.h", "C++", 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 39
"d:\Projects\C\cleonos\clks\include\clks\shell.h", "C++", 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 10
"d:\Projects\C\cleonos\clks\include\clks\string.h", "C++", 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 12
"d:\Projects\C\cleonos\clks\include\clks\syscall.h", "C++", 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 96
"d:\Projects\C\cleonos\clks\include\clks\task.h", "C++", 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 26
"d:\Projects\C\cleonos\clks\include\clks\tty.h", "C++", 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 19
"d:\Projects\C\cleonos\clks\include\clks\types.h", "C++", 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 20
"d:\Projects\C\cleonos\clks\include\clks\userland.h", "C++", 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 16
"d:\Projects\C\cleonos\clks\kernel\boot\limine\limine_requests.c", "C", 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 102
"d:\Projects\C\cleonos\clks\kernel\core\interrupts.c", "C", 0, 0, 0, 307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 350
"d:\Projects\C\cleonos\clks\kernel\core\kmain.c", "C", 0, 0, 0, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 77, 466
"d:\Projects\C\cleonos\clks\kernel\core\log.c", "C", 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 227
"d:\Projects\C\cleonos\clks\kernel\core\panic.c", "C", 0, 0, 0, 527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 682
"d:\Projects\C\cleonos\clks\kernel\core\scheduler.c", "C", 0, 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 180
"d:\Projects\C\cleonos\clks\kernel\core\service.c", "C", 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 141
"d:\Projects\C\cleonos\clks\kernel\hal\audio\pcspeaker.c", "C", 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 126
"d:\Projects\C\cleonos\clks\kernel\hal\serial\serial.c", "C", 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67
"d:\Projects\C\cleonos\clks\kernel\hal\video\font8x8.c", "C", 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 53
"d:\Projects\C\cleonos\clks\kernel\hal\video\font8x8.h", "C++", 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 8
"d:\Projects\C\cleonos\clks\kernel\hal\video\framebuffer.c", "C", 0, 0, 0, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 316
"d:\Projects\C\cleonos\clks\kernel\hal\video\psf_font.c", "C", 0, 0, 0, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 259
"d:\Projects\C\cleonos\clks\kernel\hal\video\psf_font.h", "C++", 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 20
"d:\Projects\C\cleonos\clks\kernel\input\keyboard.c", "C", 0, 0, 0, 370, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 465
"d:\Projects\C\cleonos\clks\kernel\input\mouse.c", "C", 0, 0, 0, 243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 306
"d:\Projects\C\cleonos\clks\kernel\interface\desktop.c", "C", 0, 0, 0, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 407
"d:\Projects\C\cleonos\clks\kernel\interface\shell.c", "C", 0, 0, 0, 1232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 316, 1548
"d:\Projects\C\cleonos\clks\kernel\interface\tty.c", "C", 0, 0, 0, 1137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 288, 1425
"d:\Projects\C\cleonos\clks\kernel\memory\heap.c", "C", 0, 0, 0, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 181
"d:\Projects\C\cleonos\clks\kernel\memory\pmm.c", "C", 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 105
"d:\Projects\C\cleonos\clks\kernel\runtime\driver.c", "C", 0, 0, 0, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 215
"d:\Projects\C\cleonos\clks\kernel\runtime\elf64.c", "C", 0, 0, 0, 279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 84, 364
"d:\Projects\C\cleonos\clks\kernel\runtime\elfrunner.c", "C", 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 38
"d:\Projects\C\cleonos\clks\kernel\runtime\exec.c", "C", 0, 0, 0, 2179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 595, 2775
"d:\Projects\C\cleonos\clks\kernel\runtime\kelf.c", "C", 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 52, 251
"d:\Projects\C\cleonos\clks\kernel\runtime\syscall.c", "C", 0, 0, 0, 2021, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 507, 2528
"d:\Projects\C\cleonos\clks\kernel\runtime\userland.c", "C", 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 184
"d:\Projects\C\cleonos\clks\kernel\storage\fs.c", "C", 0, 0, 0, 684, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 906
"d:\Projects\C\cleonos\clks\kernel\storage\ramdisk.c", "C", 0, 0, 0, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 222
"d:\Projects\C\cleonos\clks\kernel\support\libc_compat.c", "C", 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 32
"d:\Projects\C\cleonos\clks\kernel\support\string.c", "C", 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 70
"d:\Projects\C\cleonos\clks\rust\src\lib.rs", "Rust", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 6, 27
"d:\Projects\C\cleonos\cmake\check_tools.cmake", "CMake", 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 41
"d:\Projects\C\cleonos\cmake\gen_kernel_symbols.cmake", "CMake", 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 106
"d:\Projects\C\cleonos\cmake\log.cmake", "CMake", 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 36
"d:\Projects\C\cleonos\cmake\log_emit.cmake", "CMake", 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 29
"d:\Projects\C\cleonos\cmake\setup_limine.cmake", "CMake", 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 119
"d:\Projects\C\cleonos\configs\limine.conf", "Properties", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 7
"d:\Projects\C\cleonos\configs\menuconfig\clks_features.json", "JSON", 0, 0, 0, 0, 0, 0, 0, 0, 0, 376, 0, 0, 0, 0, 0, 0, 0, 0, 1, 377
"d:\Projects\C\cleonos\docs\README.md", "Markdown", 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 35
"d:\Projects\C\cleonos\docs\stage1.md", "Markdown", 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 46
"d:\Projects\C\cleonos\docs\stage10.md", "Markdown", 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 40
"d:\Projects\C\cleonos\docs\stage11.md", "Markdown", 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 41
"d:\Projects\C\cleonos\docs\stage12.md", "Markdown", 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 46
"d:\Projects\C\cleonos\docs\stage13.md", "Markdown", 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 40
"d:\Projects\C\cleonos\docs\stage14.md", "Markdown", 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 52
"d:\Projects\C\cleonos\docs\stage15.md", "Markdown", 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 54
"d:\Projects\C\cleonos\docs\stage2.md", "Markdown", 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 35
"d:\Projects\C\cleonos\docs\stage20.md", "Markdown", 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 52
"d:\Projects\C\cleonos\docs\stage21.md", "Markdown", 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 79
"d:\Projects\C\cleonos\docs\stage22.md", "Markdown", 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 75
"d:\Projects\C\cleonos\docs\stage23.md", "Markdown", 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 47
"d:\Projects\C\cleonos\docs\stage24.md", "Markdown", 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 49
"d:\Projects\C\cleonos\docs\stage25.md", "Markdown", 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 65
"d:\Projects\C\cleonos\docs\stage26.md", "Markdown", 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 39
"d:\Projects\C\cleonos\docs\stage27.md", "Markdown", 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 39
"d:\Projects\C\cleonos\docs\stage28.md", "Markdown", 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 44
"d:\Projects\C\cleonos\docs\stage29.md", "Markdown", 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40
"d:\Projects\C\cleonos\docs\stage3.md", "Markdown", 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 34
"d:\Projects\C\cleonos\docs\stage4.md", "Markdown", 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 35
"d:\Projects\C\cleonos\docs\stage5.md", "Markdown", 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 34
"d:\Projects\C\cleonos\docs\stage6.md", "Markdown", 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 36
"d:\Projects\C\cleonos\docs\stage7.md", "Markdown", 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 40
"d:\Projects\C\cleonos\docs\stage8.md", "Markdown", 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 37
"d:\Projects\C\cleonos\docs\stage9.md", "Markdown", 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 37
"d:\Projects\C\cleonos\docs\syscall.md", "Markdown", 0, 0, 499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 705
"d:\Projects\C\cleonos\limine\.github\dependabot.yml", "YAML", 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8
"d:\Projects\C\cleonos\limine\.github\workflows\binary-release.yml", "YAML", 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 99
"d:\Projects\C\cleonos\limine\.github\workflows\check.yml", "YAML", 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 46
"d:\Projects\C\cleonos\limine\.github\workflows\pr_branch_check.yml", "YAML", 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 16
"d:\Projects\C\cleonos\limine\.github\workflows\qa.yml", "YAML", 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 19
"d:\Projects\C\cleonos\limine\.github\workflows\release.yml", "YAML", 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 81
"d:\Projects\C\cleonos\limine\3RDPARTY.md", "Markdown", 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 68
"d:\Projects\C\cleonos\limine\CONFIG.md", "Markdown", 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 373
"d:\Projects\C\cleonos\limine\FAQ.md", "Markdown", 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 36
"d:\Projects\C\cleonos\limine\INSTALL.md", "Markdown", 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 52
"d:\Projects\C\cleonos\limine\README.md", "Markdown", 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 103
"d:\Projects\C\cleonos\limine\USAGE.md", "Markdown", 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 108
"d:\Projects\C\cleonos\limine\common\common.mk", "Makefile", 0, 0, 0, 0, 0, 0, 0, 562, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 677
"d:\Projects\C\cleonos\limine\common\crypt\blake2b.c", "C", 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 39, 221
"d:\Projects\C\cleonos\limine\common\crypt\blake2b.h", "C++", 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 11
"d:\Projects\C\cleonos\limine\common\drivers\disk.h", "C++", 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 27
"d:\Projects\C\cleonos\limine\common\drivers\disk.s2.c", "C", 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 178, 857
"d:\Projects\C\cleonos\limine\common\drivers\edid.c", "C", 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 86
"d:\Projects\C\cleonos\limine\common\drivers\edid.h", "C++", 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 44
"d:\Projects\C\cleonos\limine\common\drivers\gop.c", "C", 0, 0, 0, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 73, 382
"d:\Projects\C\cleonos\limine\common\drivers\gop.h", "C++", 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 20
"d:\Projects\C\cleonos\limine\common\drivers\serial.c", "C", 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 13, 51
"d:\Projects\C\cleonos\limine\common\drivers\serial.h", "C++", 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 16
"d:\Projects\C\cleonos\limine\common\drivers\vbe.c", "C", 0, 0, 0, 307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 53, 368
"d:\Projects\C\cleonos\limine\common\drivers\vbe.h", "C++", 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 16
"d:\Projects\C\cleonos\limine\common\drivers\vga_textmode.c", "C", 0, 0, 0, 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 71, 370
"d:\Projects\C\cleonos\limine\common\drivers\vga_textmode.h", "C++", 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 36
"d:\Projects\C\cleonos\limine\common\entry.s2.c", "C", 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 135
"d:\Projects\C\cleonos\limine\common\entry.s3.c", "C", 0, 0, 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 249
"d:\Projects\C\cleonos\limine\common\fs\fat32.h", "C++", 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 12
"d:\Projects\C\cleonos\limine\common\fs\fat32.s2.c", "C", 0, 0, 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 111, 727
"d:\Projects\C\cleonos\limine\common\fs\file.h", "C++", 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 46
"d:\Projects\C\cleonos\limine\common\fs\file.s2.c", "C", 0, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 185
"d:\Projects\C\cleonos\limine\common\fs\iso9660.h", "C++", 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 11
"d:\Projects\C\cleonos\limine\common\fs\iso9660.s2.c", "C", 0, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 94, 539
"d:\Projects\C\cleonos\limine\common\gensyms.sh", "Shell Script", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 2, 17, 52
"d:\Projects\C\cleonos\limine\common\lib\acpi.c", "C", 0, 0, 0, 344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 102, 473
"d:\Projects\C\cleonos\limine\common\lib\acpi.h", "C++", 0, 0, 0, 0, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 30, 217
"d:\Projects\C\cleonos\limine\common\lib\bli.c", "C", 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 20, 91
"d:\Projects\C\cleonos\limine\common\lib\bli.h", "C++", 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 12
"d:\Projects\C\cleonos\limine\common\lib\config.c", "C", 0, 0, 0, 628, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 126, 765
"d:\Projects\C\cleonos\limine\common\lib\config.h", "C++", 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 37
"d:\Projects\C\cleonos\limine\common\lib\elf.c", "C", 0, 0, 0, 964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 212, 1203
"d:\Projects\C\cleonos\limine\common\lib\elf.h", "C++", 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 88
"d:\Projects\C\cleonos\limine\common\lib\elsewhere.c", "C", 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 17, 105
"d:\Projects\C\cleonos\limine\common\lib\elsewhere.h", "C++", 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 21
"d:\Projects\C\cleonos\limine\common\lib\fb.c", "C", 0, 0, 0, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 17, 174
"d:\Projects\C\cleonos\limine\common\lib\fb.h", "C++", 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 48
"d:\Projects\C\cleonos\limine\common\lib\fdt.c", "C", 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 45
"d:\Projects\C\cleonos\limine\common\lib\fdt.h", "C++", 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 16
"d:\Projects\C\cleonos\limine\common\lib\getchar.c", "C", 0, 0, 0, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 59, 366
"d:\Projects\C\cleonos\limine\common\lib\getchar.h", "C++", 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 29
"d:\Projects\C\cleonos\limine\common\lib\gterm.c", "C", 0, 0, 0, 813, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 118, 940
"d:\Projects\C\cleonos\limine\common\lib\gterm.h", "C++", 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 35
"d:\Projects\C\cleonos\limine\common\lib\guid.c", "C", 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 96
"d:\Projects\C\cleonos\limine\common\lib\guid.h", "C++", 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 21
"d:\Projects\C\cleonos\limine\common\lib\image.c", "C", 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 18, 72
"d:\Projects\C\cleonos\limine\common\lib\image.h", "C++", 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 33
"d:\Projects\C\cleonos\limine\common\lib\libc.c", "C", 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 15, 132
"d:\Projects\C\cleonos\limine\common\lib\libc.h", "C++", 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 37
"d:\Projects\C\cleonos\limine\common\lib\libc.s2.c", "C", 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 26, 150
"d:\Projects\C\cleonos\limine\common\lib\macros.aarch64_asm.h", "C++", 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 53
"d:\Projects\C\cleonos\limine\common\lib\memory.s2.c", "C", 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 54
"d:\Projects\C\cleonos\limine\common\lib\misc.c", "C", 0, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 90, 420
"d:\Projects\C\cleonos\limine\common\lib\misc.h", "C++", 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 154
"d:\Projects\C\cleonos\limine\common\lib\misc.s2.c", "C", 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 129
"d:\Projects\C\cleonos\limine\common\lib\panic.s2.c", "C", 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 12, 90
"d:\Projects\C\cleonos\limine\common\lib\part.h", "C++", 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 23, 111
"d:\Projects\C\cleonos\limine\common\lib\part.s2.c", "C", 0, 0, 0, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 121, 616
"d:\Projects\C\cleonos\limine\common\lib\pe.c", "C", 0, 0, 0, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 98, 501
"d:\Projects\C\cleonos\limine\common\lib\pe.h", "C++", 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 13
"d:\Projects\C\cleonos\limine\common\lib\print.h", "C++", 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 17
"d:\Projects\C\cleonos\limine\common\lib\print.s2.c", "C", 0, 0, 0, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 236
"d:\Projects\C\cleonos\limine\common\lib\rand.c", "C", 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 25, 142
"d:\Projects\C\cleonos\limine\common\lib\rand.h", "C++", 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 12
"d:\Projects\C\cleonos\limine\common\lib\real.h", "C++", 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 35
"d:\Projects\C\cleonos\limine\common\lib\stb_image.c", "C", 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\limine\common\lib\term.c", "C", 0, 0, 0, 266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 49, 320
"d:\Projects\C\cleonos\limine\common\lib\term.h", "C++", 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 60
"d:\Projects\C\cleonos\limine\common\lib\time.c", "C", 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 15, 76
"d:\Projects\C\cleonos\limine\common\lib\time.h", "C++", 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9
"d:\Projects\C\cleonos\limine\common\lib\trace.h", "C++", 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9
"d:\Projects\C\cleonos\limine\common\lib\trace.s2.c", "C", 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 88
"d:\Projects\C\cleonos\limine\common\lib\uri.c", "C", 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 54, 287
"d:\Projects\C\cleonos\limine\common\lib\uri.h", "C++", 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 11
"d:\Projects\C\cleonos\limine\common\libc-compat\stdlib.h", "C++", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\limine\common\libc-compat\string.h", "C++", 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 24
"d:\Projects\C\cleonos\limine\common\menu.c", "C", 0, 0, 0, 1378, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 150, 1558
"d:\Projects\C\cleonos\limine\common\menu.h", "C++", 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 21
"d:\Projects\C\cleonos\limine\common\mm\mtrr.c", "C", 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 32, 141
"d:\Projects\C\cleonos\limine\common\mm\mtrr.h", "C++", 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 12
"d:\Projects\C\cleonos\limine\common\mm\pmm.c", "C", 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 16, 89
"d:\Projects\C\cleonos\limine\common\mm\pmm.h", "C++", 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 81
"d:\Projects\C\cleonos\limine\common\mm\pmm.s2.c", "C", 0, 0, 0, 662, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 192, 891
"d:\Projects\C\cleonos\limine\common\mm\vmm.c", "C", 0, 0, 0, 416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 110, 556
"d:\Projects\C\cleonos\limine\common\mm\vmm.h", "C++", 0, 0, 0, 0, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 45, 176
"d:\Projects\C\cleonos\limine\common\protos\chainload.c", "C", 0, 0, 0, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 78, 368
"d:\Projects\C\cleonos\limine\common\protos\chainload.h", "C++", 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9
"d:\Projects\C\cleonos\limine\common\protos\efi_boot_entry.c", "C", 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 26, 126
"d:\Projects\C\cleonos\limine\common\protos\efi_boot_entry.h", "C++", 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9
"d:\Projects\C\cleonos\limine\common\protos\limine.c", "C", 0, 0, 0, 1523, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 331, 1934
"d:\Projects\C\cleonos\limine\common\protos\limine.h", "C++", 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9
"d:\Projects\C\cleonos\limine\common\protos\linux.h", "C++", 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 14, 74
"d:\Projects\C\cleonos\limine\common\protos\linux_risc.c", "C", 0, 0, 0, 412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 99, 533
"d:\Projects\C\cleonos\limine\common\protos\linux_x86.c", "C", 0, 0, 0, 527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 96, 664
"d:\Projects\C\cleonos\limine\common\protos\multiboot.h", "C++", 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 18
"d:\Projects\C\cleonos\limine\common\protos\multiboot1.c", "C", 0, 0, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 105, 513
"d:\Projects\C\cleonos\limine\common\protos\multiboot1.h", "C++", 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 101
"d:\Projects\C\cleonos\limine\common\protos\multiboot2.c", "C", 0, 0, 0, 782, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 182, 1041
"d:\Projects\C\cleonos\limine\common\protos\multiboot2.h", "C++", 0, 0, 0, 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 58, 419
"d:\Projects\C\cleonos\limine\common\pxe\pxe.h", "C++", 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 112
"d:\Projects\C\cleonos\limine\common\pxe\pxe.s2.c", "C", 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 18, 73
"d:\Projects\C\cleonos\limine\common\pxe\tftp.h", "C++", 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 47
"d:\Projects\C\cleonos\limine\common\pxe\tftp.s2.c", "C", 0, 0, 0, 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 52, 268
"d:\Projects\C\cleonos\limine\common\stb_image.patch", "Diff", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 7, 10, 91
"d:\Projects\C\cleonos\limine\common\sys\a20.h", "C++", 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10
"d:\Projects\C\cleonos\limine\common\sys\a20.s2.c", "C", 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 21, 93
"d:\Projects\C\cleonos\limine\common\sys\cpu.h", "C++", 0, 0, 0, 0, 0, 0, 429, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 82, 513
"d:\Projects\C\cleonos\limine\common\sys\cpu.s2.c", "C", 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 14, 78
"d:\Projects\C\cleonos\limine\common\sys\cpu_riscv.c", "C", 0, 0, 0, 353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 65, 428
"d:\Projects\C\cleonos\limine\common\sys\e820.h", "C++", 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 14
"d:\Projects\C\cleonos\limine\common\sys\e820.s2.c", "C", 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 45
"d:\Projects\C\cleonos\limine\common\sys\exceptions.s2.c", "C", 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 51
"d:\Projects\C\cleonos\limine\common\sys\gdt.h", "C++", 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 30
"d:\Projects\C\cleonos\limine\common\sys\gdt.s2.c", "C", 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 96
"d:\Projects\C\cleonos\limine\common\sys\idt.c", "C", 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 16, 72
"d:\Projects\C\cleonos\limine\common\sys\idt.h", "C++", 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 60
"d:\Projects\C\cleonos\limine\common\sys\idt.s2.c", "C", 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 36
"d:\Projects\C\cleonos\limine\common\sys\iommu.c", "C", 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 30, 145
"d:\Projects\C\cleonos\limine\common\sys\iommu.h", "C++", 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 7
"d:\Projects\C\cleonos\limine\common\sys\lapic.c", "C", 0, 0, 0, 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 69, 512
"d:\Projects\C\cleonos\limine\common\sys\lapic.h", "C++", 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 39
"d:\Projects\C\cleonos\limine\common\sys\pic.c", "C", 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 11, 49
"d:\Projects\C\cleonos\limine\common\sys\pic.h", "C++", 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 12
"d:\Projects\C\cleonos\limine\common\sys\sbi.h", "C++", 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 33
"d:\Projects\C\cleonos\limine\common\sys\smp.c", "C", 0, 0, 0, 917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 259, 1230
"d:\Projects\C\cleonos\limine\common\sys\smp.h", "C++", 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 51
"d:\Projects\C\cleonos\limine\decompressor\decompressor.mk", "Makefile", 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 85
"d:\Projects\C\cleonos\limine\decompressor\main.c", "C", 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5, 38
"d:\Projects\C\cleonos\limine\decompressor\memory.c", "C", 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 54
"d:\Projects\C\cleonos\limine\decompressor\tinf.patch", "Diff", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 3, 10, 55
"d:\Projects\C\cleonos\limine\host\hgen.sh", "Shell Script", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 1, 6, 17
"d:\Projects\C\cleonos\limine\host\host.mk", "Makefile", 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 20
"d:\Projects\C\cleonos\limine\host\limine.c", "C", 0, 0, 0, 1192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 225, 1449
"d:\Projects\C\cleonos\limine\test.mk", "Makefile", 0, 0, 0, 0, 0, 0, 0, 263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 279
"d:\Projects\C\cleonos\limine\test\e9print.c", "C", 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 99
"d:\Projects\C\cleonos\limine\test\e9print.h", "C++", 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 10
"d:\Projects\C\cleonos\limine\test\limine.c", "C", 0, 0, 0, 624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 706
"d:\Projects\C\cleonos\limine\test\limine.conf", "Properties", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 1, 19, 60
"d:\Projects\C\cleonos\limine\test\memory.c", "C", 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 53
"d:\Projects\C\cleonos\limine\test\multiboot.c", "C", 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 24, 93
"d:\Projects\C\cleonos\limine\test\multiboot2.c", "C", 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 36, 182
"d:\Projects\C\cleonos\limine\test\test.mk", "Makefile", 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 164
"d:\Projects\C\cleonos\limine\version.sh", "Shell Script", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 1, 10, 30
"d:\Projects\C\cleonos\ramdisk\dev\random", "C++", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
"d:\Projects\C\cleonos\ramdisk\shell\init.cmd", "Batch", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 2, 6
"d:\Projects\C\cleonos\scripts\gen-tty-psf.ps1", "PowerShell", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 2, 42, 215
"d:\Projects\C\cleonos\scripts\menuconfig.py", "Python", 0, 0, 0, 0, 1608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 304, 1936
"d:\Projects\C\cleonos\wine\README.md", "Markdown", 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 72
"d:\Projects\C\cleonos\wine\cleonos_wine.py", "Python", 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 7
"d:\Projects\C\cleonos\wine\cleonos_wine_lib\__init__.py", "Python", 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5
"d:\Projects\C\cleonos\wine\cleonos_wine_lib\cli.py", "Python", 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 54
"d:\Projects\C\cleonos\wine\cleonos_wine_lib\constants.py", "Python", 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 14, 130
"d:\Projects\C\cleonos\wine\cleonos_wine_lib\input_pump.py", "Python", 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 99
"d:\Projects\C\cleonos\wine\cleonos_wine_lib\platform.py", "Python", 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 60
"d:\Projects\C\cleonos\wine\cleonos_wine_lib\runner.py", "Python", 0, 0, 0, 0, 1459, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 266, 1725
"d:\Projects\C\cleonos\wine\cleonos_wine_lib\state.py", "Python", 0, 0, 0, 0, 282, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 71, 355
"d:\Projects\C\cleonos\wine\requirements.txt", "pip requirements", 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2
"Total", "-", 395, 1, 2390, 88779, 3649, 1173, 9135, 1216, 339, 376, 46, 44, 4, 148, 62, 116, 171, 13937, 27927, 149908
1 filename language YAML pip requirements Markdown C Python CMake C++ Makefile XML JSON Properties Rust Batch Go Assembly Shell Script Diff PowerShell comment blank total
2 d:\Projects\C\cleonos\.github\workflows\build-os.yml YAML 76 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 11 88
3 d:\Projects\C\cleonos\.github\workflows\style-check.yml YAML 109 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 128
4 d:\Projects\C\cleonos\CMakeLists.txt CMake 0 0 0 0 0 906 0 0 0 0 0 0 0 0 0 0 0 0 108 1014
5 d:\Projects\C\cleonos\Makefile Makefile 0 0 0 0 0 0 0 130 0 0 0 0 0 0 0 0 0 0 24 154
6 d:\Projects\C\cleonos\README.md Markdown 0 0 92 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34 126
7 d:\Projects\C\cleonos\README.zh-CN.md Markdown 0 0 92 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34 126
8 d:\Projects\C\cleonos\cleonos\c\apps\ansi_main.c C 0 0 0 45 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 54
9 d:\Projects\C\cleonos\cleonos\c\apps\ansitest_main.c C 0 0 0 145 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 178
10 d:\Projects\C\cleonos\cleonos\c\apps\append_main.c C 0 0 0 74 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 90
11 d:\Projects\C\cleonos\cleonos\c\apps\args_main.c C 0 0 0 49 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 62
12 d:\Projects\C\cleonos\cleonos\c\apps\bg_main.c C 0 0 0 101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 127
13 d:\Projects\C\cleonos\cleonos\c\apps\bmpview_main.c C 0 0 0 331 0 0 0 0 0 0 0 0 0 0 0 0 0 0 81 412
14 d:\Projects\C\cleonos\cleonos\c\apps\cat_main.c C 0 0 0 87 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 107
15 d:\Projects\C\cleonos\cleonos\c\apps\cd_main.c C 0 0 0 54 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 67
16 d:\Projects\C\cleonos\cleonos\c\apps\clear_main.c C 0 0 0 39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 48
17 d:\Projects\C\cleonos\cleonos\c\apps\cmd_runtime.c C 0 0 0 459 0 0 0 0 0 0 0 0 0 0 0 0 0 0 139 598
18 d:\Projects\C\cleonos\cleonos\c\apps\cmd_runtime.h C++ 0 0 0 0 0 0 80 0 0 0 0 0 0 0 0 0 0 0 19 99
19 d:\Projects\C\cleonos\cleonos\c\apps\cp_main.c C 0 0 0 109 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 132
20 d:\Projects\C\cleonos\cleonos\c\apps\cut_main.c C 0 0 0 210 0 0 0 0 0 0 0 0 0 0 0 0 0 1 54 265
21 d:\Projects\C\cleonos\cleonos\c\apps\dltest_main.c C 0 0 0 38 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 49
22 d:\Projects\C\cleonos\cleonos\c\apps\dmesg_main.c C 0 0 0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 80
23 d:\Projects\C\cleonos\cleonos\c\apps\doom\doom_compat.c C 0 0 0 1196 0 0 0 0 0 0 0 0 0 0 0 0 0 0 277 1473
24 d:\Projects\C\cleonos\cleonos\c\apps\doom\doom_shim.h C++ 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 1 3 21
25 d:\Projects\C\cleonos\cleonos\c\apps\doom\doomgeneric_clks.c C 0 0 0 153 0 0 0 0 0 0 0 0 0 0 0 0 0 0 48 201
26 d:\Projects\C\cleonos\cleonos\c\apps\doom_main.c C 0 0 0 66 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 82
27 d:\Projects\C\cleonos\cleonos\c\apps\elfrunner_kmain.c C 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 9
28 d:\Projects\C\cleonos\cleonos\c\apps\elfrunner_main.c C 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 9
29 d:\Projects\C\cleonos\cleonos\c\apps\exec_main.c C 0 0 0 87 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 107
30 d:\Projects\C\cleonos\cleonos\c\apps\exit_main.c C 0 0 0 54 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 66
31 d:\Projects\C\cleonos\cleonos\c\apps\fastfetch_main.c C 0 0 0 180 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 212
32 d:\Projects\C\cleonos\cleonos\c\apps\fg_main.c C 0 0 0 149 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36 185
33 d:\Projects\C\cleonos\cleonos\c\apps\fsstat_main.c C 0 0 0 46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 55
34 d:\Projects\C\cleonos\cleonos\c\apps\grep_main.c C 0 0 0 196 0 0 0 0 0 0 0 0 0 0 0 0 0 0 53 249
35 d:\Projects\C\cleonos\cleonos\c\apps\head_main.c C 0 0 0 165 0 0 0 0 0 0 0 0 0 0 0 0 0 0 46 211
36 d:\Projects\C\cleonos\cleonos\c\apps\hello_main.c C 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 7
37 d:\Projects\C\cleonos\cleonos\c\apps\help_main.c C 0 0 0 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 92
38 d:\Projects\C\cleonos\cleonos\c\apps\jobs_main.c C 0 0 0 120 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 146
39 d:\Projects\C\cleonos\cleonos\c\apps\kbdstat_main.c C 0 0 0 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 53
40 d:\Projects\C\cleonos\cleonos\c\apps\kdbg_main.c C 0 0 0 213 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56 269
41 d:\Projects\C\cleonos\cleonos\c\apps\kill_main.c C 0 0 0 144 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39 183
42 d:\Projects\C\cleonos\cleonos\c\apps\libctest_main.c C 0 0 0 219 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39 258
43 d:\Projects\C\cleonos\cleonos\c\apps\libdemo_main.c C 0 0 0 19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 25
44 d:\Projects\C\cleonos\cleonos\c\apps\ls_main.c C 0 0 0 266 0 0 0 0 0 0 0 0 0 0 0 0 0 0 79 345
45 d:\Projects\C\cleonos\cleonos\c\apps\memc_kmain.c C 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 9
46 d:\Projects\C\cleonos\cleonos\c\apps\memc_main.c C 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 11
47 d:\Projects\C\cleonos\cleonos\c\apps\memstat_main.c C 0 0 0 43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 52
48 d:\Projects\C\cleonos\cleonos\c\apps\mkdir_main.c C 0 0 0 57 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 71
49 d:\Projects\C\cleonos\cleonos\c\apps\mv_main.c C 0 0 0 102 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 128
50 d:\Projects\C\cleonos\cleonos\c\apps\pid_main.c C 0 0 0 39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 48
51 d:\Projects\C\cleonos\cleonos\c\apps\procstat_main.c C 0 0 0 202 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43 245
52 d:\Projects\C\cleonos\cleonos\c\apps\ps_main.c C 0 0 0 160 0 0 0 0 0 0 0 0 0 0 0 0 0 0 35 195
53 d:\Projects\C\cleonos\cleonos\c\apps\pwd_main.c C 0 0 0 39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 48
54 d:\Projects\C\cleonos\cleonos\c\apps\qrcode\qrcodegen.c C 0 0 0 759 0 0 0 0 0 0 0 0 0 0 0 0 0 176 96 1031
55 d:\Projects\C\cleonos\cleonos\c\apps\qrcode\qrcodegen.h C++ 0 0 0 0 0 0 62 0 0 0 0 0 0 0 0 0 0 268 34 364
56 d:\Projects\C\cleonos\cleonos\c\apps\qrcode_main.c C 0 0 0 207 0 0 0 0 0 0 0 0 0 0 0 0 0 1 58 266
57 d:\Projects\C\cleonos\cleonos\c\apps\restart_main.c C 0 0 0 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 49
58 d:\Projects\C\cleonos\cleonos\c\apps\rm_main.c C 0 0 0 57 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 71
59 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_cmd.c C 0 0 0 2499 0 0 0 0 0 0 0 0 0 0 0 0 0 0 633 3132
60 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_external.c C 0 0 0 174 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57 231
61 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_input.c C 0 0 0 567 0 0 0 0 0 0 0 0 0 0 0 0 0 0 148 715
62 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_internal.h C++ 0 0 0 0 0 0 100 0 0 0 0 0 0 0 0 0 0 0 19 119
63 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_path.c C 0 0 0 154 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50 204
64 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_script.c C 0 0 0 35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 47
65 d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_util.c C 0 0 0 263 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 340
66 d:\Projects\C\cleonos\cleonos\c\apps\shell_main.c C 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 24
67 d:\Projects\C\cleonos\cleonos\c\apps\shstat_main.c C 0 0 0 45 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 54
68 d:\Projects\C\cleonos\cleonos\c\apps\shutdown_main.c C 0 0 0 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 49
69 d:\Projects\C\cleonos\cleonos\c\apps\sleep_main.c C 0 0 0 52 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 64
70 d:\Projects\C\cleonos\cleonos\c\apps\sort_main.c C 0 0 0 206 0 0 0 0 0 0 0 0 0 0 0 0 0 0 62 268
71 d:\Projects\C\cleonos\cleonos\c\apps\spawn_main.c C 0 0 0 76 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18 94
72 d:\Projects\C\cleonos\cleonos\c\apps\spin_main.c C 0 0 0 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 16
73 d:\Projects\C\cleonos\cleonos\c\apps\stats_main.c C 0 0 0 103 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 118
74 d:\Projects\C\cleonos\cleonos\c\apps\sysstat_main.c C 0 0 0 341 0 0 0 0 0 0 0 0 0 0 0 0 0 0 45 386
75 d:\Projects\C\cleonos\cleonos\c\apps\tail_main.c C 0 0 0 191 0 0 0 0 0 0 0 0 0 0 0 0 0 0 53 244
76 d:\Projects\C\cleonos\cleonos\c\apps\taskstat_main.c C 0 0 0 43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 52
77 d:\Projects\C\cleonos\cleonos\c\apps\top_main.c C 0 0 0 193 0 0 0 0 0 0 0 0 0 0 0 0 0 0 45 238
78 d:\Projects\C\cleonos\cleonos\c\apps\touch_main.c C 0 0 0 58 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 72
79 d:\Projects\C\cleonos\cleonos\c\apps\tty_main.c C 0 0 0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 79
80 d:\Projects\C\cleonos\cleonos\c\apps\ttydrv_main.c C 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 9
81 d:\Projects\C\cleonos\cleonos\c\apps\uniq_main.c C 0 0 0 168 0 0 0 0 0 0 0 0 0 0 0 0 0 0 47 215
82 d:\Projects\C\cleonos\cleonos\c\apps\userstat_main.c C 0 0 0 48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 57
83 d:\Projects\C\cleonos\cleonos\c\apps\wait_main.c C 0 0 0 68 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 83
84 d:\Projects\C\cleonos\cleonos\c\apps\wavplay_main.c C 0 0 0 447 0 0 0 0 0 0 0 0 0 0 0 0 0 0 110 557
85 d:\Projects\C\cleonos\cleonos\c\apps\wc_main.c C 0 0 0 165 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 209
86 d:\Projects\C\cleonos\cleonos\c\apps\write_main.c C 0 0 0 74 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 90
87 d:\Projects\C\cleonos\cleonos\c\apps\yield_main.c C 0 0 0 39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 48
88 d:\Projects\C\cleonos\cleonos\c\include\cleonos_rust_bridge.h C++ 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 4 10
89 d:\Projects\C\cleonos\cleonos\c\include\cleonos_stdio.h C++ 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 3 7
90 d:\Projects\C\cleonos\cleonos\c\include\cleonos_syscall.h C++ 0 0 0 0 0 0 223 0 0 0 0 0 0 0 0 0 0 0 12 235
91 d:\Projects\C\cleonos\cleonos\c\include\ctype.h C++ 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0 3 17
92 d:\Projects\C\cleonos\cleonos\c\include\dlfcn.h C++ 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 3 9
93 d:\Projects\C\cleonos\cleonos\c\include\stdio.h C++ 0 0 0 0 0 0 21 0 0 0 0 0 0 0 0 0 0 0 7 28
94 d:\Projects\C\cleonos\cleonos\c\include\stdlib.h C++ 0 0 0 0 0 0 27 0 0 0 0 0 0 0 0 0 0 0 10 37
95 d:\Projects\C\cleonos\cleonos\c\include\string.h C++ 0 0 0 0 0 0 25 0 0 0 0 0 0 0 0 0 0 0 5 30
96 d:\Projects\C\cleonos\cleonos\c\src\dlfcn.c C 0 0 0 33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 49
97 d:\Projects\C\cleonos\cleonos\c\src\libc_ctype.c C 0 0 0 34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 46
98 d:\Projects\C\cleonos\cleonos\c\src\libc_stdlib.c C 0 0 0 198 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57 255
99 d:\Projects\C\cleonos\cleonos\c\src\libc_string.c C 0 0 0 340 0 0 0 0 0 0 0 0 0 0 0 0 0 0 106 446
100 d:\Projects\C\cleonos\cleonos\c\src\runtime.c C 0 0 0 41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 54
101 d:\Projects\C\cleonos\cleonos\c\src\stdio.c C 0 0 0 570 0 0 0 0 0 0 0 0 0 0 0 0 0 0 143 713
102 d:\Projects\C\cleonos\cleonos\c\src\syscall.c C 0 0 0 278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 92 370
103 d:\Projects\C\cleonos\cleonos\c\stub.c C 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 4 2 9
104 d:\Projects\C\cleonos\cleonos\rust\src\lib.rs Rust 0 0 0 0 0 0 0 0 0 0 0 23 0 0 0 0 0 0 9 32
105 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\README.md Markdown 0 0 51 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 68
106 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\Makefile Makefile 0 0 0 0 0 0 0 34 0 0 0 0 0 0 0 0 0 7 14 55
107 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\am_map.c C 0 0 0 970 0 0 0 0 0 0 0 0 0 0 0 0 0 162 224 1356
108 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\am_map.h C++ 0 0 0 0 0 0 13 0 0 0 0 0 0 0 0 0 0 24 13 50
109 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\config.h C++ 0 0 0 0 0 0 33 0 0 0 0 0 0 0 0 0 0 34 34 101
110 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_englsh.h C++ 0 0 0 0 0 0 522 0 0 0 0 0 0 0 0 0 0 65 107 694
111 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_event.c C 0 0 0 22 0 0 0 0 0 0 0 0 0 0 0 0 0 27 15 64
112 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_event.h C++ 0 0 0 0 0 0 43 0 0 0 0 0 0 0 0 0 0 66 29 138
113 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_items.c C 0 0 0 77 0 0 0 0 0 0 0 0 0 0 0 0 0 38 14 129
114 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_items.h C++ 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 18 10 42
115 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_iwad.c C 0 0 0 509 0 0 0 0 0 0 0 0 0 0 0 0 0 133 207 849
116 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_iwad.h C++ 0 0 0 0 0 0 28 0 0 0 0 0 0 0 0 0 0 16 9 53
117 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_loop.c C 0 0 0 464 0 0 0 0 0 0 0 0 0 0 0 0 0 169 194 827
118 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_loop.h C++ 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 34 25 82
119 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_main.c C 0 0 0 1089 0 0 0 0 0 0 0 0 0 0 0 0 0 418 339 1846
120 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_main.h C++ 0 0 0 0 0 0 11 0 0 0 0 0 0 0 0 0 0 24 16 51
121 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_mode.c C 0 0 0 150 0 0 0 0 0 0 0 0 0 0 0 0 0 28 32 210
122 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_mode.h C++ 0 0 0 0 0 0 58 0 0 0 0 0 0 0 0 0 0 24 17 99
123 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_net.c C 0 0 0 158 0 0 0 0 0 0 0 0 0 0 0 0 0 61 63 282
124 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_player.h C++ 0 0 0 0 0 0 82 0 0 0 0 0 0 0 0 0 0 77 51 210
125 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_textur.h C++ 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 0 22 12 44
126 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_think.h C++ 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0 29 21 69
127 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_ticcmd.h C++ 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 26 14 57
128 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\deh_main.h C++ 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0 19 11 49
129 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\deh_misc.h C++ 0 0 0 0 0 0 55 0 0 0 0 0 0 0 0 0 0 17 12 84
130 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\deh_str.h C++ 0 0 0 0 0 0 18 0 0 0 0 0 0 0 0 0 0 17 13 48
131 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doom.h C++ 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 27 12 43
132 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomdata.h C++ 0 0 0 0 0 0 93 0 0 0 0 0 0 0 0 0 0 70 51 214
133 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomdef.c C 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 20 8 29
134 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomdef.h C++ 0 0 0 0 0 0 86 0 0 0 0 0 0 0 0 0 0 48 35 169
135 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomfeatures.h C++ 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 22 13 41
136 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric.c C 0 0 0 15 0 0 0 0 0 0 0 0 0 0 0 0 0 1 12 28
137 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric.h C++ 0 0 0 0 0 0 31 0 0 0 0 0 0 0 0 0 0 1 18 50
138 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric.vcxproj XML 0 0 0 0 0 0 0 0 339 0 0 0 0 0 0 0 0 0 0 339
139 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_allegro.c C 0 0 0 319 0 0 0 0 0 0 0 0 0 0 0 0 0 16 119 454
140 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_emscripten.c C 0 0 0 184 0 0 0 0 0 0 0 0 0 0 0 0 0 5 31 220
141 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_linuxvt.c C 0 0 0 412 0 0 0 0 0 0 0 0 0 0 0 0 0 39 78 529
142 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_sdl.c C 0 0 0 173 0 0 0 0 0 0 0 0 0 0 0 0 0 9 29 211
143 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_soso.c C 0 0 0 217 0 0 0 0 0 0 0 0 0 0 0 0 0 6 54 277
144 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_sosox.c C 0 0 0 197 0 0 0 0 0 0 0 0 0 0 0 0 0 3 48 248
145 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_win.c C 0 0 0 171 0 0 0 0 0 0 0 0 0 0 0 0 0 2 37 210
146 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_xlib.c C 0 0 0 161 0 0 0 0 0 0 0 0 0 0 0 0 0 7 46 214
147 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomkeys.h C++ 0 0 0 0 0 0 61 0 0 0 0 0 0 0 0 0 0 23 14 98
148 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomstat.c C 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 19 10 36
149 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomstat.h C++ 0 0 0 0 0 0 77 0 0 0 0 0 0 0 0 0 0 108 97 282
150 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomtype.h C++ 0 0 0 0 0 0 40 0 0 0 0 0 0 0 0 0 0 35 30 105
151 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\dstrings.c C 0 0 0 37 0 0 0 0 0 0 0 0 0 0 0 0 0 22 15 74
152 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\dstrings.h C++ 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 22 12 42
153 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\dummy.c C 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 30 16 54
154 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\f_finale.c C 0 0 0 528 0 0 0 0 0 0 0 0 0 0 0 0 0 77 114 719
155 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\f_finale.h C++ 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 23 14 46
156 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\f_wipe.c C 0 0 0 220 0 0 0 0 0 0 0 0 0 0 0 0 0 31 44 295
157 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\f_wipe.h C++ 0 0 0 0 0 0 29 0 0 0 0 0 0 0 0 0 0 22 13 64
158 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\g_game.c C 0 0 0 1572 0 0 0 0 0 0 0 0 0 0 0 0 0 319 413 2304
159 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\g_game.h C++ 0 0 0 0 0 0 29 0 0 0 0 0 0 0 0 0 0 28 24 81
160 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\gusconf.c C 0 0 0 190 0 0 0 0 0 0 0 0 0 0 0 0 0 24 58 272
161 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\gusconf.h C++ 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 16 7 30
162 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\hu_lib.c C 0 0 0 252 0 0 0 0 0 0 0 0 0 0 0 0 0 32 64 348
163 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\hu_lib.h C++ 0 0 0 0 0 0 77 0 0 0 0 0 0 0 0 0 0 59 47 183
164 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\hu_stuff.c C 0 0 0 493 0 0 0 0 0 0 0 0 0 0 0 0 0 51 98 642
165 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\hu_stuff.h C++ 0 0 0 0 0 0 21 0 0 0 0 0 0 0 0 0 0 23 16 60
166 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_allegromusic.c C 0 0 0 192 0 0 0 0 0 0 0 0 0 0 0 0 0 38 79 309
167 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_allegrosound.c C 0 0 0 255 0 0 0 0 0 0 0 0 0 0 0 0 0 73 106 434
168 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_cdmus.c C 0 0 0 159 0 0 0 0 0 0 0 0 0 0 0 0 0 31 54 244
169 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_cdmus.h C++ 0 0 0 0 0 0 20 0 0 0 0 0 0 0 0 0 0 15 7 42
170 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_endoom.c C 0 0 0 48 0 0 0 0 0 0 0 0 0 0 0 0 0 26 28 102
171 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_endoom.h C++ 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 19 7 30
172 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_input.c C 0 0 0 261 0 0 0 0 0 0 0 0 0 0 0 0 0 45 36 342
173 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_joystick.c C 0 0 0 254 0 0 0 0 0 0 0 0 0 0 0 0 0 38 68 360
174 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_joystick.h C++ 0 0 0 0 0 0 21 0 0 0 0 0 0 0 0 0 0 33 17 71
175 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_scale.c C 0 0 0 889 0 0 0 0 0 0 0 0 0 0 0 0 0 225 339 1453
176 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_scale.h C++ 0 0 0 0 0 0 21 0 0 0 0 0 0 0 0 0 0 20 13 54
177 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_sdlmusic.c C 0 0 0 887 0 0 0 0 0 0 0 0 0 0 0 0 0 177 253 1317
178 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_sdlsound.c C 0 0 0 616 0 0 0 0 0 0 0 0 0 0 0 0 0 195 266 1077
179 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_sound.c C 0 0 0 284 0 0 0 0 0 0 0 0 0 0 0 0 0 62 75 421
180 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_sound.h C++ 0 0 0 0 0 0 104 0 0 0 0 0 0 0 0 0 0 71 82 257
181 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_swap.h C++ 0 0 0 0 0 0 34 0 0 0 0 0 0 0 0 0 0 18 22 74
182 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_system.c C 0 0 0 347 0 0 0 0 0 0 0 0 0 0 0 0 0 112 120 579
183 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_system.h C++ 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0 37 29 85
184 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_timer.c C 0 0 0 36 0 0 0 0 0 0 0 0 0 0 0 0 0 32 29 97
185 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_timer.h C++ 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 23 11 43
186 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_video.c C 0 0 0 309 0 0 0 0 0 0 0 0 0 0 0 0 0 74 113 496
187 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_video.h C++ 0 0 0 0 0 0 63 0 0 0 0 0 0 0 0 0 0 65 48 176
188 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\icon.c C 0 0 0 260 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 263
189 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\info.c C 0 0 0 4492 0 0 0 0 0 0 0 0 0 0 0 0 0 21 150 4663
190 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\info.h C++ 0 0 0 0 0 0 1296 0 0 0 0 0 0 0 0 0 0 21 15 1332
191 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_argv.c C 0 0 0 150 0 0 0 0 0 0 0 0 0 0 0 0 0 52 64 266
192 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_argv.h C++ 0 0 0 0 0 0 11 0 0 0 0 0 0 0 0 0 0 26 13 50
193 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_bbox.c C 0 0 0 21 0 0 0 0 0 0 0 0 0 0 0 0 0 20 14 55
194 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_bbox.h C++ 0 0 0 0 0 0 18 0 0 0 0 0 0 0 0 0 0 19 11 48
195 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_cheat.c C 0 0 0 38 0 0 0 0 0 0 0 0 0 0 0 0 0 32 20 90
196 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_cheat.h C++ 0 0 0 0 0 0 24 0 0 0 0 0 0 0 0 0 0 23 16 63
197 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_config.c C 0 0 0 615 0 0 0 0 0 0 0 0 0 0 0 0 0 948 566 2129
198 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_config.h C++ 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 17 7 40
199 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_controls.c C 0 0 0 269 0 0 0 0 0 0 0 0 0 0 0 0 0 57 73 399
200 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_controls.h C++ 0 0 0 0 0 0 121 0 0 0 0 0 0 0 0 0 0 17 31 169
201 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_fixed.c C 0 0 0 24 0 0 0 0 0 0 0 0 0 0 0 0 0 21 18 63
202 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_fixed.h C++ 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 20 12 40
203 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_menu.c C 0 0 0 1502 0 0 0 0 0 0 0 0 0 0 0 0 0 250 374 2126
204 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_menu.h C++ 0 0 0 0 0 0 11 0 0 0 0 0 0 0 0 0 0 33 18 62
205 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_misc.c C 0 0 0 335 0 0 0 0 0 0 0 0 0 0 0 0 0 87 115 537
206 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_misc.h C++ 0 0 0 0 0 0 27 0 0 0 0 0 0 0 0 0 0 17 8 52
207 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_random.c C 0 0 0 37 0 0 0 0 0 0 0 0 0 0 0 0 0 22 7 66
208 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_random.h C++ 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 21 12 40
209 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\memio.c C 0 0 0 122 0 0 0 0 0 0 0 0 0 0 0 0 0 27 49 198
210 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\memio.h C++ 0 0 0 0 0 0 18 0 0 0 0 0 0 0 0 0 0 14 7 39
211 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\mus2mid.c C 0 0 0 504 0 0 0 0 0 0 0 0 0 0 0 0 0 76 158 738
212 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\mus2mid.h C++ 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 3 9
213 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_client.h C++ 0 0 0 0 0 0 29 0 0 0 0 0 0 0 0 0 0 15 9 53
214 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_dedicated.h C++ 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 16 6 26
215 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_defs.h C++ 0 0 0 0 0 0 148 0 0 0 0 0 0 0 0 0 0 46 55 249
216 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_gui.h C++ 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 18 7 30
217 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_io.h C++ 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 16 7 37
218 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_loop.h C++ 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 16 6 28
219 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_packet.h C++ 0 0 0 0 0 0 18 0 0 0 0 0 0 0 0 0 0 16 11 45
220 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_query.h C++ 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0 16 10 45
221 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_sdl.h C++ 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 16 6 27
222 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_server.h C++ 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 21 14 43
223 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_ceilng.c C 0 0 0 226 0 0 0 0 0 0 0 0 0 0 0 0 0 47 52 325
224 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_doors.c C 0 0 0 571 0 0 0 0 0 0 0 0 0 0 0 0 0 83 125 779
225 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_enemy.c C 0 0 0 1341 0 0 0 0 0 0 0 0 0 0 0 0 0 238 428 2007
226 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_floor.c C 0 0 0 429 0 0 0 0 0 0 0 0 0 0 0 0 0 54 64 547
227 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_inter.c C 0 0 0 643 0 0 0 0 0 0 0 0 0 0 0 0 0 115 165 923
228 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_inter.h C++ 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 17 10 31
229 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_lights.c C 0 0 0 201 0 0 0 0 0 0 0 0 0 0 0 0 0 72 78 351
230 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_local.h C++ 0 0 0 0 0 0 155 0 0 0 0 0 0 0 0 0 0 66 77 298
231 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_map.c C 0 0 0 828 0 0 0 0 0 0 0 0 0 0 0 0 0 304 317 1449
232 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_maputl.c C 0 0 0 651 0 0 0 0 0 0 0 0 0 0 0 0 0 161 190 1002
233 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_mobj.c C 0 0 0 654 0 0 0 0 0 0 0 0 0 0 0 0 0 184 212 1050
234 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_mobj.h C++ 0 0 0 0 0 0 77 0 0 0 0 0 0 0 0 0 0 161 47 285
235 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_plats.c C 0 0 0 218 0 0 0 0 0 0 0 0 0 0 0 0 0 29 58 305
236 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_pspr.c C 0 0 0 537 0 0 0 0 0 0 0 0 0 0 0 0 0 173 179 889
237 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_pspr.h C++ 0 0 0 0 0 0 21 0 0 0 0 0 0 0 0 0 0 35 16 72
238 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_saveg.c C 0 0 0 975 0 0 0 0 0 0 0 0 0 0 0 0 0 435 482 1892
239 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_saveg.h C++ 0 0 0 0 0 0 21 0 0 0 0 0 0 0 0 0 0 24 18 63
240 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_setup.c C 0 0 0 547 0 0 0 0 0 0 0 0 0 0 0 0 0 134 175 856
241 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_setup.h C++ 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 0 19 9 38
242 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_sight.c C 0 0 0 204 0 0 0 0 0 0 0 0 0 0 0 0 0 75 72 351
243 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_spec.c C 0 0 0 908 0 0 0 0 0 0 0 0 0 0 0 0 0 307 275 1490
244 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_spec.h C++ 0 0 0 0 0 0 380 0 0 0 0 0 0 0 0 0 0 75 183 638
245 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_switch.c C 0 0 0 425 0 0 0 0 0 0 0 0 0 0 0 0 0 111 113 649
246 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_telept.c C 0 0 0 69 0 0 0 0 0 0 0 0 0 0 0 0 0 35 30 134
247 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_tick.c C 0 0 0 63 0 0 0 0 0 0 0 0 0 0 0 0 0 53 36 152
248 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_tick.h C++ 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 20 10 34
249 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_user.c C 0 0 0 219 0 0 0 0 0 0 0 0 0 0 0 0 0 73 88 380
250 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_bsp.c C 0 0 0 329 0 0 0 0 0 0 0 0 0 0 0 0 0 122 123 574
251 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_bsp.h C++ 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 19 20 62
252 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_data.c C 0 0 0 543 0 0 0 0 0 0 0 0 0 0 0 0 0 167 203 913
253 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_data.h C++ 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 25 13 52
254 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_defs.h C++ 0 0 0 0 0 0 164 0 0 0 0 0 0 0 0 0 0 155 130 449
255 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_draw.c C 0 0 0 554 0 0 0 0 0 0 0 0 0 0 0 0 0 216 206 976
256 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_draw.h C++ 0 0 0 0 0 0 40 0 0 0 0 0 0 0 0 0 0 33 32 105
257 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_local.h C++ 0 0 0 0 0 0 13 0 0 0 0 0 0 0 0 0 0 24 9 46
258 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_main.c C 0 0 0 556 0 0 0 0 0 0 0 0 0 0 0 0 0 155 181 892
259 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_main.h C++ 0 0 0 0 0 0 72 0 0 0 0 0 0 0 0 0 0 45 44 161
260 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_plane.c C 0 0 0 278 0 0 0 0 0 0 0 0 0 0 0 0 0 84 85 447
261 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_plane.h C++ 0 0 0 0 0 0 37 0 0 0 0 0 0 0 0 0 0 18 22 77
262 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_segs.c C 0 0 0 507 0 0 0 0 0 0 0 0 0 0 0 0 0 103 134 744
263 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_segs.h C++ 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 17 9 34
264 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_sky.c C 0 0 0 10 0 0 0 0 0 0 0 0 0 0 0 0 0 31 12 53
265 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_sky.h C++ 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 20 10 38
266 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_state.h C++ 0 0 0 0 0 0 49 0 0 0 0 0 0 0 0 0 0 36 43 128
267 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_things.c C 0 0 0 605 0 0 0 0 0 0 0 0 0 0 0 0 0 171 207 983
268 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_things.h C++ 0 0 0 0 0 0 28 0 0 0 0 0 0 0 0 0 0 20 18 66
269 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\s_sound.c C 0 0 0 431 0 0 0 0 0 0 0 0 0 0 0 0 0 108 132 671
270 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\s_sound.h C++ 0 0 0 0 0 0 20 0 0 0 0 0 0 0 0 0 0 42 28 90
271 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\sha1.c C 0 0 0 239 0 0 0 0 0 0 0 0 0 0 0 0 0 49 32 320
272 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\sha1.h C++ 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 16 8 41
273 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\sounds.c C 0 0 0 192 0 0 0 0 0 0 0 0 0 0 0 0 0 25 13 230
274 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\sounds.h C++ 0 0 0 0 0 0 191 0 0 0 0 0 0 0 0 0 0 26 11 228
275 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\st_lib.c C 0 0 0 186 0 0 0 0 0 0 0 0 0 0 0 0 0 35 64 285
276 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\st_lib.h C++ 0 0 0 0 0 0 91 0 0 0 0 0 0 0 0 0 0 60 59 210
277 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\st_stuff.c C 0 0 0 903 0 0 0 0 0 0 0 0 0 0 0 0 0 216 298 1417
278 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\st_stuff.h C++ 0 0 0 0 0 0 36 0 0 0 0 0 0 0 0 0 0 31 23 90
279 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\statdump.c C 0 0 0 239 0 0 0 0 0 0 0 0 0 0 0 0 0 58 96 393
280 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\statdump.h C++ 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 15 4 24
281 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\tables.c C 0 0 0 2173 0 0 0 0 0 0 0 0 0 0 0 0 0 37 18 2228
282 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\tables.h C++ 0 0 0 0 0 0 26 0 0 0 0 0 0 0 0 0 0 44 27 97
283 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\v_patch.h C++ 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 25 9 51
284 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\v_video.c C 0 0 0 617 0 0 0 0 0 0 0 0 0 0 0 0 0 139 177 933
285 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\v_video.h C++ 0 0 0 0 0 0 34 0 0 0 0 0 0 0 0 0 0 40 35 109
286 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_checksum.c C 0 0 0 48 0 0 0 0 0 0 0 0 0 0 0 0 0 21 19 88
287 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_checksum.h C++ 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 17 6 28
288 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_file.c C 0 0 0 44 0 0 0 0 0 0 0 0 0 0 0 0 0 32 20 96
289 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_file.h C++ 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 31 25 79
290 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_file_stdc.c C 0 0 0 49 0 0 0 0 0 0 0 0 0 0 0 0 0 22 26 97
291 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_main.c C 0 0 0 87 0 0 0 0 0 0 0 0 0 0 0 0 0 66 46 199
292 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_main.h C++ 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 16 5 25
293 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_merge.h C++ 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 23 13 45
294 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_wad.c C 0 0 0 353 0 0 0 0 0 0 0 0 0 0 0 0 0 124 136 613
295 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_wad.h C++ 0 0 0 0 0 0 31 0 0 0 0 0 0 0 0 0 0 24 24 79
296 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\wi_stuff.c C 0 0 0 1215 0 0 0 0 0 0 0 0 0 0 0 0 0 210 405 1830
297 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\wi_stuff.h C++ 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 24 11 49
298 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\z_zone.c C 0 0 0 278 0 0 0 0 0 0 0 0 0 0 0 0 0 89 122 489
299 d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\z_zone.h C++ 0 0 0 0 0 0 29 0 0 0 0 0 0 0 0 0 0 29 16 74
300 d:\Projects\C\cleonos\clks\arch\aarch64\startup\boot.c C 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 7
301 d:\Projects\C\cleonos\clks\arch\x86_64\interrupt\interrupt_stubs.S Go Assembly 0 0 0 0 0 0 0 0 0 0 0 0 0 108 0 0 0 0 12 120
302 d:\Projects\C\cleonos\clks\arch\x86_64\startup\boot.c C 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 7
303 d:\Projects\C\cleonos\clks\arch\x86_64\startup\exec_stack_call.S Go Assembly 0 0 0 0 0 0 0 0 0 0 0 0 0 40 0 0 0 0 8 48
304 d:\Projects\C\cleonos\clks\include\clks\audio.h C++ 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 3 12
305 d:\Projects\C\cleonos\clks\include\clks\boot.h C++ 0 0 0 0 0 0 11 0 0 0 0 0 0 0 0 0 0 0 4 15
306 d:\Projects\C\cleonos\clks\include\clks\compiler.h C++ 0 0 0 0 0 0 13 0 0 0 0 0 0 0 0 0 0 0 4 17
307 d:\Projects\C\cleonos\clks\include\clks\cpu.h C++ 0 0 0 0 0 0 20 0 0 0 0 0 0 0 0 0 0 0 4 24
308 d:\Projects\C\cleonos\clks\include\clks\desktop.h C++ 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 4 11
309 d:\Projects\C\cleonos\clks\include\clks\driver.h C++ 0 0 0 0 0 0 29 0 0 0 0 0 0 0 0 0 0 0 8 37
310 d:\Projects\C\cleonos\clks\include\clks\elf64.h C++ 0 0 0 0 0 0 32 0 0 0 0 0 0 0 0 0 0 0 9 41
311 d:\Projects\C\cleonos\clks\include\clks\elfrunner.h C++ 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 3 9
312 d:\Projects\C\cleonos\clks\include\clks\exec.h C++ 0 0 0 0 0 0 73 0 0 0 0 0 0 0 0 0 0 0 8 81
313 d:\Projects\C\cleonos\clks\include\clks\framebuffer.h C++ 0 0 0 0 0 0 26 0 0 0 0 0 0 0 0 0 0 0 6 32
314 d:\Projects\C\cleonos\clks\include\clks\fs.h C++ 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 0 7 30
315 d:\Projects\C\cleonos\clks\include\clks\heap.h C++ 0 0 0 0 0 0 15 0 0 0 0 0 0 0 0 0 0 0 4 19
316 d:\Projects\C\cleonos\clks\include\clks\interrupts.h C++ 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 3 9
317 d:\Projects\C\cleonos\clks\include\clks\kelf.h C++ 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 5 14
318 d:\Projects\C\cleonos\clks\include\clks\kernel.h C++ 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 2 6
319 d:\Projects\C\cleonos\clks\include\clks\keyboard.h C++ 0 0 0 0 0 0 27 0 0 0 0 0 0 0 0 0 0 0 5 32
320 d:\Projects\C\cleonos\clks\include\clks\limine.h C++ 0 0 0 0 0 0 112 0 0 0 0 0 0 0 0 0 0 0 24 136
321 d:\Projects\C\cleonos\clks\include\clks\log.h C++ 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0 5 19
322 d:\Projects\C\cleonos\clks\include\clks\mouse.h C++ 0 0 0 0 0 0 20 0 0 0 0 0 0 0 0 0 0 0 6 26
323 d:\Projects\C\cleonos\clks\include\clks\panic.h C++ 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 4 11
324 d:\Projects\C\cleonos\clks\include\clks\pmm.h C++ 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 5 21
325 d:\Projects\C\cleonos\clks\include\clks\ramdisk.h C++ 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 8 25
326 d:\Projects\C\cleonos\clks\include\clks\scheduler.h C++ 0 0 0 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0 5 23
327 d:\Projects\C\cleonos\clks\include\clks\serial.h C++ 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 2 8
328 d:\Projects\C\cleonos\clks\include\clks\service.h C++ 0 0 0 0 0 0 31 0 0 0 0 0 0 0 0 0 0 0 8 39
329 d:\Projects\C\cleonos\clks\include\clks\shell.h C++ 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 3 10
330 d:\Projects\C\cleonos\clks\include\clks\string.h C++ 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 3 12
331 d:\Projects\C\cleonos\clks\include\clks\syscall.h C++ 0 0 0 0 0 0 91 0 0 0 0 0 0 0 0 0 0 0 5 96
332 d:\Projects\C\cleonos\clks\include\clks\task.h C++ 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0 0 7 26
333 d:\Projects\C\cleonos\clks\include\clks\tty.h C++ 0 0 0 0 0 0 15 0 0 0 0 0 0 0 0 0 0 0 4 19
334 d:\Projects\C\cleonos\clks\include\clks\types.h C++ 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0 6 20
335 d:\Projects\C\cleonos\clks\include\clks\userland.h C++ 0 0 0 0 0 0 12 0 0 0 0 0 0 0 0 0 0 0 4 16
336 d:\Projects\C\cleonos\clks\kernel\boot\limine\limine_requests.c C 0 0 0 76 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 102
337 d:\Projects\C\cleonos\clks\kernel\core\interrupts.c C 0 0 0 307 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43 350
338 d:\Projects\C\cleonos\clks\kernel\core\kmain.c C 0 0 0 388 0 0 0 0 0 0 0 0 0 0 0 0 0 1 77 466
339 d:\Projects\C\cleonos\clks\kernel\core\log.c C 0 0 0 179 0 0 0 0 0 0 0 0 0 0 0 0 0 0 48 227
340 d:\Projects\C\cleonos\clks\kernel\core\panic.c C 0 0 0 527 0 0 0 0 0 0 0 0 0 0 0 0 0 0 155 682
341 d:\Projects\C\cleonos\clks\kernel\core\scheduler.c C 0 0 0 136 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 180
342 d:\Projects\C\cleonos\clks\kernel\core\service.c C 0 0 0 107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34 141
343 d:\Projects\C\cleonos\clks\kernel\hal\audio\pcspeaker.c C 0 0 0 101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 126
344 d:\Projects\C\cleonos\clks\kernel\hal\serial\serial.c C 0 0 0 51 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 67
345 d:\Projects\C\cleonos\clks\kernel\hal\video\font8x8.c C 0 0 0 45 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 53
346 d:\Projects\C\cleonos\clks\kernel\hal\video\font8x8.h C++ 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 3 8
347 d:\Projects\C\cleonos\clks\kernel\hal\video\framebuffer.c C 0 0 0 247 0 0 0 0 0 0 0 0 0 0 0 0 0 0 69 316
348 d:\Projects\C\cleonos\clks\kernel\hal\video\psf_font.c C 0 0 0 203 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56 259
349 d:\Projects\C\cleonos\clks\kernel\hal\video\psf_font.h C++ 0 0 0 0 0 0 15 0 0 0 0 0 0 0 0 0 0 0 5 20
350 d:\Projects\C\cleonos\clks\kernel\input\keyboard.c C 0 0 0 370 0 0 0 0 0 0 0 0 0 0 0 0 0 0 95 465
351 d:\Projects\C\cleonos\clks\kernel\input\mouse.c C 0 0 0 243 0 0 0 0 0 0 0 0 0 0 0 0 0 0 63 306
352 d:\Projects\C\cleonos\clks\kernel\interface\desktop.c C 0 0 0 321 0 0 0 0 0 0 0 0 0 0 0 0 0 0 86 407
353 d:\Projects\C\cleonos\clks\kernel\interface\shell.c C 0 0 0 1232 0 0 0 0 0 0 0 0 0 0 0 0 0 0 316 1548
354 d:\Projects\C\cleonos\clks\kernel\interface\tty.c C 0 0 0 1137 0 0 0 0 0 0 0 0 0 0 0 0 0 0 288 1425
355 d:\Projects\C\cleonos\clks\kernel\memory\heap.c C 0 0 0 137 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 181
356 d:\Projects\C\cleonos\clks\kernel\memory\pmm.c C 0 0 0 82 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 105
357 d:\Projects\C\cleonos\clks\kernel\runtime\driver.c C 0 0 0 166 0 0 0 0 0 0 0 0 0 0 0 0 0 0 49 215
358 d:\Projects\C\cleonos\clks\kernel\runtime\elf64.c C 0 0 0 279 0 0 0 0 0 0 0 0 0 0 0 0 0 1 84 364
359 d:\Projects\C\cleonos\clks\kernel\runtime\elfrunner.c C 0 0 0 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 38
360 d:\Projects\C\cleonos\clks\kernel\runtime\exec.c C 0 0 0 2179 0 0 0 0 0 0 0 0 0 0 0 0 0 1 595 2775
361 d:\Projects\C\cleonos\clks\kernel\runtime\kelf.c C 0 0 0 198 0 0 0 0 0 0 0 0 0 0 0 0 0 1 52 251
362 d:\Projects\C\cleonos\clks\kernel\runtime\syscall.c C 0 0 0 2021 0 0 0 0 0 0 0 0 0 0 0 0 0 0 507 2528
363 d:\Projects\C\cleonos\clks\kernel\runtime\userland.c C 0 0 0 146 0 0 0 0 0 0 0 0 0 0 0 0 0 0 38 184
364 d:\Projects\C\cleonos\clks\kernel\storage\fs.c C 0 0 0 684 0 0 0 0 0 0 0 0 0 0 0 0 0 0 222 906
365 d:\Projects\C\cleonos\clks\kernel\storage\ramdisk.c C 0 0 0 172 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50 222
366 d:\Projects\C\cleonos\clks\kernel\support\libc_compat.c C 0 0 0 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 32
367 d:\Projects\C\cleonos\clks\kernel\support\string.c C 0 0 0 54 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 70
368 d:\Projects\C\cleonos\clks\rust\src\lib.rs Rust 0 0 0 0 0 0 0 0 0 0 0 21 0 0 0 0 0 0 6 27
369 d:\Projects\C\cleonos\cmake\check_tools.cmake CMake 0 0 0 0 0 34 0 0 0 0 0 0 0 0 0 0 0 0 7 41
370 d:\Projects\C\cleonos\cmake\gen_kernel_symbols.cmake CMake 0 0 0 0 0 80 0 0 0 0 0 0 0 0 0 0 0 0 26 106
371 d:\Projects\C\cleonos\cmake\log.cmake CMake 0 0 0 0 0 30 0 0 0 0 0 0 0 0 0 0 0 0 6 36
372 d:\Projects\C\cleonos\cmake\log_emit.cmake CMake 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 0 0 6 29
373 d:\Projects\C\cleonos\cmake\setup_limine.cmake CMake 0 0 0 0 0 100 0 0 0 0 0 0 0 0 0 0 0 0 19 119
374 d:\Projects\C\cleonos\configs\limine.conf Properties 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 1 7
375 d:\Projects\C\cleonos\configs\menuconfig\clks_features.json JSON 0 0 0 0 0 0 0 0 0 376 0 0 0 0 0 0 0 0 1 377
376 d:\Projects\C\cleonos\docs\README.md Markdown 0 0 31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 35
377 d:\Projects\C\cleonos\docs\stage1.md Markdown 0 0 41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 46
378 d:\Projects\C\cleonos\docs\stage10.md Markdown 0 0 34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 40
379 d:\Projects\C\cleonos\docs\stage11.md Markdown 0 0 36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 41
380 d:\Projects\C\cleonos\docs\stage12.md Markdown 0 0 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 46
381 d:\Projects\C\cleonos\docs\stage13.md Markdown 0 0 34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 40
382 d:\Projects\C\cleonos\docs\stage14.md Markdown 0 0 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 52
383 d:\Projects\C\cleonos\docs\stage15.md Markdown 0 0 47 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 54
384 d:\Projects\C\cleonos\docs\stage2.md Markdown 0 0 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 35
385 d:\Projects\C\cleonos\docs\stage20.md Markdown 0 0 46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 52
386 d:\Projects\C\cleonos\docs\stage21.md Markdown 0 0 72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 79
387 d:\Projects\C\cleonos\docs\stage22.md Markdown 0 0 68 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 75
388 d:\Projects\C\cleonos\docs\stage23.md Markdown 0 0 41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 47
389 d:\Projects\C\cleonos\docs\stage24.md Markdown 0 0 42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 49
390 d:\Projects\C\cleonos\docs\stage25.md Markdown 0 0 58 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 65
391 d:\Projects\C\cleonos\docs\stage26.md Markdown 0 0 32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 39
392 d:\Projects\C\cleonos\docs\stage27.md Markdown 0 0 32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 39
393 d:\Projects\C\cleonos\docs\stage28.md Markdown 0 0 37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 44
394 d:\Projects\C\cleonos\docs\stage29.md Markdown 0 0 33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 40
395 d:\Projects\C\cleonos\docs\stage3.md Markdown 0 0 29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 34
396 d:\Projects\C\cleonos\docs\stage4.md Markdown 0 0 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 35
397 d:\Projects\C\cleonos\docs\stage5.md Markdown 0 0 29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 34
398 d:\Projects\C\cleonos\docs\stage6.md Markdown 0 0 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 36
399 d:\Projects\C\cleonos\docs\stage7.md Markdown 0 0 34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 40
400 d:\Projects\C\cleonos\docs\stage8.md Markdown 0 0 31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 37
401 d:\Projects\C\cleonos\docs\stage9.md Markdown 0 0 31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 37
402 d:\Projects\C\cleonos\docs\syscall.md Markdown 0 0 499 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 206 705
403 d:\Projects\C\cleonos\limine\.github\dependabot.yml YAML 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 8
404 d:\Projects\C\cleonos\limine\.github\workflows\binary-release.yml YAML 78 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 99
405 d:\Projects\C\cleonos\limine\.github\workflows\check.yml YAML 34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 46
406 d:\Projects\C\cleonos\limine\.github\workflows\pr_branch_check.yml YAML 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 16
407 d:\Projects\C\cleonos\limine\.github\workflows\qa.yml YAML 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 19
408 d:\Projects\C\cleonos\limine\.github\workflows\release.yml YAML 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 81
409 d:\Projects\C\cleonos\limine\3RDPARTY.md Markdown 0 0 53 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 68
410 d:\Projects\C\cleonos\limine\CONFIG.md Markdown 0 0 320 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 53 373
411 d:\Projects\C\cleonos\limine\FAQ.md Markdown 0 0 26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 36
412 d:\Projects\C\cleonos\limine\INSTALL.md Markdown 0 0 37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 52
413 d:\Projects\C\cleonos\limine\README.md Markdown 0 0 70 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 103
414 d:\Projects\C\cleonos\limine\USAGE.md Markdown 0 0 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 108
415 d:\Projects\C\cleonos\limine\common\common.mk Makefile 0 0 0 0 0 0 0 562 0 0 0 0 0 0 0 0 0 0 115 677
416 d:\Projects\C\cleonos\limine\common\crypt\blake2b.c C 0 0 0 179 0 0 0 0 0 0 0 0 0 0 0 0 0 3 39 221
417 d:\Projects\C\cleonos\limine\common\crypt\blake2b.h C++ 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 5 11
418 d:\Projects\C\cleonos\limine\common\drivers\disk.h C++ 0 0 0 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0 9 27
419 d:\Projects\C\cleonos\limine\common\drivers\disk.s2.c C 0 0 0 646 0 0 0 0 0 0 0 0 0 0 0 0 0 33 178 857
420 d:\Projects\C\cleonos\limine\common\drivers\edid.c C 0 0 0 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 86
421 d:\Projects\C\cleonos\limine\common\drivers\edid.h C++ 0 0 0 0 0 0 37 0 0 0 0 0 0 0 0 0 0 0 7 44
422 d:\Projects\C\cleonos\limine\common\drivers\gop.c C 0 0 0 306 0 0 0 0 0 0 0 0 0 0 0 0 0 3 73 382
423 d:\Projects\C\cleonos\limine\common\drivers\gop.h C++ 0 0 0 0 0 0 13 0 0 0 0 0 0 0 0 0 0 0 7 20
424 d:\Projects\C\cleonos\limine\common\drivers\serial.c C 0 0 0 37 0 0 0 0 0 0 0 0 0 0 0 0 0 1 13 51
425 d:\Projects\C\cleonos\limine\common\drivers\serial.h C++ 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 7 16
426 d:\Projects\C\cleonos\limine\common\drivers\vbe.c C 0 0 0 307 0 0 0 0 0 0 0 0 0 0 0 0 0 8 53 368
427 d:\Projects\C\cleonos\limine\common\drivers\vbe.h C++ 0 0 0 0 0 0 11 0 0 0 0 0 0 0 0 0 0 0 5 16
428 d:\Projects\C\cleonos\limine\common\drivers\vga_textmode.c C 0 0 0 294 0 0 0 0 0 0 0 0 0 0 0 0 0 5 71 370
429 d:\Projects\C\cleonos\limine\common\drivers\vga_textmode.h C++ 0 0 0 0 0 0 24 0 0 0 0 0 0 0 0 0 0 0 12 36
430 d:\Projects\C\cleonos\limine\common\entry.s2.c C 0 0 0 106 0 0 0 0 0 0 0 0 0 0 0 0 0 1 28 135
431 d:\Projects\C\cleonos\limine\common\entry.s3.c C 0 0 0 202 0 0 0 0 0 0 0 0 0 0 0 0 0 0 47 249
432 d:\Projects\C\cleonos\limine\common\fs\fat32.h C++ 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 5 12
433 d:\Projects\C\cleonos\limine\common\fs\fat32.s2.c C 0 0 0 577 0 0 0 0 0 0 0 0 0 0 0 0 0 39 111 727
434 d:\Projects\C\cleonos\limine\common\fs\file.h C++ 0 0 0 0 0 0 39 0 0 0 0 0 0 0 0 0 0 0 7 46
435 d:\Projects\C\cleonos\limine\common\fs\file.s2.c C 0 0 0 163 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 185
436 d:\Projects\C\cleonos\limine\common\fs\iso9660.h C++ 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 4 11
437 d:\Projects\C\cleonos\limine\common\fs\iso9660.s2.c C 0 0 0 407 0 0 0 0 0 0 0 0 0 0 0 0 0 38 94 539
438 d:\Projects\C\cleonos\limine\common\gensyms.sh Shell Script 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 0 0 2 17 52
439 d:\Projects\C\cleonos\limine\common\lib\acpi.c C 0 0 0 344 0 0 0 0 0 0 0 0 0 0 0 0 0 27 102 473
440 d:\Projects\C\cleonos\limine\common\lib\acpi.h C++ 0 0 0 0 0 0 163 0 0 0 0 0 0 0 0 0 0 24 30 217
441 d:\Projects\C\cleonos\limine\common\lib\bli.c C 0 0 0 67 0 0 0 0 0 0 0 0 0 0 0 0 0 4 20 91
442 d:\Projects\C\cleonos\limine\common\lib\bli.h C++ 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 5 12
443 d:\Projects\C\cleonos\limine\common\lib\config.c C 0 0 0 628 0 0 0 0 0 0 0 0 0 0 0 0 0 11 126 765
444 d:\Projects\C\cleonos\limine\common\lib\config.h C++ 0 0 0 0 0 0 28 0 0 0 0 0 0 0 0 0 0 0 9 37
445 d:\Projects\C\cleonos\limine\common\lib\elf.c C 0 0 0 964 0 0 0 0 0 0 0 0 0 0 0 0 0 27 212 1203
446 d:\Projects\C\cleonos\limine\common\lib\elf.h C++ 0 0 0 0 0 0 74 0 0 0 0 0 0 0 0 0 0 0 14 88
447 d:\Projects\C\cleonos\limine\common\lib\elsewhere.c C 0 0 0 81 0 0 0 0 0 0 0 0 0 0 0 0 0 7 17 105
448 d:\Projects\C\cleonos\limine\common\lib\elsewhere.h C++ 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 5 21
449 d:\Projects\C\cleonos\limine\common\lib\fb.c C 0 0 0 153 0 0 0 0 0 0 0 0 0 0 0 0 0 4 17 174
450 d:\Projects\C\cleonos\limine\common\lib\fb.h C++ 0 0 0 0 0 0 36 0 0 0 0 0 0 0 0 0 0 0 12 48
451 d:\Projects\C\cleonos\limine\common\lib\fdt.c C 0 0 0 33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 45
452 d:\Projects\C\cleonos\limine\common\lib\fdt.h C++ 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 0 0 6 16
453 d:\Projects\C\cleonos\limine\common\lib\getchar.c C 0 0 0 306 0 0 0 0 0 0 0 0 0 0 0 0 0 1 59 366
454 d:\Projects\C\cleonos\limine\common\lib\getchar.h C++ 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 0 6 29
455 d:\Projects\C\cleonos\limine\common\lib\gterm.c C 0 0 0 813 0 0 0 0 0 0 0 0 0 0 0 0 0 9 118 940
456 d:\Projects\C\cleonos\limine\common\lib\gterm.h C++ 0 0 0 0 0 0 29 0 0 0 0 0 0 0 0 0 0 0 6 35
457 d:\Projects\C\cleonos\limine\common\lib\guid.c C 0 0 0 82 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 96
458 d:\Projects\C\cleonos\limine\common\lib\guid.h C++ 0 0 0 0 0 0 15 0 0 0 0 0 0 0 0 0 0 1 5 21
459 d:\Projects\C\cleonos\limine\common\lib\image.c C 0 0 0 52 0 0 0 0 0 0 0 0 0 0 0 0 0 2 18 72
460 d:\Projects\C\cleonos\limine\common\lib\image.h C++ 0 0 0 0 0 0 27 0 0 0 0 0 0 0 0 0 0 0 6 33
461 d:\Projects\C\cleonos\limine\common\lib\libc.c C 0 0 0 114 0 0 0 0 0 0 0 0 0 0 0 0 0 3 15 132
462 d:\Projects\C\cleonos\limine\common\lib\libc.h C++ 0 0 0 0 0 0 29 0 0 0 0 0 0 0 0 0 0 0 8 37
463 d:\Projects\C\cleonos\limine\common\lib\libc.s2.c C 0 0 0 122 0 0 0 0 0 0 0 0 0 0 0 0 0 2 26 150
464 d:\Projects\C\cleonos\limine\common\lib\macros.aarch64_asm.h C++ 0 0 0 0 0 0 44 0 0 0 0 0 0 0 0 0 0 4 5 53
465 d:\Projects\C\cleonos\limine\common\lib\memory.s2.c C 0 0 0 41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 54
466 d:\Projects\C\cleonos\limine\common\lib\misc.c C 0 0 0 322 0 0 0 0 0 0 0 0 0 0 0 0 0 8 90 420
467 d:\Projects\C\cleonos\limine\common\lib\misc.h C++ 0 0 0 0 0 0 122 0 0 0 0 0 0 0 0 0 0 0 32 154
468 d:\Projects\C\cleonos\limine\common\lib\misc.s2.c C 0 0 0 117 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 129
469 d:\Projects\C\cleonos\limine\common\lib\panic.s2.c C 0 0 0 70 0 0 0 0 0 0 0 0 0 0 0 0 0 8 12 90
470 d:\Projects\C\cleonos\limine\common\lib\part.h C++ 0 0 0 0 0 0 86 0 0 0 0 0 0 0 0 0 0 2 23 111
471 d:\Projects\C\cleonos\limine\common\lib\part.s2.c C 0 0 0 464 0 0 0 0 0 0 0 0 0 0 0 0 0 31 121 616
472 d:\Projects\C\cleonos\limine\common\lib\pe.c C 0 0 0 398 0 0 0 0 0 0 0 0 0 0 0 0 0 5 98 501
473 d:\Projects\C\cleonos\limine\common\lib\pe.h C++ 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 5 13
474 d:\Projects\C\cleonos\limine\common\lib\print.h C++ 0 0 0 0 0 0 11 0 0 0 0 0 0 0 0 0 0 0 6 17
475 d:\Projects\C\cleonos\limine\common\lib\print.s2.c C 0 0 0 200 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36 236
476 d:\Projects\C\cleonos\limine\common\lib\rand.c C 0 0 0 112 0 0 0 0 0 0 0 0 0 0 0 0 0 5 25 142
477 d:\Projects\C\cleonos\limine\common\lib\rand.h C++ 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 5 12
478 d:\Projects\C\cleonos\limine\common\lib\real.h C++ 0 0 0 0 0 0 26 0 0 0 0 0 0 0 0 0 0 0 9 35
479 d:\Projects\C\cleonos\limine\common\lib\stb_image.c C 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 7
480 d:\Projects\C\cleonos\limine\common\lib\term.c C 0 0 0 266 0 0 0 0 0 0 0 0 0 0 0 0 0 5 49 320
481 d:\Projects\C\cleonos\limine\common\lib\term.h C++ 0 0 0 0 0 0 47 0 0 0 0 0 0 0 0 0 0 0 13 60
482 d:\Projects\C\cleonos\limine\common\lib\time.c C 0 0 0 59 0 0 0 0 0 0 0 0 0 0 0 0 0 2 15 76
483 d:\Projects\C\cleonos\limine\common\lib\time.h C++ 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 4 9
484 d:\Projects\C\cleonos\limine\common\lib\trace.h C++ 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 4 9
485 d:\Projects\C\cleonos\limine\common\lib\trace.s2.c C 0 0 0 79 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 88
486 d:\Projects\C\cleonos\limine\common\lib\uri.c C 0 0 0 224 0 0 0 0 0 0 0 0 0 0 0 0 0 9 54 287
487 d:\Projects\C\cleonos\limine\common\lib\uri.h C++ 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 4 11
488 d:\Projects\C\cleonos\limine\common\libc-compat\stdlib.h C++ 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 3 7
489 d:\Projects\C\cleonos\limine\common\libc-compat\string.h C++ 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0 0 5 24
490 d:\Projects\C\cleonos\limine\common\menu.c C 0 0 0 1378 0 0 0 0 0 0 0 0 0 0 0 0 0 30 150 1558
491 d:\Projects\C\cleonos\limine\common\menu.h C++ 0 0 0 0 0 0 13 0 0 0 0 0 0 0 0 0 0 0 8 21
492 d:\Projects\C\cleonos\limine\common\mm\mtrr.c C 0 0 0 91 0 0 0 0 0 0 0 0 0 0 0 0 0 18 32 141
493 d:\Projects\C\cleonos\limine\common\mm\mtrr.h C++ 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 5 12
494 d:\Projects\C\cleonos\limine\common\mm\pmm.c C 0 0 0 70 0 0 0 0 0 0 0 0 0 0 0 0 0 3 16 89
495 d:\Projects\C\cleonos\limine\common\mm\pmm.h C++ 0 0 0 0 0 0 63 0 0 0 0 0 0 0 0 0 0 0 18 81
496 d:\Projects\C\cleonos\limine\common\mm\pmm.s2.c C 0 0 0 662 0 0 0 0 0 0 0 0 0 0 0 0 0 37 192 891
497 d:\Projects\C\cleonos\limine\common\mm\vmm.c C 0 0 0 416 0 0 0 0 0 0 0 0 0 0 0 0 0 30 110 556
498 d:\Projects\C\cleonos\limine\common\mm\vmm.h C++ 0 0 0 0 0 0 125 0 0 0 0 0 0 0 0 0 0 6 45 176
499 d:\Projects\C\cleonos\limine\common\protos\chainload.c C 0 0 0 283 0 0 0 0 0 0 0 0 0 0 0 0 0 7 78 368
500 d:\Projects\C\cleonos\limine\common\protos\chainload.h C++ 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 4 9
501 d:\Projects\C\cleonos\limine\common\protos\efi_boot_entry.c C 0 0 0 94 0 0 0 0 0 0 0 0 0 0 0 0 0 6 26 126
502 d:\Projects\C\cleonos\limine\common\protos\efi_boot_entry.h C++ 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 4 9
503 d:\Projects\C\cleonos\limine\common\protos\limine.c C 0 0 0 1523 0 0 0 0 0 0 0 0 0 0 0 0 0 80 331 1934
504 d:\Projects\C\cleonos\limine\common\protos\limine.h C++ 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 4 9
505 d:\Projects\C\cleonos\limine\common\protos\linux.h C++ 0 0 0 0 0 0 59 0 0 0 0 0 0 0 0 0 0 1 14 74
506 d:\Projects\C\cleonos\limine\common\protos\linux_risc.c C 0 0 0 412 0 0 0 0 0 0 0 0 0 0 0 0 0 22 99 533
507 d:\Projects\C\cleonos\limine\common\protos\linux_x86.c C 0 0 0 527 0 0 0 0 0 0 0 0 0 0 0 0 0 41 96 664
508 d:\Projects\C\cleonos\limine\common\protos\multiboot.h C++ 0 0 0 0 0 0 13 0 0 0 0 0 0 0 0 0 0 0 5 18
509 d:\Projects\C\cleonos\limine\common\protos\multiboot1.c C 0 0 0 394 0 0 0 0 0 0 0 0 0 0 0 0 0 14 105 513
510 d:\Projects\C\cleonos\limine\common\protos\multiboot1.h C++ 0 0 0 0 0 0 76 0 0 0 0 0 0 0 0 0 0 0 25 101
511 d:\Projects\C\cleonos\limine\common\protos\multiboot2.c C 0 0 0 782 0 0 0 0 0 0 0 0 0 0 0 0 0 77 182 1041
512 d:\Projects\C\cleonos\limine\common\protos\multiboot2.h C++ 0 0 0 0 0 0 331 0 0 0 0 0 0 0 0 0 0 30 58 419
513 d:\Projects\C\cleonos\limine\common\pxe\pxe.h C++ 0 0 0 0 0 0 96 0 0 0 0 0 0 0 0 0 0 0 16 112
514 d:\Projects\C\cleonos\limine\common\pxe\pxe.s2.c C 0 0 0 53 0 0 0 0 0 0 0 0 0 0 0 0 0 2 18 73
515 d:\Projects\C\cleonos\limine\common\pxe\tftp.h C++ 0 0 0 0 0 0 36 0 0 0 0 0 0 0 0 0 0 0 11 47
516 d:\Projects\C\cleonos\limine\common\pxe\tftp.s2.c C 0 0 0 211 0 0 0 0 0 0 0 0 0 0 0 0 0 5 52 268
517 d:\Projects\C\cleonos\limine\common\stb_image.patch Diff 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 74 0 7 10 91
518 d:\Projects\C\cleonos\limine\common\sys\a20.h C++ 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 4 10
519 d:\Projects\C\cleonos\limine\common\sys\a20.s2.c C 0 0 0 67 0 0 0 0 0 0 0 0 0 0 0 0 0 5 21 93
520 d:\Projects\C\cleonos\limine\common\sys\cpu.h C++ 0 0 0 0 0 0 429 0 0 0 0 0 0 0 0 0 0 2 82 513
521 d:\Projects\C\cleonos\limine\common\sys\cpu.s2.c C 0 0 0 58 0 0 0 0 0 0 0 0 0 0 0 0 0 6 14 78
522 d:\Projects\C\cleonos\limine\common\sys\cpu_riscv.c C 0 0 0 353 0 0 0 0 0 0 0 0 0 0 0 0 0 10 65 428
523 d:\Projects\C\cleonos\limine\common\sys\e820.h C++ 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 5 14
524 d:\Projects\C\cleonos\limine\common\sys\e820.s2.c C 0 0 0 33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 45
525 d:\Projects\C\cleonos\limine\common\sys\exceptions.s2.c C 0 0 0 46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 51
526 d:\Projects\C\cleonos\limine\common\sys\gdt.h C++ 0 0 0 0 0 0 23 0 0 0 0 0 0 0 0 0 0 0 7 30
527 d:\Projects\C\cleonos\limine\common\sys\gdt.s2.c C 0 0 0 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 96
528 d:\Projects\C\cleonos\limine\common\sys\idt.c C 0 0 0 53 0 0 0 0 0 0 0 0 0 0 0 0 0 3 16 72
529 d:\Projects\C\cleonos\limine\common\sys\idt.h C++ 0 0 0 0 0 0 43 0 0 0 0 0 0 0 0 0 0 0 17 60
530 d:\Projects\C\cleonos\limine\common\sys\idt.s2.c C 0 0 0 26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 36
531 d:\Projects\C\cleonos\limine\common\sys\iommu.c C 0 0 0 94 0 0 0 0 0 0 0 0 0 0 0 0 0 21 30 145
532 d:\Projects\C\cleonos\limine\common\sys\iommu.h C++ 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 3 7
533 d:\Projects\C\cleonos\limine\common\sys\lapic.c C 0 0 0 420 0 0 0 0 0 0 0 0 0 0 0 0 0 23 69 512
534 d:\Projects\C\cleonos\limine\common\sys\lapic.h C++ 0 0 0 0 0 0 30 0 0 0 0 0 0 0 0 0 0 0 9 39
535 d:\Projects\C\cleonos\limine\common\sys\pic.c C 0 0 0 37 0 0 0 0 0 0 0 0 0 0 0 0 0 1 11 49
536 d:\Projects\C\cleonos\limine\common\sys\pic.h C++ 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 4 12
537 d:\Projects\C\cleonos\limine\common\sys\sbi.h C++ 0 0 0 0 0 0 25 0 0 0 0 0 0 0 0 0 0 0 8 33
538 d:\Projects\C\cleonos\limine\common\sys\smp.c C 0 0 0 917 0 0 0 0 0 0 0 0 0 0 0 0 0 54 259 1230
539 d:\Projects\C\cleonos\limine\common\sys\smp.h C++ 0 0 0 0 0 0 38 0 0 0 0 0 0 0 0 0 0 0 13 51
540 d:\Projects\C\cleonos\limine\decompressor\decompressor.mk Makefile 0 0 0 0 0 0 0 70 0 0 0 0 0 0 0 0 0 0 15 85
541 d:\Projects\C\cleonos\limine\decompressor\main.c C 0 0 0 31 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 38
542 d:\Projects\C\cleonos\limine\decompressor\memory.c C 0 0 0 41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 54
543 d:\Projects\C\cleonos\limine\decompressor\tinf.patch Diff 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42 0 3 10 55
544 d:\Projects\C\cleonos\limine\host\hgen.sh Shell Script 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 0 0 1 6 17
545 d:\Projects\C\cleonos\limine\host\host.mk Makefile 0 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 6 20
546 d:\Projects\C\cleonos\limine\host\limine.c C 0 0 0 1192 0 0 0 0 0 0 0 0 0 0 0 0 0 32 225 1449
547 d:\Projects\C\cleonos\limine\test.mk Makefile 0 0 0 0 0 0 0 263 0 0 0 0 0 0 0 0 0 0 16 279
548 d:\Projects\C\cleonos\limine\test\e9print.c C 0 0 0 81 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18 99
549 d:\Projects\C\cleonos\limine\test\e9print.h C++ 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 3 10
550 d:\Projects\C\cleonos\limine\test\limine.c C 0 0 0 624 0 0 0 0 0 0 0 0 0 0 0 0 0 0 82 706
551 d:\Projects\C\cleonos\limine\test\limine.conf Properties 0 0 0 0 0 0 0 0 0 0 40 0 0 0 0 0 0 1 19 60
552 d:\Projects\C\cleonos\limine\test\memory.c C 0 0 0 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 53
553 d:\Projects\C\cleonos\limine\test\multiboot.c C 0 0 0 57 0 0 0 0 0 0 0 0 0 0 0 0 0 12 24 93
554 d:\Projects\C\cleonos\limine\test\multiboot2.c C 0 0 0 141 0 0 0 0 0 0 0 0 0 0 0 0 0 5 36 182
555 d:\Projects\C\cleonos\limine\test\test.mk Makefile 0 0 0 0 0 0 0 143 0 0 0 0 0 0 0 0 0 0 21 164
556 d:\Projects\C\cleonos\limine\version.sh Shell Script 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 0 0 1 10 30
557 d:\Projects\C\cleonos\ramdisk\dev\random C++ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
558 d:\Projects\C\cleonos\ramdisk\shell\init.cmd Batch 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 2 6
559 d:\Projects\C\cleonos\scripts\gen-tty-psf.ps1 PowerShell 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 171 2 42 215
560 d:\Projects\C\cleonos\scripts\menuconfig.py Python 0 0 0 0 1608 0 0 0 0 0 0 0 0 0 0 0 0 24 304 1936
561 d:\Projects\C\cleonos\wine\README.md Markdown 0 0 53 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 72
562 d:\Projects\C\cleonos\wine\cleonos_wine.py Python 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 1 3 7
563 d:\Projects\C\cleonos\wine\cleonos_wine_lib\__init__.py Python 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5
564 d:\Projects\C\cleonos\wine\cleonos_wine_lib\cli.py Python 0 0 0 0 44 0 0 0 0 0 0 0 0 0 0 0 0 0 10 54
565 d:\Projects\C\cleonos\wine\cleonos_wine_lib\constants.py Python 0 0 0 0 112 0 0 0 0 0 0 0 0 0 0 0 0 4 14 130
566 d:\Projects\C\cleonos\wine\cleonos_wine_lib\input_pump.py Python 0 0 0 0 82 0 0 0 0 0 0 0 0 0 0 0 0 0 17 99
567 d:\Projects\C\cleonos\wine\cleonos_wine_lib\platform.py Python 0 0 0 0 55 0 0 0 0 0 0 0 0 0 0 0 0 0 5 60
568 d:\Projects\C\cleonos\wine\cleonos_wine_lib\runner.py Python 0 0 0 0 1459 0 0 0 0 0 0 0 0 0 0 0 0 0 266 1725
569 d:\Projects\C\cleonos\wine\cleonos_wine_lib\state.py Python 0 0 0 0 282 0 0 0 0 0 0 0 0 0 0 0 0 2 71 355
570 d:\Projects\C\cleonos\wine\requirements.txt pip requirements 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2
571 Total - 395 1 2390 88779 3649 1173 9135 1216 339 376 46 44 4 148 62 116 171 13937 27927 149908

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,112 @@
# Summary
Date : 2026-04-21 02:41:45
Directory d:\\Projects\\C\\cleonos
Total : 569 files, 108044 codes, 13937 comments, 27927 blanks, all 149908 lines
Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
## Languages
| language | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| C | 283 | 88,779 | 10,486 | 22,672 | 121,937 |
| C++ | 203 | 9,135 | 3,395 | 3,320 | 15,850 |
| Python | 9 | 3,649 | 31 | 691 | 4,371 |
| Markdown | 37 | 2,390 | 0 | 618 | 3,008 |
| Makefile | 7 | 1,216 | 7 | 211 | 1,434 |
| CMake | 6 | 1,173 | 0 | 172 | 1,345 |
| YAML | 8 | 395 | 1 | 89 | 485 |
| JSON | 1 | 376 | 0 | 1 | 377 |
| XML | 1 | 339 | 0 | 0 | 339 |
| PowerShell | 1 | 171 | 2 | 42 | 215 |
| Go Assembly | 2 | 148 | 0 | 20 | 168 |
| Diff | 2 | 116 | 10 | 20 | 146 |
| Shell Script | 3 | 62 | 4 | 33 | 99 |
| Properties | 2 | 46 | 1 | 20 | 67 |
| Rust | 2 | 44 | 0 | 15 | 59 |
| Batch | 1 | 4 | 0 | 2 | 6 |
| pip requirements | 1 | 1 | 0 | 1 | 2 |
## Directories
| path | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| . | 569 | 108,044 | 13,937 | 27,927 | 149,908 |
| . (Files) | 4 | 1,220 | 0 | 200 | 1,420 |
| .github | 2 | 185 | 1 | 30 | 216 |
| .github\\workflows | 2 | 185 | 1 | 30 | 216 |
| cleonos | 292 | 62,603 | 12,967 | 17,554 | 93,124 |
| cleonos\\c | 96 | 15,172 | 451 | 3,720 | 19,343 |
| cleonos\\c (Files) | 1 | 3 | 4 | 2 | 9 |
| cleonos\\c\\apps | 80 | 13,349 | 447 | 3,232 | 17,028 |
| cleonos\\c\\apps (Files) | 68 | 7,370 | 2 | 1,778 | 9,150 |
| cleonos\\c\\apps\\doom | 3 | 1,366 | 1 | 328 | 1,695 |
| cleonos\\c\\apps\\qrcode | 2 | 821 | 444 | 130 | 1,395 |
| cleonos\\c\\apps\\shell | 7 | 3,792 | 0 | 996 | 4,788 |
| cleonos\\c\\include | 8 | 326 | 0 | 47 | 373 |
| cleonos\\c\\src | 7 | 1,494 | 0 | 439 | 1,933 |
| cleonos\\rust | 1 | 23 | 0 | 9 | 32 |
| cleonos\\rust\\src | 1 | 23 | 0 | 9 | 32 |
| cleonos\\third-party | 195 | 47,408 | 12,516 | 13,825 | 73,749 |
| cleonos\\third-party\\doomgeneric | 195 | 47,408 | 12,516 | 13,825 | 73,749 |
| cleonos\\third-party\\doomgeneric (Files) | 1 | 51 | 0 | 17 | 68 |
| cleonos\\third-party\\doomgeneric\\doomgeneric | 194 | 47,357 | 12,516 | 13,808 | 73,681 |
| clks | 69 | 12,762 | 4 | 3,358 | 16,124 |
| clks\\arch | 4 | 160 | 0 | 22 | 182 |
| clks\\arch\\aarch64 | 1 | 6 | 0 | 1 | 7 |
| clks\\arch\\aarch64\\startup | 1 | 6 | 0 | 1 | 7 |
| clks\\arch\\x86_64 | 3 | 154 | 0 | 21 | 175 |
| clks\\arch\\x86_64\\interrupt | 1 | 108 | 0 | 12 | 120 |
| clks\\arch\\x86_64\\startup | 2 | 46 | 0 | 9 | 55 |
| clks\\include | 32 | 718 | 0 | 178 | 896 |
| clks\\include\\clks | 32 | 718 | 0 | 178 | 896 |
| clks\\kernel | 32 | 11,863 | 4 | 3,152 | 15,019 |
| clks\\kernel\\boot | 1 | 76 | 0 | 26 | 102 |
| clks\\kernel\\boot\\limine | 1 | 76 | 0 | 26 | 102 |
| clks\\kernel\\core | 6 | 1,644 | 1 | 401 | 2,046 |
| clks\\kernel\\hal | 7 | 667 | 0 | 182 | 849 |
| clks\\kernel\\hal\\audio | 1 | 101 | 0 | 25 | 126 |
| clks\\kernel\\hal\\serial | 1 | 51 | 0 | 16 | 67 |
| clks\\kernel\\hal\\video | 5 | 515 | 0 | 141 | 656 |
| clks\\kernel\\input | 2 | 613 | 0 | 158 | 771 |
| clks\\kernel\\interface | 3 | 2,690 | 0 | 690 | 3,380 |
| clks\\kernel\\memory | 2 | 219 | 0 | 67 | 286 |
| clks\\kernel\\runtime | 7 | 5,019 | 3 | 1,333 | 6,355 |
| clks\\kernel\\storage | 2 | 856 | 0 | 272 | 1,128 |
| clks\\kernel\\support | 2 | 79 | 0 | 23 | 102 |
| clks\\rust | 1 | 21 | 0 | 6 | 27 |
| clks\\rust\\src | 1 | 21 | 0 | 6 | 27 |
| cmake | 5 | 267 | 0 | 64 | 331 |
| configs | 2 | 382 | 0 | 2 | 384 |
| configs (Files) | 1 | 6 | 0 | 1 | 7 |
| configs\\menuconfig | 1 | 376 | 0 | 1 | 377 |
| docs | 27 | 1,511 | 0 | 365 | 1,876 |
| limine | 154 | 25,236 | 932 | 5,598 | 31,766 |
| limine (Files) | 8 | 873 | 1 | 175 | 1,049 |
| limine\\.github | 6 | 210 | 0 | 59 | 269 |
| limine\\.github (Files) | 1 | 7 | 0 | 1 | 8 |
| limine\\.github\\workflows | 5 | 203 | 0 | 58 | 261 |
| limine\\common | 125 | 21,620 | 875 | 4,868 | 27,363 |
| limine\\common (Files) | 7 | 2,368 | 40 | 375 | 2,783 |
| limine\\common\\crypt | 2 | 185 | 3 | 44 | 232 |
| limine\\common\\drivers | 12 | 1,763 | 50 | 460 | 2,273 |
| limine\\common\\fs | 6 | 1,200 | 77 | 243 | 1,520 |
| limine\\common\\lib | 49 | 6,940 | 201 | 1,515 | 8,656 |
| limine\\common\\libc-compat | 2 | 23 | 0 | 8 | 31 |
| limine\\common\\mm | 7 | 1,434 | 94 | 418 | 1,946 |
| limine\\common\\protos | 14 | 4,509 | 278 | 1,031 | 5,818 |
| limine\\common\\pxe | 4 | 396 | 7 | 97 | 500 |
| limine\\common\\sys | 22 | 2,802 | 125 | 677 | 3,604 |
| limine\\decompressor | 4 | 184 | 5 | 43 | 232 |
| limine\\host | 3 | 1,216 | 33 | 237 | 1,486 |
| limine\\test | 8 | 1,133 | 18 | 216 | 1,367 |
| ramdisk | 2 | 4 | 0 | 3 | 7 |
| ramdisk\\dev | 1 | 0 | 0 | 1 | 1 |
| ramdisk\\shell | 1 | 4 | 0 | 2 | 6 |
| scripts | 2 | 1,779 | 26 | 346 | 2,151 |
| wine | 10 | 2,095 | 7 | 407 | 2,509 |
| wine (Files) | 3 | 57 | 1 | 23 | 81 |
| wine\\cleonos_wine_lib | 7 | 2,038 | 6 | 384 | 2,428 |
Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)

View File

@@ -0,0 +1,684 @@
Date : 2026-04-21 02:41:45
Directory : d:\Projects\C\cleonos
Total : 569 files, 108044 codes, 13937 comments, 27927 blanks, all 149908 lines
Languages
+------------------+------------+------------+------------+------------+------------+
| language | files | code | comment | blank | total |
+------------------+------------+------------+------------+------------+------------+
| C | 283 | 88,779 | 10,486 | 22,672 | 121,937 |
| C++ | 203 | 9,135 | 3,395 | 3,320 | 15,850 |
| Python | 9 | 3,649 | 31 | 691 | 4,371 |
| Markdown | 37 | 2,390 | 0 | 618 | 3,008 |
| Makefile | 7 | 1,216 | 7 | 211 | 1,434 |
| CMake | 6 | 1,173 | 0 | 172 | 1,345 |
| YAML | 8 | 395 | 1 | 89 | 485 |
| JSON | 1 | 376 | 0 | 1 | 377 |
| XML | 1 | 339 | 0 | 0 | 339 |
| PowerShell | 1 | 171 | 2 | 42 | 215 |
| Go Assembly | 2 | 148 | 0 | 20 | 168 |
| Diff | 2 | 116 | 10 | 20 | 146 |
| Shell Script | 3 | 62 | 4 | 33 | 99 |
| Properties | 2 | 46 | 1 | 20 | 67 |
| Rust | 2 | 44 | 0 | 15 | 59 |
| Batch | 1 | 4 | 0 | 2 | 6 |
| pip requirements | 1 | 1 | 0 | 1 | 2 |
+------------------+------------+------------+------------+------------+------------+
Directories
+--------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| path | files | code | comment | blank | total |
+--------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| . | 569 | 108,044 | 13,937 | 27,927 | 149,908 |
| . (Files) | 4 | 1,220 | 0 | 200 | 1,420 |
| .github | 2 | 185 | 1 | 30 | 216 |
| .github\workflows | 2 | 185 | 1 | 30 | 216 |
| cleonos | 292 | 62,603 | 12,967 | 17,554 | 93,124 |
| cleonos\c | 96 | 15,172 | 451 | 3,720 | 19,343 |
| cleonos\c (Files) | 1 | 3 | 4 | 2 | 9 |
| cleonos\c\apps | 80 | 13,349 | 447 | 3,232 | 17,028 |
| cleonos\c\apps (Files) | 68 | 7,370 | 2 | 1,778 | 9,150 |
| cleonos\c\apps\doom | 3 | 1,366 | 1 | 328 | 1,695 |
| cleonos\c\apps\qrcode | 2 | 821 | 444 | 130 | 1,395 |
| cleonos\c\apps\shell | 7 | 3,792 | 0 | 996 | 4,788 |
| cleonos\c\include | 8 | 326 | 0 | 47 | 373 |
| cleonos\c\src | 7 | 1,494 | 0 | 439 | 1,933 |
| cleonos\rust | 1 | 23 | 0 | 9 | 32 |
| cleonos\rust\src | 1 | 23 | 0 | 9 | 32 |
| cleonos\third-party | 195 | 47,408 | 12,516 | 13,825 | 73,749 |
| cleonos\third-party\doomgeneric | 195 | 47,408 | 12,516 | 13,825 | 73,749 |
| cleonos\third-party\doomgeneric (Files) | 1 | 51 | 0 | 17 | 68 |
| cleonos\third-party\doomgeneric\doomgeneric | 194 | 47,357 | 12,516 | 13,808 | 73,681 |
| clks | 69 | 12,762 | 4 | 3,358 | 16,124 |
| clks\arch | 4 | 160 | 0 | 22 | 182 |
| clks\arch\aarch64 | 1 | 6 | 0 | 1 | 7 |
| clks\arch\aarch64\startup | 1 | 6 | 0 | 1 | 7 |
| clks\arch\x86_64 | 3 | 154 | 0 | 21 | 175 |
| clks\arch\x86_64\interrupt | 1 | 108 | 0 | 12 | 120 |
| clks\arch\x86_64\startup | 2 | 46 | 0 | 9 | 55 |
| clks\include | 32 | 718 | 0 | 178 | 896 |
| clks\include\clks | 32 | 718 | 0 | 178 | 896 |
| clks\kernel | 32 | 11,863 | 4 | 3,152 | 15,019 |
| clks\kernel\boot | 1 | 76 | 0 | 26 | 102 |
| clks\kernel\boot\limine | 1 | 76 | 0 | 26 | 102 |
| clks\kernel\core | 6 | 1,644 | 1 | 401 | 2,046 |
| clks\kernel\hal | 7 | 667 | 0 | 182 | 849 |
| clks\kernel\hal\audio | 1 | 101 | 0 | 25 | 126 |
| clks\kernel\hal\serial | 1 | 51 | 0 | 16 | 67 |
| clks\kernel\hal\video | 5 | 515 | 0 | 141 | 656 |
| clks\kernel\input | 2 | 613 | 0 | 158 | 771 |
| clks\kernel\interface | 3 | 2,690 | 0 | 690 | 3,380 |
| clks\kernel\memory | 2 | 219 | 0 | 67 | 286 |
| clks\kernel\runtime | 7 | 5,019 | 3 | 1,333 | 6,355 |
| clks\kernel\storage | 2 | 856 | 0 | 272 | 1,128 |
| clks\kernel\support | 2 | 79 | 0 | 23 | 102 |
| clks\rust | 1 | 21 | 0 | 6 | 27 |
| clks\rust\src | 1 | 21 | 0 | 6 | 27 |
| cmake | 5 | 267 | 0 | 64 | 331 |
| configs | 2 | 382 | 0 | 2 | 384 |
| configs (Files) | 1 | 6 | 0 | 1 | 7 |
| configs\menuconfig | 1 | 376 | 0 | 1 | 377 |
| docs | 27 | 1,511 | 0 | 365 | 1,876 |
| limine | 154 | 25,236 | 932 | 5,598 | 31,766 |
| limine (Files) | 8 | 873 | 1 | 175 | 1,049 |
| limine\.github | 6 | 210 | 0 | 59 | 269 |
| limine\.github (Files) | 1 | 7 | 0 | 1 | 8 |
| limine\.github\workflows | 5 | 203 | 0 | 58 | 261 |
| limine\common | 125 | 21,620 | 875 | 4,868 | 27,363 |
| limine\common (Files) | 7 | 2,368 | 40 | 375 | 2,783 |
| limine\common\crypt | 2 | 185 | 3 | 44 | 232 |
| limine\common\drivers | 12 | 1,763 | 50 | 460 | 2,273 |
| limine\common\fs | 6 | 1,200 | 77 | 243 | 1,520 |
| limine\common\lib | 49 | 6,940 | 201 | 1,515 | 8,656 |
| limine\common\libc-compat | 2 | 23 | 0 | 8 | 31 |
| limine\common\mm | 7 | 1,434 | 94 | 418 | 1,946 |
| limine\common\protos | 14 | 4,509 | 278 | 1,031 | 5,818 |
| limine\common\pxe | 4 | 396 | 7 | 97 | 500 |
| limine\common\sys | 22 | 2,802 | 125 | 677 | 3,604 |
| limine\decompressor | 4 | 184 | 5 | 43 | 232 |
| limine\host | 3 | 1,216 | 33 | 237 | 1,486 |
| limine\test | 8 | 1,133 | 18 | 216 | 1,367 |
| ramdisk | 2 | 4 | 0 | 3 | 7 |
| ramdisk\dev | 1 | 0 | 0 | 1 | 1 |
| ramdisk\shell | 1 | 4 | 0 | 2 | 6 |
| scripts | 2 | 1,779 | 26 | 346 | 2,151 |
| wine | 10 | 2,095 | 7 | 407 | 2,509 |
| wine (Files) | 3 | 57 | 1 | 23 | 81 |
| wine\cleonos_wine_lib | 7 | 2,038 | 6 | 384 | 2,428 |
+--------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
Files
+--------------------------------------------------------------------------------------------+------------------+------------+------------+------------+------------+
| filename | language | code | comment | blank | total |
+--------------------------------------------------------------------------------------------+------------------+------------+------------+------------+------------+
| d:\Projects\C\cleonos\.github\workflows\build-os.yml | YAML | 76 | 1 | 11 | 88 |
| d:\Projects\C\cleonos\.github\workflows\style-check.yml | YAML | 109 | 0 | 19 | 128 |
| d:\Projects\C\cleonos\CMakeLists.txt | CMake | 906 | 0 | 108 | 1,014 |
| d:\Projects\C\cleonos\Makefile | Makefile | 130 | 0 | 24 | 154 |
| d:\Projects\C\cleonos\README.md | Markdown | 92 | 0 | 34 | 126 |
| d:\Projects\C\cleonos\README.zh-CN.md | Markdown | 92 | 0 | 34 | 126 |
| d:\Projects\C\cleonos\cleonos\c\apps\ansi_main.c | C | 45 | 0 | 9 | 54 |
| d:\Projects\C\cleonos\cleonos\c\apps\ansitest_main.c | C | 145 | 0 | 33 | 178 |
| d:\Projects\C\cleonos\cleonos\c\apps\append_main.c | C | 74 | 0 | 16 | 90 |
| d:\Projects\C\cleonos\cleonos\c\apps\args_main.c | C | 49 | 0 | 13 | 62 |
| d:\Projects\C\cleonos\cleonos\c\apps\bg_main.c | C | 101 | 0 | 26 | 127 |
| d:\Projects\C\cleonos\cleonos\c\apps\bmpview_main.c | C | 331 | 0 | 81 | 412 |
| d:\Projects\C\cleonos\cleonos\c\apps\cat_main.c | C | 87 | 0 | 20 | 107 |
| d:\Projects\C\cleonos\cleonos\c\apps\cd_main.c | C | 54 | 0 | 13 | 67 |
| d:\Projects\C\cleonos\cleonos\c\apps\clear_main.c | C | 39 | 0 | 9 | 48 |
| d:\Projects\C\cleonos\cleonos\c\apps\cmd_runtime.c | C | 459 | 0 | 139 | 598 |
| d:\Projects\C\cleonos\cleonos\c\apps\cmd_runtime.h | C++ | 80 | 0 | 19 | 99 |
| d:\Projects\C\cleonos\cleonos\c\apps\cp_main.c | C | 109 | 0 | 23 | 132 |
| d:\Projects\C\cleonos\cleonos\c\apps\cut_main.c | C | 210 | 1 | 54 | 265 |
| d:\Projects\C\cleonos\cleonos\c\apps\dltest_main.c | C | 38 | 0 | 11 | 49 |
| d:\Projects\C\cleonos\cleonos\c\apps\dmesg_main.c | C | 64 | 0 | 16 | 80 |
| d:\Projects\C\cleonos\cleonos\c\apps\doom\doom_compat.c | C | 1,196 | 0 | 277 | 1,473 |
| d:\Projects\C\cleonos\cleonos\c\apps\doom\doom_shim.h | C++ | 17 | 1 | 3 | 21 |
| d:\Projects\C\cleonos\cleonos\c\apps\doom\doomgeneric_clks.c | C | 153 | 0 | 48 | 201 |
| d:\Projects\C\cleonos\cleonos\c\apps\doom_main.c | C | 66 | 0 | 16 | 82 |
| d:\Projects\C\cleonos\cleonos\c\apps\elfrunner_kmain.c | C | 6 | 0 | 3 | 9 |
| d:\Projects\C\cleonos\cleonos\c\apps\elfrunner_main.c | C | 6 | 0 | 3 | 9 |
| d:\Projects\C\cleonos\cleonos\c\apps\exec_main.c | C | 87 | 0 | 20 | 107 |
| d:\Projects\C\cleonos\cleonos\c\apps\exit_main.c | C | 54 | 0 | 12 | 66 |
| d:\Projects\C\cleonos\cleonos\c\apps\fastfetch_main.c | C | 180 | 0 | 32 | 212 |
| d:\Projects\C\cleonos\cleonos\c\apps\fg_main.c | C | 149 | 0 | 36 | 185 |
| d:\Projects\C\cleonos\cleonos\c\apps\fsstat_main.c | C | 46 | 0 | 9 | 55 |
| d:\Projects\C\cleonos\cleonos\c\apps\grep_main.c | C | 196 | 0 | 53 | 249 |
| d:\Projects\C\cleonos\cleonos\c\apps\head_main.c | C | 165 | 0 | 46 | 211 |
| d:\Projects\C\cleonos\cleonos\c\apps\hello_main.c | C | 5 | 0 | 2 | 7 |
| d:\Projects\C\cleonos\cleonos\c\apps\help_main.c | C | 83 | 0 | 9 | 92 |
| d:\Projects\C\cleonos\cleonos\c\apps\jobs_main.c | C | 120 | 0 | 26 | 146 |
| d:\Projects\C\cleonos\cleonos\c\apps\kbdstat_main.c | C | 44 | 0 | 9 | 53 |
| d:\Projects\C\cleonos\cleonos\c\apps\kdbg_main.c | C | 213 | 0 | 56 | 269 |
| d:\Projects\C\cleonos\cleonos\c\apps\kill_main.c | C | 144 | 0 | 39 | 183 |
| d:\Projects\C\cleonos\cleonos\c\apps\libctest_main.c | C | 219 | 0 | 39 | 258 |
| d:\Projects\C\cleonos\cleonos\c\apps\libdemo_main.c | C | 19 | 0 | 6 | 25 |
| d:\Projects\C\cleonos\cleonos\c\apps\ls_main.c | C | 266 | 0 | 79 | 345 |
| d:\Projects\C\cleonos\cleonos\c\apps\memc_kmain.c | C | 6 | 0 | 3 | 9 |
| d:\Projects\C\cleonos\cleonos\c\apps\memc_main.c | C | 8 | 0 | 3 | 11 |
| d:\Projects\C\cleonos\cleonos\c\apps\memstat_main.c | C | 43 | 0 | 9 | 52 |
| d:\Projects\C\cleonos\cleonos\c\apps\mkdir_main.c | C | 57 | 0 | 14 | 71 |
| d:\Projects\C\cleonos\cleonos\c\apps\mv_main.c | C | 102 | 0 | 26 | 128 |
| d:\Projects\C\cleonos\cleonos\c\apps\pid_main.c | C | 39 | 0 | 9 | 48 |
| d:\Projects\C\cleonos\cleonos\c\apps\procstat_main.c | C | 202 | 0 | 43 | 245 |
| d:\Projects\C\cleonos\cleonos\c\apps\ps_main.c | C | 160 | 0 | 35 | 195 |
| d:\Projects\C\cleonos\cleonos\c\apps\pwd_main.c | C | 39 | 0 | 9 | 48 |
| d:\Projects\C\cleonos\cleonos\c\apps\qrcode\qrcodegen.c | C | 759 | 176 | 96 | 1,031 |
| d:\Projects\C\cleonos\cleonos\c\apps\qrcode\qrcodegen.h | C++ | 62 | 268 | 34 | 364 |
| d:\Projects\C\cleonos\cleonos\c\apps\qrcode_main.c | C | 207 | 1 | 58 | 266 |
| d:\Projects\C\cleonos\cleonos\c\apps\restart_main.c | C | 40 | 0 | 9 | 49 |
| d:\Projects\C\cleonos\cleonos\c\apps\rm_main.c | C | 57 | 0 | 14 | 71 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_cmd.c | C | 2,499 | 0 | 633 | 3,132 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_external.c | C | 174 | 0 | 57 | 231 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_input.c | C | 567 | 0 | 148 | 715 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_internal.h | C++ | 100 | 0 | 19 | 119 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_path.c | C | 154 | 0 | 50 | 204 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_script.c | C | 35 | 0 | 12 | 47 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell\shell_util.c | C | 263 | 0 | 77 | 340 |
| d:\Projects\C\cleonos\cleonos\c\apps\shell_main.c | C | 18 | 0 | 6 | 24 |
| d:\Projects\C\cleonos\cleonos\c\apps\shstat_main.c | C | 45 | 0 | 9 | 54 |
| d:\Projects\C\cleonos\cleonos\c\apps\shutdown_main.c | C | 40 | 0 | 9 | 49 |
| d:\Projects\C\cleonos\cleonos\c\apps\sleep_main.c | C | 52 | 0 | 12 | 64 |
| d:\Projects\C\cleonos\cleonos\c\apps\sort_main.c | C | 206 | 0 | 62 | 268 |
| d:\Projects\C\cleonos\cleonos\c\apps\spawn_main.c | C | 76 | 0 | 18 | 94 |
| d:\Projects\C\cleonos\cleonos\c\apps\spin_main.c | C | 12 | 0 | 4 | 16 |
| d:\Projects\C\cleonos\cleonos\c\apps\stats_main.c | C | 103 | 0 | 15 | 118 |
| d:\Projects\C\cleonos\cleonos\c\apps\sysstat_main.c | C | 341 | 0 | 45 | 386 |
| d:\Projects\C\cleonos\cleonos\c\apps\tail_main.c | C | 191 | 0 | 53 | 244 |
| d:\Projects\C\cleonos\cleonos\c\apps\taskstat_main.c | C | 43 | 0 | 9 | 52 |
| d:\Projects\C\cleonos\cleonos\c\apps\top_main.c | C | 193 | 0 | 45 | 238 |
| d:\Projects\C\cleonos\cleonos\c\apps\touch_main.c | C | 58 | 0 | 14 | 72 |
| d:\Projects\C\cleonos\cleonos\c\apps\tty_main.c | C | 64 | 0 | 15 | 79 |
| d:\Projects\C\cleonos\cleonos\c\apps\ttydrv_main.c | C | 6 | 0 | 3 | 9 |
| d:\Projects\C\cleonos\cleonos\c\apps\uniq_main.c | C | 168 | 0 | 47 | 215 |
| d:\Projects\C\cleonos\cleonos\c\apps\userstat_main.c | C | 48 | 0 | 9 | 57 |
| d:\Projects\C\cleonos\cleonos\c\apps\wait_main.c | C | 68 | 0 | 15 | 83 |
| d:\Projects\C\cleonos\cleonos\c\apps\wavplay_main.c | C | 447 | 0 | 110 | 557 |
| d:\Projects\C\cleonos\cleonos\c\apps\wc_main.c | C | 165 | 0 | 44 | 209 |
| d:\Projects\C\cleonos\cleonos\c\apps\write_main.c | C | 74 | 0 | 16 | 90 |
| d:\Projects\C\cleonos\cleonos\c\apps\yield_main.c | C | 39 | 0 | 9 | 48 |
| d:\Projects\C\cleonos\cleonos\c\include\cleonos_rust_bridge.h | C++ | 6 | 0 | 4 | 10 |
| d:\Projects\C\cleonos\cleonos\c\include\cleonos_stdio.h | C++ | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\cleonos\c\include\cleonos_syscall.h | C++ | 223 | 0 | 12 | 235 |
| d:\Projects\C\cleonos\cleonos\c\include\ctype.h | C++ | 14 | 0 | 3 | 17 |
| d:\Projects\C\cleonos\cleonos\c\include\dlfcn.h | C++ | 6 | 0 | 3 | 9 |
| d:\Projects\C\cleonos\cleonos\c\include\stdio.h | C++ | 21 | 0 | 7 | 28 |
| d:\Projects\C\cleonos\cleonos\c\include\stdlib.h | C++ | 27 | 0 | 10 | 37 |
| d:\Projects\C\cleonos\cleonos\c\include\string.h | C++ | 25 | 0 | 5 | 30 |
| d:\Projects\C\cleonos\cleonos\c\src\dlfcn.c | C | 33 | 0 | 16 | 49 |
| d:\Projects\C\cleonos\cleonos\c\src\libc_ctype.c | C | 34 | 0 | 12 | 46 |
| d:\Projects\C\cleonos\cleonos\c\src\libc_stdlib.c | C | 198 | 0 | 57 | 255 |
| d:\Projects\C\cleonos\cleonos\c\src\libc_string.c | C | 340 | 0 | 106 | 446 |
| d:\Projects\C\cleonos\cleonos\c\src\runtime.c | C | 41 | 0 | 13 | 54 |
| d:\Projects\C\cleonos\cleonos\c\src\stdio.c | C | 570 | 0 | 143 | 713 |
| d:\Projects\C\cleonos\cleonos\c\src\syscall.c | C | 278 | 0 | 92 | 370 |
| d:\Projects\C\cleonos\cleonos\c\stub.c | C | 3 | 4 | 2 | 9 |
| d:\Projects\C\cleonos\cleonos\rust\src\lib.rs | Rust | 23 | 0 | 9 | 32 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\README.md | Markdown | 51 | 0 | 17 | 68 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\Makefile | Makefile | 34 | 7 | 14 | 55 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\am_map.c | C | 970 | 162 | 224 | 1,356 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\am_map.h | C++ | 13 | 24 | 13 | 50 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\config.h | C++ | 33 | 34 | 34 | 101 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_englsh.h | C++ | 522 | 65 | 107 | 694 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_event.c | C | 22 | 27 | 15 | 64 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_event.h | C++ | 43 | 66 | 29 | 138 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_items.c | C | 77 | 38 | 14 | 129 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_items.h | C++ | 14 | 18 | 10 | 42 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_iwad.c | C | 509 | 133 | 207 | 849 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_iwad.h | C++ | 28 | 16 | 9 | 53 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_loop.c | C | 464 | 169 | 194 | 827 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_loop.h | C++ | 23 | 34 | 25 | 82 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_main.c | C | 1,089 | 418 | 339 | 1,846 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_main.h | C++ | 11 | 24 | 16 | 51 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_mode.c | C | 150 | 28 | 32 | 210 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_mode.h | C++ | 58 | 24 | 17 | 99 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_net.c | C | 158 | 61 | 63 | 282 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_player.h | C++ | 82 | 77 | 51 | 210 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_textur.h | C++ | 10 | 22 | 12 | 44 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_think.h | C++ | 19 | 29 | 21 | 69 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\d_ticcmd.h | C++ | 17 | 26 | 14 | 57 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\deh_main.h | C++ | 19 | 19 | 11 | 49 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\deh_misc.h | C++ | 55 | 17 | 12 | 84 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\deh_str.h | C++ | 18 | 17 | 13 | 48 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doom.h | C++ | 4 | 27 | 12 | 43 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomdata.h | C++ | 93 | 70 | 51 | 214 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomdef.c | C | 1 | 20 | 8 | 29 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomdef.h | C++ | 86 | 48 | 35 | 169 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomfeatures.h | C++ | 6 | 22 | 13 | 41 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric.c | C | 15 | 1 | 12 | 28 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric.h | C++ | 31 | 1 | 18 | 50 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric.vcxproj | XML | 339 | 0 | 0 | 339 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_allegro.c | C | 319 | 16 | 119 | 454 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_emscripten.c | C | 184 | 5 | 31 | 220 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_linuxvt.c | C | 412 | 39 | 78 | 529 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_sdl.c | C | 173 | 9 | 29 | 211 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_soso.c | C | 217 | 6 | 54 | 277 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_sosox.c | C | 197 | 3 | 48 | 248 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_win.c | C | 171 | 2 | 37 | 210 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomgeneric_xlib.c | C | 161 | 7 | 46 | 214 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomkeys.h | C++ | 61 | 23 | 14 | 98 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomstat.c | C | 7 | 19 | 10 | 36 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomstat.h | C++ | 77 | 108 | 97 | 282 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\doomtype.h | C++ | 40 | 35 | 30 | 105 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\dstrings.c | C | 37 | 22 | 15 | 74 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\dstrings.h | C++ | 8 | 22 | 12 | 42 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\dummy.c | C | 8 | 30 | 16 | 54 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\f_finale.c | C | 528 | 77 | 114 | 719 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\f_finale.h | C++ | 9 | 23 | 14 | 46 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\f_wipe.c | C | 220 | 31 | 44 | 295 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\f_wipe.h | C++ | 29 | 22 | 13 | 64 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\g_game.c | C | 1,572 | 319 | 413 | 2,304 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\g_game.h | C++ | 29 | 28 | 24 | 81 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\gusconf.c | C | 190 | 24 | 58 | 272 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\gusconf.h | C++ | 7 | 16 | 7 | 30 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\hu_lib.c | C | 252 | 32 | 64 | 348 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\hu_lib.h | C++ | 77 | 59 | 47 | 183 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\hu_stuff.c | C | 493 | 51 | 98 | 642 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\hu_stuff.h | C++ | 21 | 23 | 16 | 60 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_allegromusic.c | C | 192 | 38 | 79 | 309 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_allegrosound.c | C | 255 | 73 | 106 | 434 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_cdmus.c | C | 159 | 31 | 54 | 244 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_cdmus.h | C++ | 20 | 15 | 7 | 42 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_endoom.c | C | 48 | 26 | 28 | 102 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_endoom.h | C++ | 4 | 19 | 7 | 30 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_input.c | C | 261 | 45 | 36 | 342 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_joystick.c | C | 254 | 38 | 68 | 360 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_joystick.h | C++ | 21 | 33 | 17 | 71 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_scale.c | C | 889 | 225 | 339 | 1,453 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_scale.h | C++ | 21 | 20 | 13 | 54 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_sdlmusic.c | C | 887 | 177 | 253 | 1,317 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_sdlsound.c | C | 616 | 195 | 266 | 1,077 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_sound.c | C | 284 | 62 | 75 | 421 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_sound.h | C++ | 104 | 71 | 82 | 257 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_swap.h | C++ | 34 | 18 | 22 | 74 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_system.c | C | 347 | 112 | 120 | 579 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_system.h | C++ | 19 | 37 | 29 | 85 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_timer.c | C | 36 | 32 | 29 | 97 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_timer.h | C++ | 9 | 23 | 11 | 43 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_video.c | C | 309 | 74 | 113 | 496 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\i_video.h | C++ | 63 | 65 | 48 | 176 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\icon.c | C | 260 | 0 | 3 | 263 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\info.c | C | 4,492 | 21 | 150 | 4,663 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\info.h | C++ | 1,296 | 21 | 15 | 1,332 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_argv.c | C | 150 | 52 | 64 | 266 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_argv.h | C++ | 11 | 26 | 13 | 50 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_bbox.c | C | 21 | 20 | 14 | 55 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_bbox.h | C++ | 18 | 19 | 11 | 48 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_cheat.c | C | 38 | 32 | 20 | 90 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_cheat.h | C++ | 24 | 23 | 16 | 63 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_config.c | C | 615 | 948 | 566 | 2,129 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_config.h | C++ | 16 | 17 | 7 | 40 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_controls.c | C | 269 | 57 | 73 | 399 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_controls.h | C++ | 121 | 17 | 31 | 169 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_fixed.c | C | 24 | 21 | 18 | 63 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_fixed.h | C++ | 8 | 20 | 12 | 40 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_menu.c | C | 1,502 | 250 | 374 | 2,126 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_menu.h | C++ | 11 | 33 | 18 | 62 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_misc.c | C | 335 | 87 | 115 | 537 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_misc.h | C++ | 27 | 17 | 8 | 52 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_random.c | C | 37 | 22 | 7 | 66 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\m_random.h | C++ | 7 | 21 | 12 | 40 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\memio.c | C | 122 | 27 | 49 | 198 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\memio.h | C++ | 18 | 14 | 7 | 39 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\mus2mid.c | C | 504 | 76 | 158 | 738 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\mus2mid.h | C++ | 6 | 0 | 3 | 9 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_client.h | C++ | 29 | 15 | 9 | 53 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_dedicated.h | C++ | 4 | 16 | 6 | 26 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_defs.h | C++ | 148 | 46 | 55 | 249 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_gui.h | C++ | 5 | 18 | 7 | 30 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_io.h | C++ | 14 | 16 | 7 | 37 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_loop.h | C++ | 6 | 16 | 6 | 28 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_packet.h | C++ | 18 | 16 | 11 | 45 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_query.h | C++ | 19 | 16 | 10 | 45 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_sdl.h | C++ | 5 | 16 | 6 | 27 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\net_server.h | C++ | 8 | 21 | 14 | 43 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_ceilng.c | C | 226 | 47 | 52 | 325 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_doors.c | C | 571 | 83 | 125 | 779 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_enemy.c | C | 1,341 | 238 | 428 | 2,007 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_floor.c | C | 429 | 54 | 64 | 547 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_inter.c | C | 643 | 115 | 165 | 923 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_inter.h | C++ | 4 | 17 | 10 | 31 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_lights.c | C | 201 | 72 | 78 | 351 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_local.h | C++ | 155 | 66 | 77 | 298 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_map.c | C | 828 | 304 | 317 | 1,449 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_maputl.c | C | 651 | 161 | 190 | 1,002 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_mobj.c | C | 654 | 184 | 212 | 1,050 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_mobj.h | C++ | 77 | 161 | 47 | 285 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_plats.c | C | 218 | 29 | 58 | 305 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_pspr.c | C | 537 | 173 | 179 | 889 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_pspr.h | C++ | 21 | 35 | 16 | 72 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_saveg.c | C | 975 | 435 | 482 | 1,892 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_saveg.h | C++ | 21 | 24 | 18 | 63 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_setup.c | C | 547 | 134 | 175 | 856 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_setup.h | C++ | 10 | 19 | 9 | 38 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_sight.c | C | 204 | 75 | 72 | 351 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_spec.c | C | 908 | 307 | 275 | 1,490 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_spec.h | C++ | 380 | 75 | 183 | 638 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_switch.c | C | 425 | 111 | 113 | 649 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_telept.c | C | 69 | 35 | 30 | 134 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_tick.c | C | 63 | 53 | 36 | 152 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_tick.h | C++ | 4 | 20 | 10 | 34 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\p_user.c | C | 219 | 73 | 88 | 380 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_bsp.c | C | 329 | 122 | 123 | 574 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_bsp.h | C++ | 23 | 19 | 20 | 62 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_data.c | C | 543 | 167 | 203 | 913 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_data.h | C++ | 14 | 25 | 13 | 52 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_defs.h | C++ | 164 | 155 | 130 | 449 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_draw.c | C | 554 | 216 | 206 | 976 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_draw.h | C++ | 40 | 33 | 32 | 105 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_local.h | C++ | 13 | 24 | 9 | 46 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_main.c | C | 556 | 155 | 181 | 892 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_main.h | C++ | 72 | 45 | 44 | 161 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_plane.c | C | 278 | 84 | 85 | 447 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_plane.h | C++ | 37 | 18 | 22 | 77 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_segs.c | C | 507 | 103 | 134 | 744 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_segs.h | C++ | 8 | 17 | 9 | 34 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_sky.c | C | 10 | 31 | 12 | 53 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_sky.h | C++ | 8 | 20 | 10 | 38 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_state.h | C++ | 49 | 36 | 43 | 128 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_things.c | C | 605 | 171 | 207 | 983 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\r_things.h | C++ | 28 | 20 | 18 | 66 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\s_sound.c | C | 431 | 108 | 132 | 671 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\s_sound.h | C++ | 20 | 42 | 28 | 90 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\sha1.c | C | 239 | 49 | 32 | 320 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\sha1.h | C++ | 17 | 16 | 8 | 41 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\sounds.c | C | 192 | 25 | 13 | 230 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\sounds.h | C++ | 191 | 26 | 11 | 228 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\st_lib.c | C | 186 | 35 | 64 | 285 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\st_lib.h | C++ | 91 | 60 | 59 | 210 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\st_stuff.c | C | 903 | 216 | 298 | 1,417 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\st_stuff.h | C++ | 36 | 31 | 23 | 90 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\statdump.c | C | 239 | 58 | 96 | 393 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\statdump.h | C++ | 5 | 15 | 4 | 24 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\tables.c | C | 2,173 | 37 | 18 | 2,228 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\tables.h | C++ | 26 | 44 | 27 | 97 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\v_patch.h | C++ | 17 | 25 | 9 | 51 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\v_video.c | C | 617 | 139 | 177 | 933 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\v_video.h | C++ | 34 | 40 | 35 | 109 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_checksum.c | C | 48 | 21 | 19 | 88 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_checksum.h | C++ | 5 | 17 | 6 | 28 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_file.c | C | 44 | 32 | 20 | 96 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_file.h | C++ | 23 | 31 | 25 | 79 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_file_stdc.c | C | 49 | 22 | 26 | 97 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_main.c | C | 87 | 66 | 46 | 199 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_main.h | C++ | 4 | 16 | 5 | 25 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_merge.h | C++ | 9 | 23 | 13 | 45 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_wad.c | C | 353 | 124 | 136 | 613 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\w_wad.h | C++ | 31 | 24 | 24 | 79 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\wi_stuff.c | C | 1,215 | 210 | 405 | 1,830 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\wi_stuff.h | C++ | 14 | 24 | 11 | 49 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\z_zone.c | C | 278 | 89 | 122 | 489 |
| d:\Projects\C\cleonos\cleonos\third-party\doomgeneric\doomgeneric\z_zone.h | C++ | 29 | 29 | 16 | 74 |
| d:\Projects\C\cleonos\clks\arch\aarch64\startup\boot.c | C | 6 | 0 | 1 | 7 |
| d:\Projects\C\cleonos\clks\arch\x86_64\interrupt\interrupt_stubs.S | Go Assembly | 108 | 0 | 12 | 120 |
| d:\Projects\C\cleonos\clks\arch\x86_64\startup\boot.c | C | 6 | 0 | 1 | 7 |
| d:\Projects\C\cleonos\clks\arch\x86_64\startup\exec_stack_call.S | Go Assembly | 40 | 0 | 8 | 48 |
| d:\Projects\C\cleonos\clks\include\clks\audio.h | C++ | 9 | 0 | 3 | 12 |
| d:\Projects\C\cleonos\clks\include\clks\boot.h | C++ | 11 | 0 | 4 | 15 |
| d:\Projects\C\cleonos\clks\include\clks\compiler.h | C++ | 13 | 0 | 4 | 17 |
| d:\Projects\C\cleonos\clks\include\clks\cpu.h | C++ | 20 | 0 | 4 | 24 |
| d:\Projects\C\cleonos\clks\include\clks\desktop.h | C++ | 7 | 0 | 4 | 11 |
| d:\Projects\C\cleonos\clks\include\clks\driver.h | C++ | 29 | 0 | 8 | 37 |
| d:\Projects\C\cleonos\clks\include\clks\elf64.h | C++ | 32 | 0 | 9 | 41 |
| d:\Projects\C\cleonos\clks\include\clks\elfrunner.h | C++ | 6 | 0 | 3 | 9 |
| d:\Projects\C\cleonos\clks\include\clks\exec.h | C++ | 73 | 0 | 8 | 81 |
| d:\Projects\C\cleonos\clks\include\clks\framebuffer.h | C++ | 26 | 0 | 6 | 32 |
| d:\Projects\C\cleonos\clks\include\clks\fs.h | C++ | 23 | 0 | 7 | 30 |
| d:\Projects\C\cleonos\clks\include\clks\heap.h | C++ | 15 | 0 | 4 | 19 |
| d:\Projects\C\cleonos\clks\include\clks\interrupts.h | C++ | 6 | 0 | 3 | 9 |
| d:\Projects\C\cleonos\clks\include\clks\kelf.h | C++ | 9 | 0 | 5 | 14 |
| d:\Projects\C\cleonos\clks\include\clks\kernel.h | C++ | 4 | 0 | 2 | 6 |
| d:\Projects\C\cleonos\clks\include\clks\keyboard.h | C++ | 27 | 0 | 5 | 32 |
| d:\Projects\C\cleonos\clks\include\clks\limine.h | C++ | 112 | 0 | 24 | 136 |
| d:\Projects\C\cleonos\clks\include\clks\log.h | C++ | 14 | 0 | 5 | 19 |
| d:\Projects\C\cleonos\clks\include\clks\mouse.h | C++ | 20 | 0 | 6 | 26 |
| d:\Projects\C\cleonos\clks\include\clks\panic.h | C++ | 7 | 0 | 4 | 11 |
| d:\Projects\C\cleonos\clks\include\clks\pmm.h | C++ | 16 | 0 | 5 | 21 |
| d:\Projects\C\cleonos\clks\include\clks\ramdisk.h | C++ | 17 | 0 | 8 | 25 |
| d:\Projects\C\cleonos\clks\include\clks\scheduler.h | C++ | 18 | 0 | 5 | 23 |
| d:\Projects\C\cleonos\clks\include\clks\serial.h | C++ | 6 | 0 | 2 | 8 |
| d:\Projects\C\cleonos\clks\include\clks\service.h | C++ | 31 | 0 | 8 | 39 |
| d:\Projects\C\cleonos\clks\include\clks\shell.h | C++ | 7 | 0 | 3 | 10 |
| d:\Projects\C\cleonos\clks\include\clks\string.h | C++ | 9 | 0 | 3 | 12 |
| d:\Projects\C\cleonos\clks\include\clks\syscall.h | C++ | 91 | 0 | 5 | 96 |
| d:\Projects\C\cleonos\clks\include\clks\task.h | C++ | 19 | 0 | 7 | 26 |
| d:\Projects\C\cleonos\clks\include\clks\tty.h | C++ | 15 | 0 | 4 | 19 |
| d:\Projects\C\cleonos\clks\include\clks\types.h | C++ | 14 | 0 | 6 | 20 |
| d:\Projects\C\cleonos\clks\include\clks\userland.h | C++ | 12 | 0 | 4 | 16 |
| d:\Projects\C\cleonos\clks\kernel\boot\limine\limine_requests.c | C | 76 | 0 | 26 | 102 |
| d:\Projects\C\cleonos\clks\kernel\core\interrupts.c | C | 307 | 0 | 43 | 350 |
| d:\Projects\C\cleonos\clks\kernel\core\kmain.c | C | 388 | 1 | 77 | 466 |
| d:\Projects\C\cleonos\clks\kernel\core\log.c | C | 179 | 0 | 48 | 227 |
| d:\Projects\C\cleonos\clks\kernel\core\panic.c | C | 527 | 0 | 155 | 682 |
| d:\Projects\C\cleonos\clks\kernel\core\scheduler.c | C | 136 | 0 | 44 | 180 |
| d:\Projects\C\cleonos\clks\kernel\core\service.c | C | 107 | 0 | 34 | 141 |
| d:\Projects\C\cleonos\clks\kernel\hal\audio\pcspeaker.c | C | 101 | 0 | 25 | 126 |
| d:\Projects\C\cleonos\clks\kernel\hal\serial\serial.c | C | 51 | 0 | 16 | 67 |
| d:\Projects\C\cleonos\clks\kernel\hal\video\font8x8.c | C | 45 | 0 | 8 | 53 |
| d:\Projects\C\cleonos\clks\kernel\hal\video\font8x8.h | C++ | 5 | 0 | 3 | 8 |
| d:\Projects\C\cleonos\clks\kernel\hal\video\framebuffer.c | C | 247 | 0 | 69 | 316 |
| d:\Projects\C\cleonos\clks\kernel\hal\video\psf_font.c | C | 203 | 0 | 56 | 259 |
| d:\Projects\C\cleonos\clks\kernel\hal\video\psf_font.h | C++ | 15 | 0 | 5 | 20 |
| d:\Projects\C\cleonos\clks\kernel\input\keyboard.c | C | 370 | 0 | 95 | 465 |
| d:\Projects\C\cleonos\clks\kernel\input\mouse.c | C | 243 | 0 | 63 | 306 |
| d:\Projects\C\cleonos\clks\kernel\interface\desktop.c | C | 321 | 0 | 86 | 407 |
| d:\Projects\C\cleonos\clks\kernel\interface\shell.c | C | 1,232 | 0 | 316 | 1,548 |
| d:\Projects\C\cleonos\clks\kernel\interface\tty.c | C | 1,137 | 0 | 288 | 1,425 |
| d:\Projects\C\cleonos\clks\kernel\memory\heap.c | C | 137 | 0 | 44 | 181 |
| d:\Projects\C\cleonos\clks\kernel\memory\pmm.c | C | 82 | 0 | 23 | 105 |
| d:\Projects\C\cleonos\clks\kernel\runtime\driver.c | C | 166 | 0 | 49 | 215 |
| d:\Projects\C\cleonos\clks\kernel\runtime\elf64.c | C | 279 | 1 | 84 | 364 |
| d:\Projects\C\cleonos\clks\kernel\runtime\elfrunner.c | C | 30 | 0 | 8 | 38 |
| d:\Projects\C\cleonos\clks\kernel\runtime\exec.c | C | 2,179 | 1 | 595 | 2,775 |
| d:\Projects\C\cleonos\clks\kernel\runtime\kelf.c | C | 198 | 1 | 52 | 251 |
| d:\Projects\C\cleonos\clks\kernel\runtime\syscall.c | C | 2,021 | 0 | 507 | 2,528 |
| d:\Projects\C\cleonos\clks\kernel\runtime\userland.c | C | 146 | 0 | 38 | 184 |
| d:\Projects\C\cleonos\clks\kernel\storage\fs.c | C | 684 | 0 | 222 | 906 |
| d:\Projects\C\cleonos\clks\kernel\storage\ramdisk.c | C | 172 | 0 | 50 | 222 |
| d:\Projects\C\cleonos\clks\kernel\support\libc_compat.c | C | 25 | 0 | 7 | 32 |
| d:\Projects\C\cleonos\clks\kernel\support\string.c | C | 54 | 0 | 16 | 70 |
| d:\Projects\C\cleonos\clks\rust\src\lib.rs | Rust | 21 | 0 | 6 | 27 |
| d:\Projects\C\cleonos\cmake\check_tools.cmake | CMake | 34 | 0 | 7 | 41 |
| d:\Projects\C\cleonos\cmake\gen_kernel_symbols.cmake | CMake | 80 | 0 | 26 | 106 |
| d:\Projects\C\cleonos\cmake\log.cmake | CMake | 30 | 0 | 6 | 36 |
| d:\Projects\C\cleonos\cmake\log_emit.cmake | CMake | 23 | 0 | 6 | 29 |
| d:\Projects\C\cleonos\cmake\setup_limine.cmake | CMake | 100 | 0 | 19 | 119 |
| d:\Projects\C\cleonos\configs\limine.conf | Properties | 6 | 0 | 1 | 7 |
| d:\Projects\C\cleonos\configs\menuconfig\clks_features.json | JSON | 376 | 0 | 1 | 377 |
| d:\Projects\C\cleonos\docs\README.md | Markdown | 31 | 0 | 4 | 35 |
| d:\Projects\C\cleonos\docs\stage1.md | Markdown | 41 | 0 | 5 | 46 |
| d:\Projects\C\cleonos\docs\stage10.md | Markdown | 34 | 0 | 6 | 40 |
| d:\Projects\C\cleonos\docs\stage11.md | Markdown | 36 | 0 | 5 | 41 |
| d:\Projects\C\cleonos\docs\stage12.md | Markdown | 40 | 0 | 6 | 46 |
| d:\Projects\C\cleonos\docs\stage13.md | Markdown | 34 | 0 | 6 | 40 |
| d:\Projects\C\cleonos\docs\stage14.md | Markdown | 44 | 0 | 8 | 52 |
| d:\Projects\C\cleonos\docs\stage15.md | Markdown | 47 | 0 | 7 | 54 |
| d:\Projects\C\cleonos\docs\stage2.md | Markdown | 30 | 0 | 5 | 35 |
| d:\Projects\C\cleonos\docs\stage20.md | Markdown | 46 | 0 | 6 | 52 |
| d:\Projects\C\cleonos\docs\stage21.md | Markdown | 72 | 0 | 7 | 79 |
| d:\Projects\C\cleonos\docs\stage22.md | Markdown | 68 | 0 | 7 | 75 |
| d:\Projects\C\cleonos\docs\stage23.md | Markdown | 41 | 0 | 6 | 47 |
| d:\Projects\C\cleonos\docs\stage24.md | Markdown | 42 | 0 | 7 | 49 |
| d:\Projects\C\cleonos\docs\stage25.md | Markdown | 58 | 0 | 7 | 65 |
| d:\Projects\C\cleonos\docs\stage26.md | Markdown | 32 | 0 | 7 | 39 |
| d:\Projects\C\cleonos\docs\stage27.md | Markdown | 32 | 0 | 7 | 39 |
| d:\Projects\C\cleonos\docs\stage28.md | Markdown | 37 | 0 | 7 | 44 |
| d:\Projects\C\cleonos\docs\stage29.md | Markdown | 33 | 0 | 7 | 40 |
| d:\Projects\C\cleonos\docs\stage3.md | Markdown | 29 | 0 | 5 | 34 |
| d:\Projects\C\cleonos\docs\stage4.md | Markdown | 30 | 0 | 5 | 35 |
| d:\Projects\C\cleonos\docs\stage5.md | Markdown | 29 | 0 | 5 | 34 |
| d:\Projects\C\cleonos\docs\stage6.md | Markdown | 30 | 0 | 6 | 36 |
| d:\Projects\C\cleonos\docs\stage7.md | Markdown | 34 | 0 | 6 | 40 |
| d:\Projects\C\cleonos\docs\stage8.md | Markdown | 31 | 0 | 6 | 37 |
| d:\Projects\C\cleonos\docs\stage9.md | Markdown | 31 | 0 | 6 | 37 |
| d:\Projects\C\cleonos\docs\syscall.md | Markdown | 499 | 0 | 206 | 705 |
| d:\Projects\C\cleonos\limine\.github\dependabot.yml | YAML | 7 | 0 | 1 | 8 |
| d:\Projects\C\cleonos\limine\.github\workflows\binary-release.yml | YAML | 78 | 0 | 21 | 99 |
| d:\Projects\C\cleonos\limine\.github\workflows\check.yml | YAML | 34 | 0 | 12 | 46 |
| d:\Projects\C\cleonos\limine\.github\workflows\pr_branch_check.yml | YAML | 13 | 0 | 3 | 16 |
| d:\Projects\C\cleonos\limine\.github\workflows\qa.yml | YAML | 14 | 0 | 5 | 19 |
| d:\Projects\C\cleonos\limine\.github\workflows\release.yml | YAML | 64 | 0 | 17 | 81 |
| d:\Projects\C\cleonos\limine\3RDPARTY.md | Markdown | 53 | 0 | 15 | 68 |
| d:\Projects\C\cleonos\limine\CONFIG.md | Markdown | 320 | 0 | 53 | 373 |
| d:\Projects\C\cleonos\limine\FAQ.md | Markdown | 26 | 0 | 10 | 36 |
| d:\Projects\C\cleonos\limine\INSTALL.md | Markdown | 37 | 0 | 15 | 52 |
| d:\Projects\C\cleonos\limine\README.md | Markdown | 70 | 0 | 33 | 103 |
| d:\Projects\C\cleonos\limine\USAGE.md | Markdown | 85 | 0 | 23 | 108 |
| d:\Projects\C\cleonos\limine\common\common.mk | Makefile | 562 | 0 | 115 | 677 |
| d:\Projects\C\cleonos\limine\common\crypt\blake2b.c | C | 179 | 3 | 39 | 221 |
| d:\Projects\C\cleonos\limine\common\crypt\blake2b.h | C++ | 6 | 0 | 5 | 11 |
| d:\Projects\C\cleonos\limine\common\drivers\disk.h | C++ | 18 | 0 | 9 | 27 |
| d:\Projects\C\cleonos\limine\common\drivers\disk.s2.c | C | 646 | 33 | 178 | 857 |
| d:\Projects\C\cleonos\limine\common\drivers\edid.c | C | 61 | 0 | 25 | 86 |
| d:\Projects\C\cleonos\limine\common\drivers\edid.h | C++ | 37 | 0 | 7 | 44 |
| d:\Projects\C\cleonos\limine\common\drivers\gop.c | C | 306 | 3 | 73 | 382 |
| d:\Projects\C\cleonos\limine\common\drivers\gop.h | C++ | 13 | 0 | 7 | 20 |
| d:\Projects\C\cleonos\limine\common\drivers\serial.c | C | 37 | 1 | 13 | 51 |
| d:\Projects\C\cleonos\limine\common\drivers\serial.h | C++ | 9 | 0 | 7 | 16 |
| d:\Projects\C\cleonos\limine\common\drivers\vbe.c | C | 307 | 8 | 53 | 368 |
| d:\Projects\C\cleonos\limine\common\drivers\vbe.h | C++ | 11 | 0 | 5 | 16 |
| d:\Projects\C\cleonos\limine\common\drivers\vga_textmode.c | C | 294 | 5 | 71 | 370 |
| d:\Projects\C\cleonos\limine\common\drivers\vga_textmode.h | C++ | 24 | 0 | 12 | 36 |
| d:\Projects\C\cleonos\limine\common\entry.s2.c | C | 106 | 1 | 28 | 135 |
| d:\Projects\C\cleonos\limine\common\entry.s3.c | C | 202 | 0 | 47 | 249 |
| d:\Projects\C\cleonos\limine\common\fs\fat32.h | C++ | 7 | 0 | 5 | 12 |
| d:\Projects\C\cleonos\limine\common\fs\fat32.s2.c | C | 577 | 39 | 111 | 727 |
| d:\Projects\C\cleonos\limine\common\fs\file.h | C++ | 39 | 0 | 7 | 46 |
| d:\Projects\C\cleonos\limine\common\fs\file.s2.c | C | 163 | 0 | 22 | 185 |
| d:\Projects\C\cleonos\limine\common\fs\iso9660.h | C++ | 7 | 0 | 4 | 11 |
| d:\Projects\C\cleonos\limine\common\fs\iso9660.s2.c | C | 407 | 38 | 94 | 539 |
| d:\Projects\C\cleonos\limine\common\gensyms.sh | Shell Script | 33 | 2 | 17 | 52 |
| d:\Projects\C\cleonos\limine\common\lib\acpi.c | C | 344 | 27 | 102 | 473 |
| d:\Projects\C\cleonos\limine\common\lib\acpi.h | C++ | 163 | 24 | 30 | 217 |
| d:\Projects\C\cleonos\limine\common\lib\bli.c | C | 67 | 4 | 20 | 91 |
| d:\Projects\C\cleonos\limine\common\lib\bli.h | C++ | 7 | 0 | 5 | 12 |
| d:\Projects\C\cleonos\limine\common\lib\config.c | C | 628 | 11 | 126 | 765 |
| d:\Projects\C\cleonos\limine\common\lib\config.h | C++ | 28 | 0 | 9 | 37 |
| d:\Projects\C\cleonos\limine\common\lib\elf.c | C | 964 | 27 | 212 | 1,203 |
| d:\Projects\C\cleonos\limine\common\lib\elf.h | C++ | 74 | 0 | 14 | 88 |
| d:\Projects\C\cleonos\limine\common\lib\elsewhere.c | C | 81 | 7 | 17 | 105 |
| d:\Projects\C\cleonos\limine\common\lib\elsewhere.h | C++ | 16 | 0 | 5 | 21 |
| d:\Projects\C\cleonos\limine\common\lib\fb.c | C | 153 | 4 | 17 | 174 |
| d:\Projects\C\cleonos\limine\common\lib\fb.h | C++ | 36 | 0 | 12 | 48 |
| d:\Projects\C\cleonos\limine\common\lib\fdt.c | C | 33 | 0 | 12 | 45 |
| d:\Projects\C\cleonos\limine\common\lib\fdt.h | C++ | 10 | 0 | 6 | 16 |
| d:\Projects\C\cleonos\limine\common\lib\getchar.c | C | 306 | 1 | 59 | 366 |
| d:\Projects\C\cleonos\limine\common\lib\getchar.h | C++ | 23 | 0 | 6 | 29 |
| d:\Projects\C\cleonos\limine\common\lib\gterm.c | C | 813 | 9 | 118 | 940 |
| d:\Projects\C\cleonos\limine\common\lib\gterm.h | C++ | 29 | 0 | 6 | 35 |
| d:\Projects\C\cleonos\limine\common\lib\guid.c | C | 82 | 0 | 14 | 96 |
| d:\Projects\C\cleonos\limine\common\lib\guid.h | C++ | 15 | 1 | 5 | 21 |
| d:\Projects\C\cleonos\limine\common\lib\image.c | C | 52 | 2 | 18 | 72 |
| d:\Projects\C\cleonos\limine\common\lib\image.h | C++ | 27 | 0 | 6 | 33 |
| d:\Projects\C\cleonos\limine\common\lib\libc.c | C | 114 | 3 | 15 | 132 |
| d:\Projects\C\cleonos\limine\common\lib\libc.h | C++ | 29 | 0 | 8 | 37 |
| d:\Projects\C\cleonos\limine\common\lib\libc.s2.c | C | 122 | 2 | 26 | 150 |
| d:\Projects\C\cleonos\limine\common\lib\macros.aarch64_asm.h | C++ | 44 | 4 | 5 | 53 |
| d:\Projects\C\cleonos\limine\common\lib\memory.s2.c | C | 41 | 0 | 13 | 54 |
| d:\Projects\C\cleonos\limine\common\lib\misc.c | C | 322 | 8 | 90 | 420 |
| d:\Projects\C\cleonos\limine\common\lib\misc.h | C++ | 122 | 0 | 32 | 154 |
| d:\Projects\C\cleonos\limine\common\lib\misc.s2.c | C | 117 | 0 | 12 | 129 |
| d:\Projects\C\cleonos\limine\common\lib\panic.s2.c | C | 70 | 8 | 12 | 90 |
| d:\Projects\C\cleonos\limine\common\lib\part.h | C++ | 86 | 2 | 23 | 111 |
| d:\Projects\C\cleonos\limine\common\lib\part.s2.c | C | 464 | 31 | 121 | 616 |
| d:\Projects\C\cleonos\limine\common\lib\pe.c | C | 398 | 5 | 98 | 501 |
| d:\Projects\C\cleonos\limine\common\lib\pe.h | C++ | 8 | 0 | 5 | 13 |
| d:\Projects\C\cleonos\limine\common\lib\print.h | C++ | 11 | 0 | 6 | 17 |
| d:\Projects\C\cleonos\limine\common\lib\print.s2.c | C | 200 | 0 | 36 | 236 |
| d:\Projects\C\cleonos\limine\common\lib\rand.c | C | 112 | 5 | 25 | 142 |
| d:\Projects\C\cleonos\limine\common\lib\rand.h | C++ | 7 | 0 | 5 | 12 |
| d:\Projects\C\cleonos\limine\common\lib\real.h | C++ | 26 | 0 | 9 | 35 |
| d:\Projects\C\cleonos\limine\common\lib\stb_image.c | C | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\limine\common\lib\term.c | C | 266 | 5 | 49 | 320 |
| d:\Projects\C\cleonos\limine\common\lib\term.h | C++ | 47 | 0 | 13 | 60 |
| d:\Projects\C\cleonos\limine\common\lib\time.c | C | 59 | 2 | 15 | 76 |
| d:\Projects\C\cleonos\limine\common\lib\time.h | C++ | 5 | 0 | 4 | 9 |
| d:\Projects\C\cleonos\limine\common\lib\trace.h | C++ | 5 | 0 | 4 | 9 |
| d:\Projects\C\cleonos\limine\common\lib\trace.s2.c | C | 79 | 0 | 9 | 88 |
| d:\Projects\C\cleonos\limine\common\lib\uri.c | C | 224 | 9 | 54 | 287 |
| d:\Projects\C\cleonos\limine\common\lib\uri.h | C++ | 7 | 0 | 4 | 11 |
| d:\Projects\C\cleonos\limine\common\libc-compat\stdlib.h | C++ | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\limine\common\libc-compat\string.h | C++ | 19 | 0 | 5 | 24 |
| d:\Projects\C\cleonos\limine\common\menu.c | C | 1,378 | 30 | 150 | 1,558 |
| d:\Projects\C\cleonos\limine\common\menu.h | C++ | 13 | 0 | 8 | 21 |
| d:\Projects\C\cleonos\limine\common\mm\mtrr.c | C | 91 | 18 | 32 | 141 |
| d:\Projects\C\cleonos\limine\common\mm\mtrr.h | C++ | 7 | 0 | 5 | 12 |
| d:\Projects\C\cleonos\limine\common\mm\pmm.c | C | 70 | 3 | 16 | 89 |
| d:\Projects\C\cleonos\limine\common\mm\pmm.h | C++ | 63 | 0 | 18 | 81 |
| d:\Projects\C\cleonos\limine\common\mm\pmm.s2.c | C | 662 | 37 | 192 | 891 |
| d:\Projects\C\cleonos\limine\common\mm\vmm.c | C | 416 | 30 | 110 | 556 |
| d:\Projects\C\cleonos\limine\common\mm\vmm.h | C++ | 125 | 6 | 45 | 176 |
| d:\Projects\C\cleonos\limine\common\protos\chainload.c | C | 283 | 7 | 78 | 368 |
| d:\Projects\C\cleonos\limine\common\protos\chainload.h | C++ | 5 | 0 | 4 | 9 |
| d:\Projects\C\cleonos\limine\common\protos\efi_boot_entry.c | C | 94 | 6 | 26 | 126 |
| d:\Projects\C\cleonos\limine\common\protos\efi_boot_entry.h | C++ | 5 | 0 | 4 | 9 |
| d:\Projects\C\cleonos\limine\common\protos\limine.c | C | 1,523 | 80 | 331 | 1,934 |
| d:\Projects\C\cleonos\limine\common\protos\limine.h | C++ | 5 | 0 | 4 | 9 |
| d:\Projects\C\cleonos\limine\common\protos\linux.h | C++ | 59 | 1 | 14 | 74 |
| d:\Projects\C\cleonos\limine\common\protos\linux_risc.c | C | 412 | 22 | 99 | 533 |
| d:\Projects\C\cleonos\limine\common\protos\linux_x86.c | C | 527 | 41 | 96 | 664 |
| d:\Projects\C\cleonos\limine\common\protos\multiboot.h | C++ | 13 | 0 | 5 | 18 |
| d:\Projects\C\cleonos\limine\common\protos\multiboot1.c | C | 394 | 14 | 105 | 513 |
| d:\Projects\C\cleonos\limine\common\protos\multiboot1.h | C++ | 76 | 0 | 25 | 101 |
| d:\Projects\C\cleonos\limine\common\protos\multiboot2.c | C | 782 | 77 | 182 | 1,041 |
| d:\Projects\C\cleonos\limine\common\protos\multiboot2.h | C++ | 331 | 30 | 58 | 419 |
| d:\Projects\C\cleonos\limine\common\pxe\pxe.h | C++ | 96 | 0 | 16 | 112 |
| d:\Projects\C\cleonos\limine\common\pxe\pxe.s2.c | C | 53 | 2 | 18 | 73 |
| d:\Projects\C\cleonos\limine\common\pxe\tftp.h | C++ | 36 | 0 | 11 | 47 |
| d:\Projects\C\cleonos\limine\common\pxe\tftp.s2.c | C | 211 | 5 | 52 | 268 |
| d:\Projects\C\cleonos\limine\common\stb_image.patch | Diff | 74 | 7 | 10 | 91 |
| d:\Projects\C\cleonos\limine\common\sys\a20.h | C++ | 6 | 0 | 4 | 10 |
| d:\Projects\C\cleonos\limine\common\sys\a20.s2.c | C | 67 | 5 | 21 | 93 |
| d:\Projects\C\cleonos\limine\common\sys\cpu.h | C++ | 429 | 2 | 82 | 513 |
| d:\Projects\C\cleonos\limine\common\sys\cpu.s2.c | C | 58 | 6 | 14 | 78 |
| d:\Projects\C\cleonos\limine\common\sys\cpu_riscv.c | C | 353 | 10 | 65 | 428 |
| d:\Projects\C\cleonos\limine\common\sys\e820.h | C++ | 9 | 0 | 5 | 14 |
| d:\Projects\C\cleonos\limine\common\sys\e820.s2.c | C | 33 | 0 | 12 | 45 |
| d:\Projects\C\cleonos\limine\common\sys\exceptions.s2.c | C | 46 | 0 | 5 | 51 |
| d:\Projects\C\cleonos\limine\common\sys\gdt.h | C++ | 23 | 0 | 7 | 30 |
| d:\Projects\C\cleonos\limine\common\sys\gdt.s2.c | C | 83 | 0 | 13 | 96 |
| d:\Projects\C\cleonos\limine\common\sys\idt.c | C | 53 | 3 | 16 | 72 |
| d:\Projects\C\cleonos\limine\common\sys\idt.h | C++ | 43 | 0 | 17 | 60 |
| d:\Projects\C\cleonos\limine\common\sys\idt.s2.c | C | 26 | 0 | 10 | 36 |
| d:\Projects\C\cleonos\limine\common\sys\iommu.c | C | 94 | 21 | 30 | 145 |
| d:\Projects\C\cleonos\limine\common\sys\iommu.h | C++ | 4 | 0 | 3 | 7 |
| d:\Projects\C\cleonos\limine\common\sys\lapic.c | C | 420 | 23 | 69 | 512 |
| d:\Projects\C\cleonos\limine\common\sys\lapic.h | C++ | 30 | 0 | 9 | 39 |
| d:\Projects\C\cleonos\limine\common\sys\pic.c | C | 37 | 1 | 11 | 49 |
| d:\Projects\C\cleonos\limine\common\sys\pic.h | C++ | 8 | 0 | 4 | 12 |
| d:\Projects\C\cleonos\limine\common\sys\sbi.h | C++ | 25 | 0 | 8 | 33 |
| d:\Projects\C\cleonos\limine\common\sys\smp.c | C | 917 | 54 | 259 | 1,230 |
| d:\Projects\C\cleonos\limine\common\sys\smp.h | C++ | 38 | 0 | 13 | 51 |
| d:\Projects\C\cleonos\limine\decompressor\decompressor.mk | Makefile | 70 | 0 | 15 | 85 |
| d:\Projects\C\cleonos\limine\decompressor\main.c | C | 31 | 2 | 5 | 38 |
| d:\Projects\C\cleonos\limine\decompressor\memory.c | C | 41 | 0 | 13 | 54 |
| d:\Projects\C\cleonos\limine\decompressor\tinf.patch | Diff | 42 | 3 | 10 | 55 |
| d:\Projects\C\cleonos\limine\host\hgen.sh | Shell Script | 10 | 1 | 6 | 17 |
| d:\Projects\C\cleonos\limine\host\host.mk | Makefile | 14 | 0 | 6 | 20 |
| d:\Projects\C\cleonos\limine\host\limine.c | C | 1,192 | 32 | 225 | 1,449 |
| d:\Projects\C\cleonos\limine\test.mk | Makefile | 263 | 0 | 16 | 279 |
| d:\Projects\C\cleonos\limine\test\e9print.c | C | 81 | 0 | 18 | 99 |
| d:\Projects\C\cleonos\limine\test\e9print.h | C++ | 7 | 0 | 3 | 10 |
| d:\Projects\C\cleonos\limine\test\limine.c | C | 624 | 0 | 82 | 706 |
| d:\Projects\C\cleonos\limine\test\limine.conf | Properties | 40 | 1 | 19 | 60 |
| d:\Projects\C\cleonos\limine\test\memory.c | C | 40 | 0 | 13 | 53 |
| d:\Projects\C\cleonos\limine\test\multiboot.c | C | 57 | 12 | 24 | 93 |
| d:\Projects\C\cleonos\limine\test\multiboot2.c | C | 141 | 5 | 36 | 182 |
| d:\Projects\C\cleonos\limine\test\test.mk | Makefile | 143 | 0 | 21 | 164 |
| d:\Projects\C\cleonos\limine\version.sh | Shell Script | 19 | 1 | 10 | 30 |
| d:\Projects\C\cleonos\ramdisk\dev\random | C++ | 0 | 0 | 1 | 1 |
| d:\Projects\C\cleonos\ramdisk\shell\init.cmd | Batch | 4 | 0 | 2 | 6 |
| d:\Projects\C\cleonos\scripts\gen-tty-psf.ps1 | PowerShell | 171 | 2 | 42 | 215 |
| d:\Projects\C\cleonos\scripts\menuconfig.py | Python | 1,608 | 24 | 304 | 1,936 |
| d:\Projects\C\cleonos\wine\README.md | Markdown | 53 | 0 | 19 | 72 |
| d:\Projects\C\cleonos\wine\cleonos_wine.py | Python | 3 | 1 | 3 | 7 |
| d:\Projects\C\cleonos\wine\cleonos_wine_lib\__init__.py | Python | 4 | 0 | 1 | 5 |
| d:\Projects\C\cleonos\wine\cleonos_wine_lib\cli.py | Python | 44 | 0 | 10 | 54 |
| d:\Projects\C\cleonos\wine\cleonos_wine_lib\constants.py | Python | 112 | 4 | 14 | 130 |
| d:\Projects\C\cleonos\wine\cleonos_wine_lib\input_pump.py | Python | 82 | 0 | 17 | 99 |
| d:\Projects\C\cleonos\wine\cleonos_wine_lib\platform.py | Python | 55 | 0 | 5 | 60 |
| d:\Projects\C\cleonos\wine\cleonos_wine_lib\runner.py | Python | 1,459 | 0 | 266 | 1,725 |
| d:\Projects\C\cleonos\wine\cleonos_wine_lib\state.py | Python | 282 | 2 | 71 | 355 |
| d:\Projects\C\cleonos\wine\requirements.txt | pip requirements | 1 | 0 | 1 | 2 |
| Total | | 108,044 | 13,937 | 27,927 | 149,908 |
+--------------------------------------------------------------------------------------------+------------------+------------+------------+------------+------------+

View File

@@ -74,6 +74,13 @@ jobs:
cmake -S . -B build-cmake \ cmake -S . -B build-cmake \
-DCMAKE_BUILD_TYPE=Release \ -DCMAKE_BUILD_TYPE=Release \
-DNO_COLOR=1 \ -DNO_COLOR=1 \
-DCC=gcc \
-DKERNEL_CXX=g++ \
-DLD=ld.lld \
-DUSER_CC=cc \
-DUSER_LD=ld.lld \
-DNM=llvm-nm \
-DADDR2LINE=llvm-addr2line \
-DLIMINE_REPO=https://github.com/limine-bootloader/limine.git -DLIMINE_REPO=https://github.com/limine-bootloader/limine.git
- name: Build ISO - name: Build ISO

3
.gitmodules vendored
View File

@@ -1,3 +1,6 @@
[submodule "limine"] [submodule "limine"]
path = limine path = limine
url = https://github.com/limine-bootloader/limine.git url = https://github.com/limine-bootloader/limine.git
[submodule "cleonos/third-party/doomgeneric"]
path = cleonos/third-party/doomgeneric
url = https://github.com/CLeonOS/doom.git

View File

@@ -7,6 +7,7 @@ include("${CMAKE_SOURCE_DIR}/cmake/log.cmake")
set(CL_LOG_EMIT_SCRIPT "${CMAKE_SOURCE_DIR}/cmake/log_emit.cmake") set(CL_LOG_EMIT_SCRIPT "${CMAKE_SOURCE_DIR}/cmake/log_emit.cmake")
set(CC "x86_64-elf-gcc" CACHE STRING "Kernel C compiler") set(CC "x86_64-elf-gcc" CACHE STRING "Kernel C compiler")
set(KERNEL_CXX "g++" CACHE STRING "Kernel C++ compiler")
set(LD "x86_64-elf-ld" CACHE STRING "Kernel linker") set(LD "x86_64-elf-ld" CACHE STRING "Kernel linker")
set(USER_CC "cc" CACHE STRING "User-space C compiler") set(USER_CC "cc" CACHE STRING "User-space C compiler")
set(USER_LD "ld" CACHE STRING "User-space linker") set(USER_LD "ld" CACHE STRING "User-space linker")
@@ -55,16 +56,20 @@ function(resolve_tool_with_fallback VAR_NAME)
endif() endif()
set(_resolved "${_requested}") set(_resolved "${_requested}")
else() else()
unset(_requested_path CACHE)
unset(_requested_path)
find_program(_requested_path NAMES "${_requested}") find_program(_requested_path NAMES "${_requested}")
if(_requested_path) if(_requested_path)
set(_resolved "${_requested}") set(_resolved "${_requested_path}")
else() else()
set(_resolved "") set(_resolved "")
foreach(_cand IN LISTS _fallbacks) foreach(_cand IN LISTS _fallbacks)
unset(_cand_path CACHE)
unset(_cand_path)
find_program(_cand_path NAMES "${_cand}") find_program(_cand_path NAMES "${_cand}")
if(_cand_path) if(_cand_path)
cl_log_warn("${VAR_NAME} '${_requested}' not found; fallback to '${_cand}'") cl_log_warn("${VAR_NAME} '${_requested}' not found; fallback to '${_cand}'")
set(_resolved "${_cand}") set(_resolved "${_cand_path}")
break() break()
endif() endif()
endforeach() endforeach()
@@ -99,6 +104,7 @@ set(USER_RUST_LIB "${USER_LIB_DIR}/libcleonos_user_rust.a")
set(KERNEL_RUST_LIB "${BUILD_ROOT}/libclks_kernel_rust.a") set(KERNEL_RUST_LIB "${BUILD_ROOT}/libclks_kernel_rust.a")
resolve_tool_with_fallback(CC gcc cc clang) resolve_tool_with_fallback(CC gcc cc clang)
resolve_tool_with_fallback(KERNEL_CXX g++ clang++ x86_64-elf-g++)
resolve_tool_with_fallback(LD ld.lld ld) resolve_tool_with_fallback(LD ld.lld ld)
resolve_tool_with_fallback(USER_CC cc gcc clang) resolve_tool_with_fallback(USER_CC cc gcc clang)
resolve_tool_with_fallback(USER_LD ld.lld ld) resolve_tool_with_fallback(USER_LD ld.lld ld)
@@ -259,6 +265,24 @@ set(CFLAGS_COMMON
-Wextra -Wextra
-Werror -Werror
"-I${CMAKE_SOURCE_DIR}/clks/include" "-I${CMAKE_SOURCE_DIR}/clks/include"
"-I${CMAKE_SOURCE_DIR}/common/include"
)
set(CXXFLAGS_COMMON
-std=c++17
-ffreestanding
-fno-stack-protector
-fno-builtin
-fno-exceptions
-fno-rtti
-fno-threadsafe-statics
-fno-use-cxa-atexit
-g
-Wall
-Wextra
-Werror
"-I${CMAKE_SOURCE_DIR}/clks/include"
"-I${CMAKE_SOURCE_DIR}/common/include"
) )
set(ARCH_CFLAGS set(ARCH_CFLAGS
@@ -335,6 +359,26 @@ set(USER_CFLAGS
-Wextra -Wextra
-Werror -Werror
"-I${CMAKE_SOURCE_DIR}/cleonos/c/include" "-I${CMAKE_SOURCE_DIR}/cleonos/c/include"
"-I${CMAKE_SOURCE_DIR}/common/include"
)
set(USER_CFLAGS_DOOM
-std=c11
-ffreestanding
-fno-stack-protector
-fno-builtin
-Wall
-Wextra
-Wno-error
-Wno-unused-parameter
-Wno-missing-field-initializers
-Wno-sign-compare
-D_DEFAULT_SOURCE
-D_POSIX_C_SOURCE=200809L
"-I${CMAKE_SOURCE_DIR}/common/include"
"-I${CMAKE_SOURCE_DIR}/cleonos/third-party/doomgeneric/doomgeneric"
"-include"
"${CMAKE_SOURCE_DIR}/cleonos/c/apps/doom/doom_shim.h"
) )
set(USER_LDFLAGS set(USER_LDFLAGS
@@ -357,398 +401,8 @@ if(NOT CLKS_ARCH STREQUAL "x86_64")
cl_log_error("CLKS_ARCH=${CLKS_ARCH} is not supported by this CMake build yet; use x86_64") cl_log_error("CLKS_ARCH=${CLKS_ARCH} is not supported by this CMake build yet; use x86_64")
endif() endif()
set(KERNEL_SOURCE_DIRS include("${CMAKE_SOURCE_DIR}/clks/CMakeLists.txt")
"${CMAKE_SOURCE_DIR}/clks/kernel" include("${CMAKE_SOURCE_DIR}/cleonos/CMakeLists.txt")
"${CMAKE_SOURCE_DIR}/clks/arch/${CLKS_ARCH}"
)
set(C_SOURCES)
set(ASM_SOURCES)
foreach(_src_dir IN LISTS KERNEL_SOURCE_DIRS)
if(EXISTS "${_src_dir}")
file(GLOB_RECURSE _c_abs CONFIGURE_DEPENDS "${_src_dir}/*.c")
file(GLOB_RECURSE _s_abs CONFIGURE_DEPENDS "${_src_dir}/*.S")
foreach(_abs IN LISTS _c_abs)
file(RELATIVE_PATH _rel "${CMAKE_SOURCE_DIR}" "${_abs}")
list(APPEND C_SOURCES "${_rel}")
endforeach()
foreach(_abs IN LISTS _s_abs)
file(RELATIVE_PATH _rel "${CMAKE_SOURCE_DIR}" "${_abs}")
list(APPEND ASM_SOURCES "${_rel}")
endforeach()
endif()
endforeach()
list(REMOVE_DUPLICATES C_SOURCES)
list(REMOVE_DUPLICATES ASM_SOURCES)
list(SORT C_SOURCES)
list(SORT ASM_SOURCES)
set(CLKS_BOOT_LIMINE_SOURCE "clks/kernel/boot/limine/limine_requests.c")
if(EXISTS "${CMAKE_SOURCE_DIR}/${CLKS_BOOT_LIMINE_SOURCE}")
list(APPEND C_SOURCES "${CLKS_BOOT_LIMINE_SOURCE}")
list(REMOVE_DUPLICATES C_SOURCES)
list(SORT C_SOURCES)
else()
cl_log_error("missing required boot source: ${CLKS_BOOT_LIMINE_SOURCE}")
endif()
file(GLOB_RECURSE KERNEL_INC_SOURCES_ABS CONFIGURE_DEPENDS
"${CMAKE_SOURCE_DIR}/clks/**/*.inc"
)
list(SORT KERNEL_INC_SOURCES_ABS)
file(GLOB_RECURSE USER_INC_SOURCES_ABS CONFIGURE_DEPENDS
"${CMAKE_SOURCE_DIR}/cleonos/**/*.inc"
)
list(SORT USER_INC_SOURCES_ABS)
if(NOT C_SOURCES)
cl_log_error("no kernel C sources found in clks/")
endif()
if(NOT EXISTS "${LINKER_SCRIPT}")
cl_log_error("missing linker script: ${LINKER_SCRIPT}")
endif()
file(GLOB_RECURSE USER_COMMON_SOURCES_ABS CONFIGURE_DEPENDS "${CMAKE_SOURCE_DIR}/cleonos/c/src/*.c")
set(USER_COMMON_SOURCES)
foreach(_abs IN LISTS USER_COMMON_SOURCES_ABS)
file(RELATIVE_PATH _rel "${CMAKE_SOURCE_DIR}" "${_abs}")
list(APPEND USER_COMMON_SOURCES "${_rel}")
endforeach()
list(SORT USER_COMMON_SOURCES)
file(GLOB USER_APP_MAIN_SOURCES_ABS CONFIGURE_DEPENDS "${CMAKE_SOURCE_DIR}/cleonos/c/apps/*_main.c")
file(GLOB USER_APP_KMAIN_SOURCES_ABS CONFIGURE_DEPENDS "${CMAKE_SOURCE_DIR}/cleonos/c/apps/*_kmain.c")
set(USER_APP_MAIN_SOURCES)
set(USER_APP_KMAIN_SOURCES)
foreach(_abs IN LISTS USER_APP_MAIN_SOURCES_ABS)
file(RELATIVE_PATH _rel "${CMAKE_SOURCE_DIR}" "${_abs}")
list(APPEND USER_APP_MAIN_SOURCES "${_rel}")
endforeach()
foreach(_abs IN LISTS USER_APP_KMAIN_SOURCES_ABS)
file(RELATIVE_PATH _rel "${CMAKE_SOURCE_DIR}" "${_abs}")
list(APPEND USER_APP_KMAIN_SOURCES "${_rel}")
endforeach()
list(SORT USER_APP_MAIN_SOURCES)
list(SORT USER_APP_KMAIN_SOURCES)
if(NOT USER_COMMON_SOURCES)
cl_log_error("no user common sources found in cleonos/c/src/")
endif()
if(NOT USER_APP_MAIN_SOURCES)
cl_log_error("no user app *_main.c found in cleonos/c/apps/")
endif()
if(NOT USER_APP_KMAIN_SOURCES)
cl_log_error("no kernel app *_kmain.c found in cleonos/c/apps/")
endif()
function(add_kernel_c_object SRC OUTPUT_LIST_VAR)
string(REGEX REPLACE "\\.c$" ".o" OBJ_REL "${SRC}")
set(OBJ_PATH "${OBJ_ROOT}/${OBJ_REL}")
get_filename_component(OBJ_DIR "${OBJ_PATH}" DIRECTORY)
set(_deps "${CMAKE_SOURCE_DIR}/${SRC}" ${KERNEL_INC_SOURCES_ABS})
add_custom_command(
OUTPUT "${OBJ_PATH}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${OBJ_DIR}"
COMMAND ${CC} ${CFLAGS_COMMON} ${ARCH_CFLAGS} -c "${CMAKE_SOURCE_DIR}/${SRC}" -o "${OBJ_PATH}"
DEPENDS ${_deps}
VERBATIM
)
set(${OUTPUT_LIST_VAR} ${${OUTPUT_LIST_VAR}} "${OBJ_PATH}" PARENT_SCOPE)
endfunction()
function(add_kernel_asm_object SRC OUTPUT_LIST_VAR)
string(REGEX REPLACE "\\.S$" ".o" OBJ_REL "${SRC}")
set(OBJ_PATH "${OBJ_ROOT}/${OBJ_REL}")
get_filename_component(OBJ_DIR "${OBJ_PATH}" DIRECTORY)
set(_deps "${CMAKE_SOURCE_DIR}/${SRC}" ${KERNEL_INC_SOURCES_ABS})
add_custom_command(
OUTPUT "${OBJ_PATH}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${OBJ_DIR}"
COMMAND ${CC} ${ASFLAGS_COMMON} ${ARCH_CFLAGS} -c "${CMAKE_SOURCE_DIR}/${SRC}" -o "${OBJ_PATH}"
DEPENDS ${_deps}
VERBATIM
)
set(${OUTPUT_LIST_VAR} ${${OUTPUT_LIST_VAR}} "${OBJ_PATH}" PARENT_SCOPE)
endfunction()
function(add_user_c_object SRC OUTPUT_VAR)
string(REGEX REPLACE "\\.c$" ".o" OBJ_REL "${SRC}")
set(OBJ_PATH "${USER_OBJ_ROOT}/${OBJ_REL}")
get_filename_component(OBJ_DIR "${OBJ_PATH}" DIRECTORY)
set(_deps "${CMAKE_SOURCE_DIR}/${SRC}" ${USER_INC_SOURCES_ABS})
add_custom_command(
OUTPUT "${OBJ_PATH}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${OBJ_DIR}"
COMMAND ${USER_CC} ${USER_CFLAGS} -c "${CMAKE_SOURCE_DIR}/${SRC}" -o "${OBJ_PATH}"
DEPENDS ${_deps}
VERBATIM
)
set(${OUTPUT_VAR} "${OBJ_PATH}" PARENT_SCOPE)
endfunction()
set(KERNEL_OBJECTS)
foreach(SRC IN LISTS C_SOURCES)
add_kernel_c_object("${SRC}" KERNEL_OBJECTS)
endforeach()
foreach(SRC IN LISTS ASM_SOURCES)
add_kernel_asm_object("${SRC}" KERNEL_OBJECTS)
endforeach()
add_custom_command(
OUTPUT "${KERNEL_RUST_LIB}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${BUILD_ROOT}"
COMMAND ${RUSTC} --crate-type staticlib -C panic=abort -O "${CMAKE_SOURCE_DIR}/clks/rust/src/lib.rs" -o "${KERNEL_RUST_LIB}"
DEPENDS "${CMAKE_SOURCE_DIR}/clks/rust/src/lib.rs"
VERBATIM
)
add_custom_command(
OUTPUT "${KERNEL_ELF}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${BUILD_ROOT}"
COMMAND ${LD} ${LDFLAGS_COMMON} -T "${LINKER_SCRIPT}" -o "${KERNEL_ELF}" ${KERNEL_OBJECTS} "${KERNEL_RUST_LIB}"
DEPENDS ${KERNEL_OBJECTS} "${LINKER_SCRIPT}" "${KERNEL_RUST_LIB}" "${CMAKE_SOURCE_DIR}/clks/rust/src/lib.rs"
VERBATIM
)
add_custom_target(kernel DEPENDS "${KERNEL_ELF}")
add_custom_command(
OUTPUT "${KERNEL_SYMBOLS_FILE}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${BUILD_ROOT}"
COMMAND ${CMAKE_COMMAND}
"-DNM_TOOL=${NM}"
"-DADDR2LINE_TOOL=${ADDR2LINE}"
"-DKERNEL_ELF=${KERNEL_ELF}"
"-DOUT_SYMBOL_FILE=${KERNEL_SYMBOLS_FILE}"
-P "${CMAKE_SOURCE_DIR}/cmake/gen_kernel_symbols.cmake"
DEPENDS "${KERNEL_ELF}" "${CMAKE_SOURCE_DIR}/cmake/gen_kernel_symbols.cmake"
VERBATIM
)
add_custom_target(kernel-symbols DEPENDS "${KERNEL_SYMBOLS_FILE}")
add_dependencies(kernel-symbols kernel)
set(USER_COMMON_OBJECTS)
foreach(SRC IN LISTS USER_COMMON_SOURCES)
add_user_c_object("${SRC}" OBJ_OUT)
list(APPEND USER_COMMON_OBJECTS "${OBJ_OUT}")
endforeach()
add_custom_command(
OUTPUT "${USER_RUST_LIB}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${USER_LIB_DIR}"
COMMAND ${RUSTC} --crate-type staticlib -C panic=abort -O "${CMAKE_SOURCE_DIR}/cleonos/rust/src/lib.rs" -o "${USER_RUST_LIB}"
DEPENDS "${CMAKE_SOURCE_DIR}/cleonos/rust/src/lib.rs"
VERBATIM
)
set(USER_KELF_APP_NAMES)
foreach(SRC IN LISTS USER_APP_KMAIN_SOURCES)
get_filename_component(_stem "${SRC}" NAME_WE)
string(REGEX REPLACE "_kmain$" "" _app_name "${_stem}")
list(APPEND USER_KELF_APP_NAMES "${_app_name}")
endforeach()
list(REMOVE_DUPLICATES USER_KELF_APP_NAMES)
set(USER_APP_OUTPUTS)
set(USER_APP_NAMES)
set(RAMDISK_SHELL_APPS)
set(RAMDISK_DRIVER_APPS)
set(RAMDISK_SYSTEM_APPS)
set(RAMDISK_ROOT_APPS)
set(USER_SHELL_COMMAND_APPS
help args ls cat grep head tail wc cut uniq sort pwd cd exec pid spawn wait sleep yield
bg fg jobs kill ps top
procstat sysstat
shutdown restart exit clear ansi ansitest wavplay fastfetch memstat fsstat taskstat userstat
shstat stats tty dmesg kbdstat mkdir touch write append cp mv rm kdbg
)
foreach(SRC IN LISTS USER_APP_MAIN_SOURCES)
get_filename_component(_stem "${SRC}" NAME_WE)
string(REGEX REPLACE "_main$" "" _app_name "${_stem}")
string(TOUPPER "${_app_name}" _app_name_upper)
string(REGEX REPLACE "[^A-Z0-9]" "_" _app_name_key "${_app_name_upper}")
set(_app_enabled_var "CLEONOS_USER_APP_${_app_name_key}")
list(FIND USER_KELF_APP_NAMES "${_app_name}" _shadowed_by_kmain)
if(NOT _shadowed_by_kmain EQUAL -1)
cl_log_info("skip ${SRC} because ${_app_name}_kmain.c exists")
continue()
endif()
if(NOT DEFINED ${_app_enabled_var})
set(${_app_enabled_var} ON CACHE BOOL "Build user app ${_app_name}")
else()
set(${_app_enabled_var} ${${_app_enabled_var}} CACHE BOOL "Build user app ${_app_name}" FORCE)
endif()
if(NOT ${_app_enabled_var})
cl_log_info("menuconfig: skip disabled user app ${_app_name}")
continue()
endif()
list(FIND USER_APP_NAMES "${_app_name}" _dup_name_idx)
if(NOT _dup_name_idx EQUAL -1)
cl_log_error("duplicate user app name: ${_app_name}")
endif()
list(APPEND USER_APP_NAMES "${_app_name}")
add_user_c_object("${SRC}" _user_obj)
set(_app_specific_objs)
file(GLOB _app_specific_abs CONFIGURE_DEPENDS
"${CMAKE_SOURCE_DIR}/cleonos/c/apps/${_app_name}_*.c"
"${CMAKE_SOURCE_DIR}/cleonos/c/apps/${_app_name}/*.c"
)
list(FIND USER_SHELL_COMMAND_APPS "${_app_name}" _shell_cmd_idx)
if(NOT _shell_cmd_idx EQUAL -1)
list(APPEND _app_specific_abs "${CMAKE_SOURCE_DIR}/cleonos/c/apps/cmd_runtime.c")
endif()
foreach(_extra_abs IN LISTS _app_specific_abs)
file(RELATIVE_PATH _extra_rel "${CMAKE_SOURCE_DIR}" "${_extra_abs}")
if(_extra_rel STREQUAL "${SRC}")
continue()
endif()
if(_extra_rel MATCHES "_kmain\\.c$")
continue()
endif()
add_user_c_object("${_extra_rel}" _extra_obj)
list(APPEND _app_specific_objs "${_extra_obj}")
endforeach()
list(REMOVE_DUPLICATES _app_specific_objs)
set(_app_out "${USER_APP_DIR}/${_app_name}.elf")
add_custom_command(
OUTPUT "${_app_out}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${USER_APP_DIR}"
COMMAND ${USER_LD} ${USER_LDFLAGS} -o "${_app_out}" ${USER_COMMON_OBJECTS} "${_user_obj}" ${_app_specific_objs} "${USER_RUST_LIB}"
DEPENDS ${USER_COMMON_OBJECTS} "${_user_obj}" ${_app_specific_objs} "${USER_RUST_LIB}" "${USER_LINKER_SCRIPT}"
VERBATIM
)
list(APPEND USER_APP_OUTPUTS "${_app_out}")
if(_app_name MATCHES ".*drv$")
list(APPEND RAMDISK_DRIVER_APPS "${_app_out}")
elseif(_app_name STREQUAL "hello")
list(APPEND RAMDISK_ROOT_APPS "${_app_out}")
else()
list(APPEND RAMDISK_SHELL_APPS "${_app_out}")
endif()
endforeach()
foreach(SRC IN LISTS USER_APP_KMAIN_SOURCES)
get_filename_component(_stem "${SRC}" NAME_WE)
string(REGEX REPLACE "_kmain$" "" _app_name "${_stem}")
string(TOUPPER "${_app_name}" _app_name_upper)
string(REGEX REPLACE "[^A-Z0-9]" "_" _app_name_key "${_app_name_upper}")
set(_app_enabled_var "CLEONOS_USER_APP_${_app_name_key}")
if(NOT DEFINED ${_app_enabled_var})
set(${_app_enabled_var} ON CACHE BOOL "Build user app ${_app_name}")
else()
set(${_app_enabled_var} ${${_app_enabled_var}} CACHE BOOL "Build user app ${_app_name}" FORCE)
endif()
if(NOT ${_app_enabled_var})
cl_log_info("menuconfig: skip disabled user app ${_app_name}")
continue()
endif()
list(FIND USER_APP_NAMES "${_app_name}" _dup_name_idx)
if(NOT _dup_name_idx EQUAL -1)
cl_log_error("duplicate user app name: ${_app_name}")
endif()
list(APPEND USER_APP_NAMES "${_app_name}")
add_user_c_object("${SRC}" _kelf_obj)
set(_app_out "${USER_APP_DIR}/${_app_name}.elf")
add_custom_command(
OUTPUT "${_app_out}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${USER_APP_DIR}"
COMMAND ${USER_LD} ${KELF_LDFLAGS} -o "${_app_out}" "${_kelf_obj}"
DEPENDS "${_kelf_obj}" "${KELF_LINKER_SCRIPT}"
VERBATIM
)
list(APPEND USER_APP_OUTPUTS "${_app_out}")
list(APPEND RAMDISK_SYSTEM_APPS "${_app_out}")
endforeach()
if(NOT USER_APP_OUTPUTS)
cl_log_error("no user ELF apps were discovered")
endif()
add_custom_target(userapps DEPENDS ${USER_APP_OUTPUTS})
add_custom_command(
TARGET userapps
POST_BUILD
COMMAND ${CMAKE_COMMAND}
"-DNO_COLOR=${NO_COLOR}"
"-DLOG_LEVEL=INFO"
"-DLOG_TEXT=user elf apps ready"
-P "${CL_LOG_EMIT_SCRIPT}"
)
file(GLOB_RECURSE RAMDISK_FILES CONFIGURE_DEPENDS "${CMAKE_SOURCE_DIR}/ramdisk/*")
set(RAMDISK_ROOT_STAMP "${BUILD_ROOT}/.ramdisk_root.stamp")
set(RAMDISK_COPY_COMMANDS)
foreach(_app IN LISTS RAMDISK_SHELL_APPS)
get_filename_component(_app_file "${_app}" NAME)
list(APPEND RAMDISK_COPY_COMMANDS COMMAND ${CMAKE_COMMAND} -E copy "${_app}" "${RAMDISK_ROOT}/shell/${_app_file}")
endforeach()
foreach(_app IN LISTS RAMDISK_ROOT_APPS)
get_filename_component(_app_file "${_app}" NAME)
list(APPEND RAMDISK_COPY_COMMANDS COMMAND ${CMAKE_COMMAND} -E copy "${_app}" "${RAMDISK_ROOT}/${_app_file}")
endforeach()
foreach(_app IN LISTS RAMDISK_DRIVER_APPS)
get_filename_component(_app_file "${_app}" NAME)
list(APPEND RAMDISK_COPY_COMMANDS COMMAND ${CMAKE_COMMAND} -E copy "${_app}" "${RAMDISK_ROOT}/driver/${_app_file}")
endforeach()
foreach(_app IN LISTS RAMDISK_SYSTEM_APPS)
get_filename_component(_app_file "${_app}" NAME)
list(APPEND RAMDISK_COPY_COMMANDS COMMAND ${CMAKE_COMMAND} -E copy "${_app}" "${RAMDISK_ROOT}/system/${_app_file}")
endforeach()
add_custom_command(
OUTPUT "${RAMDISK_ROOT_STAMP}"
COMMAND ${CMAKE_COMMAND} -E rm -rf "${RAMDISK_ROOT}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${RAMDISK_ROOT}"
COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_SOURCE_DIR}/ramdisk" "${RAMDISK_ROOT}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${RAMDISK_ROOT}/system" "${RAMDISK_ROOT}/shell" "${RAMDISK_ROOT}/driver" "${RAMDISK_ROOT}/dev"
COMMAND ${CMAKE_COMMAND} -E copy "${KERNEL_SYMBOLS_FILE}" "${RAMDISK_ROOT}/system/kernel.sym"
${RAMDISK_COPY_COMMANDS}
COMMAND ${CMAKE_COMMAND} -E touch "${RAMDISK_ROOT_STAMP}"
DEPENDS ${RAMDISK_FILES} ${USER_APP_OUTPUTS} "${KERNEL_SYMBOLS_FILE}"
VERBATIM
)
add_custom_target(ramdisk-root DEPENDS "${RAMDISK_ROOT_STAMP}")
add_dependencies(ramdisk-root userapps)
add_custom_command(
OUTPUT "${RAMDISK_IMAGE}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${BUILD_ROOT}"
COMMAND ${TAR} -C "${RAMDISK_ROOT}" -cf "${RAMDISK_IMAGE}" .
DEPENDS "${RAMDISK_ROOT_STAMP}"
VERBATIM
)
add_custom_target(ramdisk DEPENDS "${RAMDISK_IMAGE}")
add_custom_target(setup-tools add_custom_target(setup-tools
COMMAND ${CMAKE_COMMAND} COMMAND ${CMAKE_COMMAND}

328
cleonos/CMakeLists.txt Normal file
View File

@@ -0,0 +1,328 @@
file(GLOB_RECURSE USER_INC_SOURCES_ABS CONFIGURE_DEPENDS
"${CMAKE_SOURCE_DIR}/cleonos/**/*.inc"
)
list(SORT USER_INC_SOURCES_ABS)
file(GLOB_RECURSE USER_COMMON_SOURCES_ABS CONFIGURE_DEPENDS "${CMAKE_SOURCE_DIR}/cleonos/c/src/*.c")
set(USER_COMMON_SOURCES)
foreach(_abs IN LISTS USER_COMMON_SOURCES_ABS)
file(RELATIVE_PATH _rel "${CMAKE_SOURCE_DIR}" "${_abs}")
list(APPEND USER_COMMON_SOURCES "${_rel}")
endforeach()
list(SORT USER_COMMON_SOURCES)
file(GLOB USER_APP_MAIN_SOURCES_ABS CONFIGURE_DEPENDS "${CMAKE_SOURCE_DIR}/cleonos/c/apps/*_main.c")
file(GLOB USER_APP_KMAIN_SOURCES_ABS CONFIGURE_DEPENDS "${CMAKE_SOURCE_DIR}/cleonos/c/apps/*_kmain.c")
set(USER_APP_MAIN_SOURCES)
set(USER_APP_KMAIN_SOURCES)
foreach(_abs IN LISTS USER_APP_MAIN_SOURCES_ABS)
file(RELATIVE_PATH _rel "${CMAKE_SOURCE_DIR}" "${_abs}")
list(APPEND USER_APP_MAIN_SOURCES "${_rel}")
endforeach()
foreach(_abs IN LISTS USER_APP_KMAIN_SOURCES_ABS)
file(RELATIVE_PATH _rel "${CMAKE_SOURCE_DIR}" "${_abs}")
list(APPEND USER_APP_KMAIN_SOURCES "${_rel}")
endforeach()
list(SORT USER_APP_MAIN_SOURCES)
list(SORT USER_APP_KMAIN_SOURCES)
if(NOT USER_COMMON_SOURCES)
cl_log_error("no user common sources found in cleonos/c/src/")
endif()
if(NOT USER_APP_MAIN_SOURCES)
cl_log_error("no user app *_main.c found in cleonos/c/apps/")
endif()
if(NOT USER_APP_KMAIN_SOURCES)
cl_log_error("no kernel app *_kmain.c found in cleonos/c/apps/")
endif()
function(add_user_c_object SRC OUTPUT_VAR)
string(REGEX REPLACE "\\.c$" ".o" OBJ_REL "${SRC}")
set(OBJ_PATH "${USER_OBJ_ROOT}/${OBJ_REL}")
get_filename_component(OBJ_DIR "${OBJ_PATH}" DIRECTORY)
set(_deps "${CMAKE_SOURCE_DIR}/${SRC}" ${USER_INC_SOURCES_ABS})
add_custom_command(
OUTPUT "${OBJ_PATH}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${OBJ_DIR}"
COMMAND ${USER_CC} ${USER_CFLAGS} -c "${CMAKE_SOURCE_DIR}/${SRC}" -o "${OBJ_PATH}"
DEPENDS ${_deps}
VERBATIM
)
set(${OUTPUT_VAR} "${OBJ_PATH}" PARENT_SCOPE)
endfunction()
function(add_user_c_object_doom SRC OUTPUT_VAR)
string(REGEX REPLACE "\\.c$" ".o" OBJ_REL "${SRC}")
set(OBJ_PATH "${USER_OBJ_ROOT}/${OBJ_REL}")
get_filename_component(OBJ_DIR "${OBJ_PATH}" DIRECTORY)
set(_deps "${CMAKE_SOURCE_DIR}/${SRC}" ${USER_INC_SOURCES_ABS} ${DOOMGENERIC_DEP_SOURCES_ABS})
add_custom_command(
OUTPUT "${OBJ_PATH}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${OBJ_DIR}"
COMMAND ${USER_CC} ${USER_CFLAGS_DOOM} -c "${CMAKE_SOURCE_DIR}/${SRC}" -o "${OBJ_PATH}"
DEPENDS ${_deps}
VERBATIM
)
set(${OUTPUT_VAR} "${OBJ_PATH}" PARENT_SCOPE)
endfunction()
set(USER_COMMON_OBJECTS)
foreach(SRC IN LISTS USER_COMMON_SOURCES)
add_user_c_object("${SRC}" OBJ_OUT)
list(APPEND USER_COMMON_OBJECTS "${OBJ_OUT}")
endforeach()
add_custom_command(
OUTPUT "${USER_RUST_LIB}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${USER_LIB_DIR}"
COMMAND ${RUSTC} --crate-type staticlib -C panic=abort -O "${CMAKE_SOURCE_DIR}/cleonos/rust/src/lib.rs" -o "${USER_RUST_LIB}"
DEPENDS "${CMAKE_SOURCE_DIR}/cleonos/rust/src/lib.rs"
VERBATIM
)
set(USER_KELF_APP_NAMES)
foreach(SRC IN LISTS USER_APP_KMAIN_SOURCES)
get_filename_component(_stem "${SRC}" NAME_WE)
string(REGEX REPLACE "_kmain$" "" _app_name "${_stem}")
list(APPEND USER_KELF_APP_NAMES "${_app_name}")
endforeach()
list(REMOVE_DUPLICATES USER_KELF_APP_NAMES)
set(USER_APP_OUTPUTS)
set(USER_APP_NAMES)
set(RAMDISK_SHELL_APPS)
set(RAMDISK_DRIVER_APPS)
set(RAMDISK_SYSTEM_APPS)
set(RAMDISK_ROOT_APPS)
set(DOOMGENERIC_DIR "${CMAKE_SOURCE_DIR}/cleonos/third-party/doomgeneric/doomgeneric")
set(DOOMGENERIC_SRC_BASENAMES
dummy am_map doomdef doomstat dstrings d_event d_items d_iwad d_loop d_main d_mode d_net f_finale f_wipe
g_game hu_lib hu_stuff info i_cdmus i_endoom i_joystick i_scale i_sound i_system i_timer memio m_argv
m_bbox m_cheat m_config m_controls m_fixed m_menu m_misc m_random p_ceilng p_doors p_enemy p_floor
p_inter p_lights p_map p_maputl p_mobj p_plats p_pspr p_saveg p_setup p_sight p_spec p_switch p_telept
p_tick p_user r_bsp r_data r_draw r_main r_plane r_segs r_sky r_things sha1 sounds statdump st_lib st_stuff
s_sound tables v_video wi_stuff w_checksum w_file w_main w_wad z_zone w_file_stdc i_input i_video doomgeneric
)
set(DOOMGENERIC_APP_SOURCES)
foreach(_base IN LISTS DOOMGENERIC_SRC_BASENAMES)
list(APPEND DOOMGENERIC_APP_SOURCES "cleonos/third-party/doomgeneric/doomgeneric/${_base}.c")
endforeach()
set(DOOMGENERIC_REQUIRED_SOURCE "${CMAKE_SOURCE_DIR}/cleonos/third-party/doomgeneric/doomgeneric/dummy.c")
if(EXISTS "${DOOMGENERIC_REQUIRED_SOURCE}")
set(DOOMGENERIC_AVAILABLE ON)
else()
set(DOOMGENERIC_AVAILABLE OFF)
cl_log_warn("doomgeneric sources missing, doom app will be skipped: ${DOOMGENERIC_REQUIRED_SOURCE}")
endif()
file(GLOB_RECURSE DOOMGENERIC_DEP_SOURCES_ABS CONFIGURE_DEPENDS
"${CMAKE_SOURCE_DIR}/cleonos/third-party/doomgeneric/doomgeneric/*.h"
"${CMAKE_SOURCE_DIR}/cleonos/c/apps/doom/*.h"
)
list(SORT DOOMGENERIC_DEP_SOURCES_ABS)
set(USER_SHELL_COMMAND_APPS
help args ls cat grep head tail wc cut uniq sort pwd cd exec pid spawn wait sleep yield
bg fg jobs kill ps top
procstat sysstat
shutdown restart exit clear ansi ansitest wavplay fastfetch memstat fsstat taskstat userstat
shstat stats tty dmesg kbdstat mkdir touch write append cp mv rm kdbg bmpview qrcode
)
foreach(SRC IN LISTS USER_APP_MAIN_SOURCES)
get_filename_component(_stem "${SRC}" NAME_WE)
string(REGEX REPLACE "_main$" "" _app_name "${_stem}")
string(TOUPPER "${_app_name}" _app_name_upper)
string(REGEX REPLACE "[^A-Z0-9]" "_" _app_name_key "${_app_name_upper}")
set(_app_enabled_var "CLEONOS_USER_APP_${_app_name_key}")
list(FIND USER_KELF_APP_NAMES "${_app_name}" _shadowed_by_kmain)
if(NOT _shadowed_by_kmain EQUAL -1)
cl_log_info("skip ${SRC} because ${_app_name}_kmain.c exists")
continue()
endif()
if(NOT DEFINED ${_app_enabled_var})
set(${_app_enabled_var} ON CACHE BOOL "Build user app ${_app_name}")
else()
set(${_app_enabled_var} ${${_app_enabled_var}} CACHE BOOL "Build user app ${_app_name}" FORCE)
endif()
if(NOT ${_app_enabled_var})
cl_log_info("menuconfig: skip disabled user app ${_app_name}")
continue()
endif()
if(_app_name STREQUAL "doom" AND NOT DOOMGENERIC_AVAILABLE)
cl_log_warn("skip user app doom because doomgeneric sources are unavailable")
continue()
endif()
list(FIND USER_APP_NAMES "${_app_name}" _dup_name_idx)
if(NOT _dup_name_idx EQUAL -1)
cl_log_error("duplicate user app name: ${_app_name}")
endif()
list(APPEND USER_APP_NAMES "${_app_name}")
add_user_c_object("${SRC}" _user_obj)
set(_app_specific_objs)
file(GLOB _app_specific_abs CONFIGURE_DEPENDS
"${CMAKE_SOURCE_DIR}/cleonos/c/apps/${_app_name}_*.c"
"${CMAKE_SOURCE_DIR}/cleonos/c/apps/${_app_name}/*.c"
)
set(_app_common_objects ${USER_COMMON_OBJECTS})
if(_app_name STREQUAL "doom")
foreach(_doom_src IN LISTS DOOMGENERIC_APP_SOURCES)
list(APPEND _app_specific_abs "${CMAKE_SOURCE_DIR}/${_doom_src}")
endforeach()
endif()
list(FIND USER_SHELL_COMMAND_APPS "${_app_name}" _shell_cmd_idx)
if(NOT _shell_cmd_idx EQUAL -1)
list(APPEND _app_specific_abs "${CMAKE_SOURCE_DIR}/cleonos/c/apps/cmd_runtime.c")
endif()
foreach(_extra_abs IN LISTS _app_specific_abs)
file(RELATIVE_PATH _extra_rel "${CMAKE_SOURCE_DIR}" "${_extra_abs}")
if(_extra_rel STREQUAL "${SRC}")
continue()
endif()
if(_extra_rel MATCHES "_kmain\\.c$")
continue()
endif()
if(_app_name STREQUAL "doom")
add_user_c_object_doom("${_extra_rel}" _extra_obj)
else()
add_user_c_object("${_extra_rel}" _extra_obj)
endif()
list(APPEND _app_specific_objs "${_extra_obj}")
endforeach()
list(REMOVE_DUPLICATES _app_specific_objs)
set(_app_out "${USER_APP_DIR}/${_app_name}.elf")
add_custom_command(
OUTPUT "${_app_out}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${USER_APP_DIR}"
COMMAND ${USER_LD} ${USER_LDFLAGS} -o "${_app_out}" ${_app_common_objects} "${_user_obj}" ${_app_specific_objs} "${USER_RUST_LIB}"
DEPENDS ${_app_common_objects} "${_user_obj}" ${_app_specific_objs} "${USER_RUST_LIB}" "${USER_LINKER_SCRIPT}"
VERBATIM
)
list(APPEND USER_APP_OUTPUTS "${_app_out}")
if(_app_name MATCHES ".*drv$")
list(APPEND RAMDISK_DRIVER_APPS "${_app_out}")
elseif(_app_name STREQUAL "hello")
list(APPEND RAMDISK_ROOT_APPS "${_app_out}")
else()
list(APPEND RAMDISK_SHELL_APPS "${_app_out}")
endif()
endforeach()
foreach(SRC IN LISTS USER_APP_KMAIN_SOURCES)
get_filename_component(_stem "${SRC}" NAME_WE)
string(REGEX REPLACE "_kmain$" "" _app_name "${_stem}")
string(TOUPPER "${_app_name}" _app_name_upper)
string(REGEX REPLACE "[^A-Z0-9]" "_" _app_name_key "${_app_name_upper}")
set(_app_enabled_var "CLEONOS_USER_APP_${_app_name_key}")
if(NOT DEFINED ${_app_enabled_var})
set(${_app_enabled_var} ON CACHE BOOL "Build user app ${_app_name}")
else()
set(${_app_enabled_var} ${${_app_enabled_var}} CACHE BOOL "Build user app ${_app_name}" FORCE)
endif()
if(NOT ${_app_enabled_var})
cl_log_info("menuconfig: skip disabled user app ${_app_name}")
continue()
endif()
list(FIND USER_APP_NAMES "${_app_name}" _dup_name_idx)
if(NOT _dup_name_idx EQUAL -1)
cl_log_error("duplicate user app name: ${_app_name}")
endif()
list(APPEND USER_APP_NAMES "${_app_name}")
add_user_c_object("${SRC}" _kelf_obj)
set(_app_out "${USER_APP_DIR}/${_app_name}.elf")
add_custom_command(
OUTPUT "${_app_out}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${USER_APP_DIR}"
COMMAND ${USER_LD} ${KELF_LDFLAGS} -o "${_app_out}" "${_kelf_obj}"
DEPENDS "${_kelf_obj}" "${KELF_LINKER_SCRIPT}"
VERBATIM
)
list(APPEND USER_APP_OUTPUTS "${_app_out}")
list(APPEND RAMDISK_SYSTEM_APPS "${_app_out}")
endforeach()
if(NOT USER_APP_OUTPUTS)
cl_log_error("no user ELF apps were discovered")
endif()
add_custom_target(userapps DEPENDS ${USER_APP_OUTPUTS})
add_custom_command(
TARGET userapps
POST_BUILD
COMMAND ${CMAKE_COMMAND}
"-DNO_COLOR=${NO_COLOR}"
"-DLOG_LEVEL=INFO"
"-DLOG_TEXT=user elf apps ready"
-P "${CL_LOG_EMIT_SCRIPT}"
)
file(GLOB_RECURSE RAMDISK_FILES CONFIGURE_DEPENDS "${CMAKE_SOURCE_DIR}/ramdisk/*")
set(RAMDISK_ROOT_STAMP "${BUILD_ROOT}/.ramdisk_root.stamp")
set(RAMDISK_COPY_COMMANDS)
foreach(_app IN LISTS RAMDISK_SHELL_APPS)
get_filename_component(_app_file "${_app}" NAME)
list(APPEND RAMDISK_COPY_COMMANDS COMMAND ${CMAKE_COMMAND} -E copy "${_app}" "${RAMDISK_ROOT}/shell/${_app_file}")
endforeach()
foreach(_app IN LISTS RAMDISK_ROOT_APPS)
get_filename_component(_app_file "${_app}" NAME)
list(APPEND RAMDISK_COPY_COMMANDS COMMAND ${CMAKE_COMMAND} -E copy "${_app}" "${RAMDISK_ROOT}/${_app_file}")
endforeach()
foreach(_app IN LISTS RAMDISK_DRIVER_APPS)
get_filename_component(_app_file "${_app}" NAME)
list(APPEND RAMDISK_COPY_COMMANDS COMMAND ${CMAKE_COMMAND} -E copy "${_app}" "${RAMDISK_ROOT}/driver/${_app_file}")
endforeach()
foreach(_app IN LISTS RAMDISK_SYSTEM_APPS)
get_filename_component(_app_file "${_app}" NAME)
list(APPEND RAMDISK_COPY_COMMANDS COMMAND ${CMAKE_COMMAND} -E copy "${_app}" "${RAMDISK_ROOT}/system/${_app_file}")
endforeach()
add_custom_command(
OUTPUT "${RAMDISK_ROOT_STAMP}"
COMMAND ${CMAKE_COMMAND} -E rm -rf "${RAMDISK_ROOT}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${RAMDISK_ROOT}"
COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_SOURCE_DIR}/ramdisk" "${RAMDISK_ROOT}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${RAMDISK_ROOT}/system" "${RAMDISK_ROOT}/shell" "${RAMDISK_ROOT}/driver" "${RAMDISK_ROOT}/dev"
COMMAND ${CMAKE_COMMAND} -E copy "${KERNEL_SYMBOLS_FILE}" "${RAMDISK_ROOT}/system/kernel.sym"
${RAMDISK_COPY_COMMANDS}
COMMAND ${CMAKE_COMMAND} -E touch "${RAMDISK_ROOT_STAMP}"
DEPENDS ${RAMDISK_FILES} ${USER_APP_OUTPUTS} "${KERNEL_SYMBOLS_FILE}"
VERBATIM
)
add_custom_target(ramdisk-root DEPENDS "${RAMDISK_ROOT_STAMP}")
add_dependencies(ramdisk-root userapps)
add_custom_command(
OUTPUT "${RAMDISK_IMAGE}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${BUILD_ROOT}"
COMMAND ${TAR} -C "${RAMDISK_ROOT}" -cf "${RAMDISK_IMAGE}" .
DEPENDS "${RAMDISK_ROOT_STAMP}"
VERBATIM
)
add_custom_target(ramdisk DEPENDS "${RAMDISK_IMAGE}")

View File

@@ -0,0 +1,411 @@
#include "cmd_runtime.h"
#include <stdio.h>
#define USH_BMPVIEW_DEFAULT_COLS 80ULL
#define USH_BMPVIEW_MAX_COLS 160ULL
#define USH_BMPVIEW_MAX_ROWS 120ULL
#define USH_BMPVIEW_MAX_IMAGE_WIDTH 4096ULL
#define USH_BMPVIEW_MAX_IMAGE_HEIGHT 4096ULL
#define USH_BMPVIEW_MAX_ROW_BYTES 16384U
typedef struct ush_bmpview_info {
u64 width;
u64 height;
u64 bytes_per_pixel;
u64 row_stride;
u64 pixel_offset;
int top_down;
} ush_bmpview_info;
static unsigned char ush_bmpview_row_buf[USH_BMPVIEW_MAX_ROW_BYTES];
static char ush_bmpview_render[USH_BMPVIEW_MAX_ROWS][USH_BMPVIEW_MAX_COLS + 1U];
static u64 ush_bmpview_sample_rows[USH_BMPVIEW_MAX_ROWS];
static unsigned int ush_bmpview_le16(const unsigned char *ptr) {
return (unsigned int)ptr[0] | ((unsigned int)ptr[1] << 8U);
}
static unsigned int ush_bmpview_le32(const unsigned char *ptr) {
return (unsigned int)ptr[0] | ((unsigned int)ptr[1] << 8U) | ((unsigned int)ptr[2] << 16U) |
((unsigned int)ptr[3] << 24U);
}
static int ush_bmpview_le32s(const unsigned char *ptr) {
return (int)((unsigned int)ush_bmpview_le32(ptr));
}
static int ush_bmpview_read_exact(u64 fd, unsigned char *out, u64 size) {
u64 done = 0ULL;
if (out == (unsigned char *)0 || size == 0ULL) {
return 0;
}
while (done < size) {
u64 got = cleonos_sys_fd_read(fd, out + done, size - done);
if (got == (u64)-1 || got == 0ULL) {
return 0;
}
done += got;
}
return 1;
}
static int ush_bmpview_skip_bytes(u64 fd, u64 size) {
unsigned char scratch[256];
u64 left = size;
while (left > 0ULL) {
u64 want = left;
u64 got;
if (want > (u64)sizeof(scratch)) {
want = (u64)sizeof(scratch);
}
got = cleonos_sys_fd_read(fd, scratch, want);
if (got == (u64)-1 || got == 0ULL) {
return 0;
}
left -= got;
}
return 1;
}
static int ush_bmpview_parse_header(u64 fd, ush_bmpview_info *out_info) {
unsigned char header[54];
unsigned int dib_size;
int width_s;
int height_s;
unsigned int planes;
unsigned int bits_per_pixel;
unsigned int compression;
u64 width_u;
u64 height_u;
u64 row_stride;
u64 bytes_per_pixel;
if (out_info == (ush_bmpview_info *)0) {
return 0;
}
if (ush_bmpview_read_exact(fd, header, (u64)sizeof(header)) == 0) {
return 0;
}
if (header[0] != (unsigned char)'B' || header[1] != (unsigned char)'M') {
return 0;
}
dib_size = ush_bmpview_le32(&header[14]);
if (dib_size < 40U) {
return 0;
}
width_s = ush_bmpview_le32s(&header[18]);
height_s = ush_bmpview_le32s(&header[22]);
planes = ush_bmpview_le16(&header[26]);
bits_per_pixel = ush_bmpview_le16(&header[28]);
compression = ush_bmpview_le32(&header[30]);
if (planes != 1U) {
return 0;
}
if (width_s <= 0 || height_s == 0) {
return 0;
}
if (bits_per_pixel != 24U && bits_per_pixel != 32U) {
return 0;
}
if (compression != 0U) {
return 0;
}
width_u = (u64)(unsigned int)width_s;
if (height_s < 0) {
i64 signed_h = (i64)height_s;
height_u = (u64)(-signed_h);
out_info->top_down = 1;
} else {
height_u = (u64)(unsigned int)height_s;
out_info->top_down = 0;
}
if (width_u == 0ULL || height_u == 0ULL) {
return 0;
}
if (width_u > USH_BMPVIEW_MAX_IMAGE_WIDTH || height_u > USH_BMPVIEW_MAX_IMAGE_HEIGHT) {
return 0;
}
bytes_per_pixel = (u64)(bits_per_pixel / 8U);
row_stride = (width_u * bytes_per_pixel + 3ULL) & ~3ULL;
if (row_stride == 0ULL || row_stride > (u64)USH_BMPVIEW_MAX_ROW_BYTES) {
return 0;
}
out_info->pixel_offset = (u64)ush_bmpview_le32(&header[10]);
if (out_info->pixel_offset < (u64)sizeof(header)) {
return 0;
}
out_info->width = width_u;
out_info->height = height_u;
out_info->bytes_per_pixel = bytes_per_pixel;
out_info->row_stride = row_stride;
return 1;
}
static char ush_bmpview_luma_char(unsigned int r, unsigned int g, unsigned int b) {
static const char ramp[] = " .:-=+*#%@";
unsigned int luma = (77U * r + 150U * g + 29U * b) >> 8U;
unsigned int idx = (luma * 9U) / 255U;
return ramp[idx];
}
static int ush_bmpview_parse_args(const char *arg, char *out_path, u64 out_path_size, u64 *out_cols) {
char first[USH_PATH_MAX];
char second[32];
const char *rest = "";
const char *rest2 = "";
if (out_path == (char *)0 || out_cols == (u64 *)0 || out_path_size == 0ULL) {
return 0;
}
*out_cols = USH_BMPVIEW_DEFAULT_COLS;
out_path[0] = '\0';
if (arg == (const char *)0 || arg[0] == '\0') {
return 0;
}
if (ush_split_first_and_rest(arg, first, (u64)sizeof(first), &rest) == 0) {
return 0;
}
if (ush_streq(first, "--help") != 0 || ush_streq(first, "-h") != 0) {
return 2;
}
ush_copy(out_path, out_path_size, first);
if (rest != (const char *)0 && rest[0] != '\0') {
if (ush_split_first_and_rest(rest, second, (u64)sizeof(second), &rest2) == 0) {
return 0;
}
if (ush_parse_u64_dec(second, out_cols) == 0 || *out_cols == 0ULL) {
return 0;
}
if (rest2 != (const char *)0 && rest2[0] != '\0') {
return 0;
}
}
return 1;
}
static int ush_cmd_bmpview(const ush_state *sh, const char *arg) {
ush_bmpview_info info;
char path_arg[USH_PATH_MAX];
char abs_path[USH_PATH_MAX];
u64 cols = USH_BMPVIEW_DEFAULT_COLS;
u64 out_w;
u64 out_h;
u64 file_row;
u64 fd;
int parse_ret;
if (sh == (const ush_state *)0) {
return 0;
}
parse_ret = ush_bmpview_parse_args(arg, path_arg, (u64)sizeof(path_arg), &cols);
if (parse_ret == 2) {
ush_writeln("usage: bmpview <file.bmp> [cols]");
ush_writeln("note: supports uncompressed 24/32-bit BMP");
return 1;
}
if (parse_ret == 0) {
ush_writeln("bmpview: usage bmpview <file.bmp> [cols]");
return 0;
}
if (ush_resolve_path(sh, path_arg, abs_path, (u64)sizeof(abs_path)) == 0) {
ush_writeln("bmpview: invalid path");
return 0;
}
if (cleonos_sys_fs_stat_type(abs_path) != 1ULL) {
ush_writeln("bmpview: file not found");
return 0;
}
fd = cleonos_sys_fd_open(abs_path, CLEONOS_O_RDONLY, 0ULL);
if (fd == (u64)-1) {
ush_writeln("bmpview: open failed");
return 0;
}
ush_zero(&info, (u64)sizeof(info));
if (ush_bmpview_parse_header(fd, &info) == 0) {
(void)cleonos_sys_fd_close(fd);
ush_writeln("bmpview: unsupported or invalid bmp");
return 0;
}
if (info.pixel_offset > 54ULL) {
if (ush_bmpview_skip_bytes(fd, info.pixel_offset - 54ULL) == 0) {
(void)cleonos_sys_fd_close(fd);
ush_writeln("bmpview: failed to seek pixel data");
return 0;
}
}
if (cols > USH_BMPVIEW_MAX_COLS) {
cols = USH_BMPVIEW_MAX_COLS;
}
if (cols > info.width) {
cols = info.width;
}
if (cols == 0ULL) {
cols = 1ULL;
}
out_w = cols;
out_h = (info.height * out_w) / (info.width * 2ULL);
if (out_h == 0ULL) {
out_h = 1ULL;
}
if (out_h > USH_BMPVIEW_MAX_ROWS) {
out_h = USH_BMPVIEW_MAX_ROWS;
}
if (out_h > info.height) {
out_h = info.height;
}
{
u64 oy;
u64 ox;
for (oy = 0ULL; oy < out_h; oy++) {
ush_bmpview_sample_rows[oy] = (oy * info.height) / out_h;
for (ox = 0ULL; ox < out_w; ox++) {
ush_bmpview_render[oy][ox] = ' ';
}
ush_bmpview_render[oy][out_w] = '\0';
}
}
for (file_row = 0ULL; file_row < info.height; file_row++) {
u64 display_row;
u64 oy;
if (ush_bmpview_read_exact(fd, ush_bmpview_row_buf, info.row_stride) == 0) {
(void)cleonos_sys_fd_close(fd);
ush_writeln("bmpview: read pixel data failed");
return 0;
}
if (info.top_down != 0) {
display_row = file_row;
} else {
display_row = (info.height - 1ULL) - file_row;
}
for (oy = 0ULL; oy < out_h; oy++) {
u64 ox;
if (ush_bmpview_sample_rows[oy] != display_row) {
continue;
}
for (ox = 0ULL; ox < out_w; ox++) {
u64 src_x = (ox * info.width) / out_w;
u64 pix_off = src_x * info.bytes_per_pixel;
unsigned int b;
unsigned int g;
unsigned int r;
if (pix_off + 2ULL >= info.row_stride) {
ush_bmpview_render[oy][ox] = ' ';
continue;
}
b = (unsigned int)ush_bmpview_row_buf[pix_off + 0ULL];
g = (unsigned int)ush_bmpview_row_buf[pix_off + 1ULL];
r = (unsigned int)ush_bmpview_row_buf[pix_off + 2ULL];
ush_bmpview_render[oy][ox] = ush_bmpview_luma_char(r, g, b);
}
}
}
(void)cleonos_sys_fd_close(fd);
{
u64 oy;
for (oy = 0ULL; oy < out_h; oy++) {
ush_writeln(ush_bmpview_render[oy]);
}
}
return 1;
}
int cleonos_app_main(void) {
ush_cmd_ctx ctx;
ush_cmd_ret ret;
ush_state sh;
char initial_cwd[USH_PATH_MAX];
int has_context = 0;
int success = 0;
const char *arg = "";
ush_zero(&ctx, (u64)sizeof(ctx));
ush_zero(&ret, (u64)sizeof(ret));
ush_init_state(&sh);
ush_copy(initial_cwd, (u64)sizeof(initial_cwd), sh.cwd);
if (ush_command_ctx_read(&ctx) != 0) {
if (ctx.cmd[0] != '\0' && ush_streq(ctx.cmd, "bmpview") != 0) {
has_context = 1;
arg = ctx.arg;
if (ctx.cwd[0] == '/') {
ush_copy(sh.cwd, (u64)sizeof(sh.cwd), ctx.cwd);
ush_copy(initial_cwd, (u64)sizeof(initial_cwd), sh.cwd);
}
}
}
success = ush_cmd_bmpview(&sh, arg);
if (has_context != 0) {
if (ush_streq(sh.cwd, initial_cwd) == 0) {
ret.flags |= USH_CMD_RET_FLAG_CWD;
ush_copy(ret.cwd, (u64)sizeof(ret.cwd), sh.cwd);
}
if (sh.exit_requested != 0) {
ret.flags |= USH_CMD_RET_FLAG_EXIT;
ret.exit_code = sh.exit_code;
}
(void)ush_command_ret_write(&ret);
}
return (success != 0) ? 0 : 1;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,20 @@
#ifndef CLEONOS_DOOM_SHIM_H
#define CLEONOS_DOOM_SHIM_H
/* Redirect stdio-family APIs that clash with cleonos/c/src/stdio.c signatures. */
#define fopen dg_fopen
#define fclose dg_fclose
#define fread dg_fread
#define fwrite dg_fwrite
#define fseek dg_fseek
#define ftell dg_ftell
#define fflush dg_fflush
#define fgets dg_fgets
#define fprintf dg_fprintf
#define vfprintf dg_vfprintf
#define feof dg_feof
#define fileno dg_fileno
#define perror dg_perror
#define sscanf dg_sscanf
#endif

View File

@@ -0,0 +1,200 @@
#include "doomgeneric.h"
#include "doomkeys.h"
#include "../../include/cleonos_syscall.h"
#define CLEONOS_KEY_LEFT 0x01U
#define CLEONOS_KEY_RIGHT 0x02U
#define CLEONOS_KEY_UP 0x03U
#define CLEONOS_KEY_DOWN 0x04U
#define DG_KEY_QUEUE_CAP 256U
struct dg_key_event {
int pressed;
unsigned char key;
};
static struct dg_key_event g_key_queue[DG_KEY_QUEUE_CAP];
static u64 g_key_r = 0ULL;
static u64 g_key_w = 0ULL;
static cleonos_fb_info g_fb_info;
static cleonos_fb_blit_req g_blit_req;
static u64 g_scale = 1ULL;
static u64 g_dst_x = 0ULL;
static u64 g_dst_y = 0ULL;
static void dg_push_key(int pressed, unsigned char key) {
u64 next = (g_key_w + 1ULL) % DG_KEY_QUEUE_CAP;
if (next == g_key_r) {
return;
}
g_key_queue[g_key_w].pressed = pressed;
g_key_queue[g_key_w].key = key;
g_key_w = next;
}
static int dg_pop_key(int *pressed, unsigned char *key) {
if (g_key_r == g_key_w || pressed == (int *)0 || key == (unsigned char *)0) {
return 0;
}
*pressed = g_key_queue[g_key_r].pressed;
*key = g_key_queue[g_key_r].key;
g_key_r = (g_key_r + 1ULL) % DG_KEY_QUEUE_CAP;
return 1;
}
static unsigned char dg_translate_key(u64 code) {
if (code == (u64)CLEONOS_KEY_LEFT) {
return KEY_LEFTARROW;
}
if (code == (u64)CLEONOS_KEY_RIGHT) {
return KEY_RIGHTARROW;
}
if (code == (u64)CLEONOS_KEY_UP) {
return KEY_UPARROW;
}
if (code == (u64)CLEONOS_KEY_DOWN) {
return KEY_DOWNARROW;
}
if (code == (u64)'\r' || code == (u64)'\n') {
return KEY_ENTER;
}
if (code == (u64)8U || code == (u64)127U) {
return KEY_BACKSPACE;
}
if (code == (u64)27U) {
return KEY_ESCAPE;
}
if (code == (u64)'\t') {
return KEY_TAB;
}
if (code >= 32ULL && code <= 126ULL) {
return (unsigned char)(code & 0xFFULL);
}
return 0U;
}
static void dg_poll_keyboard(void) {
for (;;) {
u64 code = cleonos_sys_kbd_get_char();
unsigned char key;
if (code == (u64)-1) {
break;
}
key = dg_translate_key(code);
if (key == 0U) {
continue;
}
dg_push_key(1, key);
dg_push_key(0, key);
}
}
void DG_Init(void) {
u64 sx;
u64 sy;
g_key_r = 0ULL;
g_key_w = 0ULL;
g_fb_info.width = 0ULL;
g_fb_info.height = 0ULL;
g_fb_info.pitch = 0ULL;
g_fb_info.bpp = 0ULL;
if (cleonos_sys_fb_info(&g_fb_info) == 0ULL || g_fb_info.width == 0ULL || g_fb_info.height == 0ULL ||
g_fb_info.bpp != 32ULL) {
return;
}
sx = g_fb_info.width / (u64)DOOMGENERIC_RESX;
sy = g_fb_info.height / (u64)DOOMGENERIC_RESY;
g_scale = (sx < sy) ? sx : sy;
if (g_scale == 0ULL) {
g_scale = 1ULL;
}
if (g_scale > 4ULL) {
g_scale = 4ULL;
}
g_dst_x = (g_fb_info.width > ((u64)DOOMGENERIC_RESX * g_scale))
? ((g_fb_info.width - ((u64)DOOMGENERIC_RESX * g_scale)) / 2ULL)
: 0ULL;
g_dst_y = (g_fb_info.height > ((u64)DOOMGENERIC_RESY * g_scale))
? ((g_fb_info.height - ((u64)DOOMGENERIC_RESY * g_scale)) / 2ULL)
: 0ULL;
g_blit_req.pixels_ptr = 0ULL;
g_blit_req.src_width = (u64)DOOMGENERIC_RESX;
g_blit_req.src_height = (u64)DOOMGENERIC_RESY;
g_blit_req.src_pitch_bytes = (u64)DOOMGENERIC_RESX * 4ULL;
g_blit_req.dst_x = g_dst_x;
g_blit_req.dst_y = g_dst_y;
g_blit_req.scale = g_scale;
(void)cleonos_sys_fb_clear(0x00000000ULL);
}
void DG_DrawFrame(void) {
dg_poll_keyboard();
if (g_fb_info.width == 0ULL || g_fb_info.height == 0ULL || DG_ScreenBuffer == (pixel_t *)0) {
return;
}
g_blit_req.pixels_ptr = (u64)(void *)DG_ScreenBuffer;
(void)cleonos_sys_fb_blit(&g_blit_req);
}
void DG_SleepMs(uint32_t ms) {
u64 ticks = ((u64)ms + 9ULL) / 10ULL;
if (ticks == 0ULL && ms != 0U) {
ticks = 1ULL;
}
if (ticks > 0ULL) {
(void)cleonos_sys_sleep_ticks(ticks);
}
}
uint32_t DG_GetTicksMs(void) {
return (uint32_t)(cleonos_sys_timer_ticks() * 10ULL);
}
int DG_GetKey(int *pressed, unsigned char *key) {
dg_poll_keyboard();
return dg_pop_key(pressed, key);
}
void DG_SetWindowTitle(const char *title) {
(void)title;
}
int cl_doom_run_main(int argc, char **argv) {
doomgeneric_Create(argc, argv);
for (;;) {
doomgeneric_Tick();
}
}

View File

@@ -0,0 +1,81 @@
#include <stdio.h>
#include <string.h>
#include <cleonos_syscall.h>
int cl_doom_run_main(int argc, char **argv);
static const char *cl_doom_pick_default_wad(void) {
static const char *candidates[] = {
"/doom1.wad", "/DOOM1.WAD", "/temp/doom1.wad", "/temp/DOOM1.WAD", "/shell/doom1.wad", "/shell/DOOM1.WAD",
};
u64 i;
for (i = 0ULL; i < (u64)(sizeof(candidates) / sizeof(candidates[0])); i++) {
if (cleonos_sys_fs_stat_size(candidates[i]) != (u64)-1) {
return candidates[i];
}
}
return (const char *)0;
}
int cleonos_app_main(int argc, char **argv, char **envp) {
char *run_argv[32];
int run_argc = 0;
int i;
const char *auto_wad = (const char *)0;
int has_iwad = 0;
(void)envp;
if (argc <= 0 || argv == (char **)0 || argv[0] == (char *)0) {
(void)printf("doom: invalid argv\n");
return 1;
}
for (i = 1; i < argc; i++) {
if (argv[i] != (char *)0 && strcmp(argv[i], "-iwad") == 0) {
has_iwad = 1;
break;
}
}
run_argv[run_argc++] = argv[0];
if (has_iwad == 0) {
if (argc > 1 && argv[1] != (char *)0 && argv[1][0] != '-') {
run_argv[run_argc++] = "-iwad";
run_argv[run_argc++] = argv[1];
for (i = 2; i < argc && run_argc + 1 < (int)(sizeof(run_argv) / sizeof(run_argv[0])); i++) {
run_argv[run_argc++] = argv[i];
}
} else {
auto_wad = cl_doom_pick_default_wad();
if (auto_wad != (const char *)0) {
run_argv[run_argc++] = "-iwad";
run_argv[run_argc++] = (char *)auto_wad;
}
for (i = 1; i < argc && run_argc + 1 < (int)(sizeof(run_argv) / sizeof(run_argv[0])); i++) {
run_argv[run_argc++] = argv[i];
}
}
} else {
for (i = 1; i < argc && run_argc + 1 < (int)(sizeof(run_argv) / sizeof(run_argv[0])); i++) {
run_argv[run_argc++] = argv[i];
}
}
run_argv[run_argc] = (char *)0;
if (has_iwad == 0 && auto_wad == (const char *)0 && (argc <= 1 || argv[1] == (char *)0 || argv[1][0] == '-')) {
(void)printf("doom: no WAD provided\n");
(void)printf("doom: usage: doom /doom1.wad\n");
(void)printf("doom: or: doom -iwad /doom1.wad\n");
return 1;
}
(void)printf("doom: launching doomgeneric\n");
return cl_doom_run_main(run_argc, run_argv);
}

View File

@@ -1,4 +1,5 @@
#include "cmd_runtime.h" #include "cmd_runtime.h"
#include <cleonos_version.h>
static u64 ush_fastfetch_u64_to_dec(char *out, u64 out_size, u64 value) { static u64 ush_fastfetch_u64_to_dec(char *out, u64 out_size, u64 value) {
char rev[32]; char rev[32];
u64 digits = 0ULL; u64 digits = 0ULL;
@@ -115,6 +116,7 @@ static int ush_cmd_fastfetch(const char *arg) {
u64 tty_count; u64 tty_count;
u64 exec_req; u64 exec_req;
u64 exec_ok; u64 exec_ok;
char kernel_version[32];
if (arg != (const char *)0 && arg[0] != '\0') { if (arg != (const char *)0 && arg[0] != '\0') {
if (ush_streq(arg, "--plain") != 0) { if (ush_streq(arg, "--plain") != 0) {
@@ -132,12 +134,17 @@ static int ush_cmd_fastfetch(const char *arg) {
tty_count = cleonos_sys_tty_count(); tty_count = cleonos_sys_tty_count();
exec_req = cleonos_sys_exec_request_count(); exec_req = cleonos_sys_exec_request_count();
exec_ok = cleonos_sys_exec_success_count(); exec_ok = cleonos_sys_exec_success_count();
if (cleonos_sys_kernel_version(kernel_version, (u64)sizeof(kernel_version)) == 0ULL) {
ush_copy(kernel_version, (u64)sizeof(kernel_version), "unknown");
}
ush_fastfetch_print_logo(plain); ush_fastfetch_print_logo(plain);
ush_write_char('\n'); ush_write_char('\n');
ush_fastfetch_print_text(plain, "OS", "CLeonOS x86_64"); ush_fastfetch_print_text(plain, "OS", "CLeonOS x86_64");
ush_fastfetch_print_text(plain, "Shell", "User Shell (/shell/shell.elf)"); ush_fastfetch_print_text(plain, "Shell", "User Shell (/shell/shell.elf)");
ush_fastfetch_print_text(plain, "CLeonOSVersion", CLEONOS_VERSION_STRING);
ush_fastfetch_print_text(plain, "CLKSVersion", kernel_version);
ush_fastfetch_print_u64(plain, "PID", cleonos_sys_getpid()); ush_fastfetch_print_u64(plain, "PID", cleonos_sys_getpid());
ush_fastfetch_print_u64(plain, "UptimeTicks", cleonos_sys_timer_ticks()); ush_fastfetch_print_u64(plain, "UptimeTicks", cleonos_sys_timer_ticks());
ush_fastfetch_print_u64(plain, "Tasks", cleonos_sys_task_count()); ush_fastfetch_print_u64(plain, "Tasks", cleonos_sys_task_count());

View File

@@ -13,8 +13,11 @@ static int ush_cmd_help(void) {
ush_writeln(" exec|run <path|name> [args...]"); ush_writeln(" exec|run <path|name> [args...]");
ush_writeln(" clear"); ush_writeln(" clear");
ush_writeln(" ansi / ansitest / color"); ush_writeln(" ansi / ansitest / color");
ush_writeln(" bmpview <file.bmp> [cols]");
ush_writeln(" qrcode [--ecc <L|M|Q|H>] <text>");
ush_writeln(" wavplay <file.wav> [steps] [ticks] / wavplay --stop"); ush_writeln(" wavplay <file.wav> [steps] [ticks] / wavplay --stop");
ush_writeln(" fastfetch [--plain]"); ush_writeln(" fastfetch [--plain]");
ush_writeln(" doom [wad_path] (framebuffer bootstrap renderer)");
ush_writeln(" memstat / fsstat / taskstat / userstat / shstat / stats"); ush_writeln(" memstat / fsstat / taskstat / userstat / shstat / stats");
ush_writeln(" tty [index]"); ush_writeln(" tty [index]");
ush_writeln(" dmesg [n]"); ush_writeln(" dmesg [n]");

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,363 @@
/*
* QR Code generator library (C)
*
* Copyright (c) Project Nayuki. (MIT License)
* https://www.nayuki.io/page/qr-code-generator-library
*
* 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.
*/
#pragma once
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
/*
* This library creates QR Code symbols, which is a type of two-dimension barcode.
* Invented by Denso Wave and described in the ISO/IEC 18004 standard.
* A QR Code structure is an immutable square grid of dark and light cells.
* The library provides functions to create a QR Code from text or binary data.
* The library covers the QR Code Model 2 specification, supporting all versions (sizes)
* from 1 to 40, all 4 error correction levels, and 4 character encoding modes.
*
* Ways to create a QR Code object:
* - High level: Take the payload data and call qrcodegen_encodeText() or qrcodegen_encodeBinary().
* - Low level: Custom-make the list of segments and call
* qrcodegen_encodeSegments() or qrcodegen_encodeSegmentsAdvanced().
* (Note that all ways require supplying the desired error correction level and various byte buffers.)
*/
/*---- Enum and struct types----*/
/*
* The error correction level in a QR Code symbol.
*/
enum qrcodegen_Ecc {
// Must be declared in ascending order of error protection
// so that an internal qrcodegen function works properly
qrcodegen_Ecc_LOW = 0, // The QR Code can tolerate about 7% erroneous codewords
qrcodegen_Ecc_MEDIUM, // The QR Code can tolerate about 15% erroneous codewords
qrcodegen_Ecc_QUARTILE, // The QR Code can tolerate about 25% erroneous codewords
qrcodegen_Ecc_HIGH, // The QR Code can tolerate about 30% erroneous codewords
};
/*
* The mask pattern used in a QR Code symbol.
*/
enum qrcodegen_Mask {
// A special value to tell the QR Code encoder to
// automatically select an appropriate mask pattern
qrcodegen_Mask_AUTO = -1,
// The eight actual mask patterns
qrcodegen_Mask_0 = 0,
qrcodegen_Mask_1,
qrcodegen_Mask_2,
qrcodegen_Mask_3,
qrcodegen_Mask_4,
qrcodegen_Mask_5,
qrcodegen_Mask_6,
qrcodegen_Mask_7,
};
/*
* Describes how a segment's data bits are interpreted.
*/
enum qrcodegen_Mode {
qrcodegen_Mode_NUMERIC = 0x1,
qrcodegen_Mode_ALPHANUMERIC = 0x2,
qrcodegen_Mode_BYTE = 0x4,
qrcodegen_Mode_KANJI = 0x8,
qrcodegen_Mode_ECI = 0x7,
};
/*
* A segment of character/binary/control data in a QR Code symbol.
* The mid-level way to create a segment is to take the payload data
* and call a factory function such as qrcodegen_makeNumeric().
* The low-level way to create a segment is to custom-make the bit buffer
* and initialize a qrcodegen_Segment struct with appropriate values.
* Even in the most favorable conditions, a QR Code can only hold 7089 characters of data.
* Any segment longer than this is meaningless for the purpose of generating QR Codes.
* Moreover, the maximum allowed bit length is 32767 because
* the largest QR Code (version 40) has 31329 modules.
*/
struct qrcodegen_Segment {
// The mode indicator of this segment.
enum qrcodegen_Mode mode;
// The length of this segment's unencoded data. Measured in characters for
// numeric/alphanumeric/kanji mode, bytes for byte mode, and 0 for ECI mode.
// Always zero or positive. Not the same as the data's bit length.
int numChars;
// The data bits of this segment, packed in bitwise big endian.
// Can be null if the bit length is zero.
uint8_t *data;
// The number of valid data bits used in the buffer. Requires
// 0 <= bitLength <= 32767, and bitLength <= (capacity of data array) * 8.
// The character count (numChars) must agree with the mode and the bit buffer length.
int bitLength;
};
/*---- Macro constants and functions ----*/
#define qrcodegen_VERSION_MIN 1 // The minimum version number supported in the QR Code Model 2 standard
#define qrcodegen_VERSION_MAX 40 // The maximum version number supported in the QR Code Model 2 standard
// Calculates the number of bytes needed to store any QR Code up to and including the given version number,
// as a compile-time constant. For example, 'uint8_t buffer[qrcodegen_BUFFER_LEN_FOR_VERSION(25)];'
// can store any single QR Code from version 1 to 25 (inclusive). The result fits in an int (or int16).
// Requires qrcodegen_VERSION_MIN <= n <= qrcodegen_VERSION_MAX.
#define qrcodegen_BUFFER_LEN_FOR_VERSION(n) ((((n) * 4 + 17) * ((n) * 4 + 17) + 7) / 8 + 1)
// The worst-case number of bytes needed to store one QR Code, up to and including
// version 40. This value equals 3918, which is just under 4 kilobytes.
// Use this more convenient value to avoid calculating tighter memory bounds for buffers.
#define qrcodegen_BUFFER_LEN_MAX qrcodegen_BUFFER_LEN_FOR_VERSION(qrcodegen_VERSION_MAX)
/*---- Functions (high level) to generate QR Codes ----*/
/*
* Encodes the given text string to a QR Code, returning true if successful.
* If the data is too long to fit in any version in the given range
* at the given ECC level, then false is returned.
*
* The input text must be encoded in UTF-8 and contain no NULs.
* Requires 1 <= minVersion <= maxVersion <= 40.
*
* The smallest possible QR Code version within the given range is automatically
* chosen for the output. Iff boostEcl is true, then the ECC level of the result
* may be higher than the ecl argument if it can be done without increasing the
* version. The mask is either between qrcodegen_Mask_0 to 7 to force that mask, or
* qrcodegen_Mask_AUTO to automatically choose an appropriate mask (which may be slow).
*
* About the arrays, letting len = qrcodegen_BUFFER_LEN_FOR_VERSION(maxVersion):
* - Before calling the function:
* - The array ranges tempBuffer[0 : len] and qrcode[0 : len] must allow
* reading and writing; hence each array must have a length of at least len.
* - The two ranges must not overlap (aliasing).
* - The initial state of both ranges can be uninitialized
* because the function always writes before reading.
* - After the function returns:
* - Both ranges have no guarantee on which elements are initialized and what values are stored.
* - tempBuffer contains no useful data and should be treated as entirely uninitialized.
* - If successful, qrcode can be passed into qrcodegen_getSize() and qrcodegen_getModule().
*
* If successful, the resulting QR Code may use numeric,
* alphanumeric, or byte mode to encode the text.
*
* In the most optimistic case, a QR Code at version 40 with low ECC
* can hold any UTF-8 string up to 2953 bytes, or any alphanumeric string
* up to 4296 characters, or any digit string up to 7089 characters.
* These numbers represent the hard upper limit of the QR Code standard.
*
* Please consult the QR Code specification for information on
* data capacities per version, ECC level, and text encoding mode.
*/
bool qrcodegen_encodeText(const char *text, uint8_t tempBuffer[], uint8_t qrcode[], enum qrcodegen_Ecc ecl,
int minVersion, int maxVersion, enum qrcodegen_Mask mask, bool boostEcl);
/*
* Encodes the given binary data to a QR Code, returning true if successful.
* If the data is too long to fit in any version in the given range
* at the given ECC level, then false is returned.
*
* Requires 1 <= minVersion <= maxVersion <= 40.
*
* The smallest possible QR Code version within the given range is automatically
* chosen for the output. Iff boostEcl is true, then the ECC level of the result
* may be higher than the ecl argument if it can be done without increasing the
* version. The mask is either between qrcodegen_Mask_0 to 7 to force that mask, or
* qrcodegen_Mask_AUTO to automatically choose an appropriate mask (which may be slow).
*
* About the arrays, letting len = qrcodegen_BUFFER_LEN_FOR_VERSION(maxVersion):
* - Before calling the function:
* - The array ranges dataAndTemp[0 : len] and qrcode[0 : len] must allow
* reading and writing; hence each array must have a length of at least len.
* - The two ranges must not overlap (aliasing).
* - The input array range dataAndTemp[0 : dataLen] should normally be
* valid UTF-8 text, but is not required by the QR Code standard.
* - The initial state of dataAndTemp[dataLen : len] and qrcode[0 : len]
* can be uninitialized because the function always writes before reading.
* - After the function returns:
* - Both ranges have no guarantee on which elements are initialized and what values are stored.
* - dataAndTemp contains no useful data and should be treated as entirely uninitialized.
* - If successful, qrcode can be passed into qrcodegen_getSize() and qrcodegen_getModule().
*
* If successful, the resulting QR Code will use byte mode to encode the data.
*
* In the most optimistic case, a QR Code at version 40 with low ECC can hold any byte
* sequence up to length 2953. This is the hard upper limit of the QR Code standard.
*
* Please consult the QR Code specification for information on
* data capacities per version, ECC level, and text encoding mode.
*/
bool qrcodegen_encodeBinary(uint8_t dataAndTemp[], size_t dataLen, uint8_t qrcode[], enum qrcodegen_Ecc ecl,
int minVersion, int maxVersion, enum qrcodegen_Mask mask, bool boostEcl);
/*---- Functions (low level) to generate QR Codes ----*/
/*
* Encodes the given segments to a QR Code, returning true if successful.
* If the data is too long to fit in any version at the given ECC level,
* then false is returned.
*
* The smallest possible QR Code version is automatically chosen for
* the output. The ECC level of the result may be higher than the
* ecl argument if it can be done without increasing the version.
*
* About the byte arrays, letting len = qrcodegen_BUFFER_LEN_FOR_VERSION(qrcodegen_VERSION_MAX):
* - Before calling the function:
* - The array ranges tempBuffer[0 : len] and qrcode[0 : len] must allow
* reading and writing; hence each array must have a length of at least len.
* - The two ranges must not overlap (aliasing).
* - The initial state of both ranges can be uninitialized
* because the function always writes before reading.
* - The input array segs can contain segments whose data buffers overlap with tempBuffer.
* - After the function returns:
* - Both ranges have no guarantee on which elements are initialized and what values are stored.
* - tempBuffer contains no useful data and should be treated as entirely uninitialized.
* - Any segment whose data buffer overlaps with tempBuffer[0 : len]
* must be treated as having invalid values in that array.
* - If successful, qrcode can be passed into qrcodegen_getSize() and qrcodegen_getModule().
*
* Please consult the QR Code specification for information on
* data capacities per version, ECC level, and text encoding mode.
*
* This function allows the user to create a custom sequence of segments that switches
* between modes (such as alphanumeric and byte) to encode text in less space.
* This is a low-level API; the high-level API is qrcodegen_encodeText() and qrcodegen_encodeBinary().
*/
bool qrcodegen_encodeSegments(const struct qrcodegen_Segment segs[], size_t len, enum qrcodegen_Ecc ecl,
uint8_t tempBuffer[], uint8_t qrcode[]);
/*
* Encodes the given segments to a QR Code, returning true if successful.
* If the data is too long to fit in any version in the given range
* at the given ECC level, then false is returned.
*
* Requires 1 <= minVersion <= maxVersion <= 40.
*
* The smallest possible QR Code version within the given range is automatically
* chosen for the output. Iff boostEcl is true, then the ECC level of the result
* may be higher than the ecl argument if it can be done without increasing the
* version. The mask is either between qrcodegen_Mask_0 to 7 to force that mask, or
* qrcodegen_Mask_AUTO to automatically choose an appropriate mask (which may be slow).
*
* About the byte arrays, letting len = qrcodegen_BUFFER_LEN_FOR_VERSION(qrcodegen_VERSION_MAX):
* - Before calling the function:
* - The array ranges tempBuffer[0 : len] and qrcode[0 : len] must allow
* reading and writing; hence each array must have a length of at least len.
* - The two ranges must not overlap (aliasing).
* - The initial state of both ranges can be uninitialized
* because the function always writes before reading.
* - The input array segs can contain segments whose data buffers overlap with tempBuffer.
* - After the function returns:
* - Both ranges have no guarantee on which elements are initialized and what values are stored.
* - tempBuffer contains no useful data and should be treated as entirely uninitialized.
* - Any segment whose data buffer overlaps with tempBuffer[0 : len]
* must be treated as having invalid values in that array.
* - If successful, qrcode can be passed into qrcodegen_getSize() and qrcodegen_getModule().
*
* Please consult the QR Code specification for information on
* data capacities per version, ECC level, and text encoding mode.
*
* This function allows the user to create a custom sequence of segments that switches
* between modes (such as alphanumeric and byte) to encode text in less space.
* This is a low-level API; the high-level API is qrcodegen_encodeText() and qrcodegen_encodeBinary().
*/
bool qrcodegen_encodeSegmentsAdvanced(const struct qrcodegen_Segment segs[], size_t len, enum qrcodegen_Ecc ecl,
int minVersion, int maxVersion, enum qrcodegen_Mask mask, bool boostEcl,
uint8_t tempBuffer[], uint8_t qrcode[]);
/*
* Tests whether the given string can be encoded as a segment in numeric mode.
* A string is encodable iff each character is in the range 0 to 9.
*/
bool qrcodegen_isNumeric(const char *text);
/*
* Tests whether the given string can be encoded as a segment in alphanumeric mode.
* A string is encodable iff each character is in the following set: 0 to 9, A to Z
* (uppercase only), space, dollar, percent, asterisk, plus, hyphen, period, slash, colon.
*/
bool qrcodegen_isAlphanumeric(const char *text);
/*
* Returns the number of bytes (uint8_t) needed for the data buffer of a segment
* containing the given number of characters using the given mode. Notes:
* - Returns SIZE_MAX on failure, i.e. numChars > INT16_MAX or the internal
* calculation of the number of needed bits exceeds INT16_MAX (i.e. 32767).
* - Otherwise, all valid results are in the range [0, ceil(INT16_MAX / 8)], i.e. at most 4096.
* - It is okay for the user to allocate more bytes for the buffer than needed.
* - For byte mode, numChars measures the number of bytes, not Unicode code points.
* - For ECI mode, numChars must be 0, and the worst-case number of bytes is returned.
* An actual ECI segment can have shorter data. For non-ECI modes, the result is exact.
*/
size_t qrcodegen_calcSegmentBufferSize(enum qrcodegen_Mode mode, size_t numChars);
/*
* Returns a segment representing the given binary data encoded in
* byte mode. All input byte arrays are acceptable. Any text string
* can be converted to UTF-8 bytes and encoded as a byte mode segment.
*/
struct qrcodegen_Segment qrcodegen_makeBytes(const uint8_t data[], size_t len, uint8_t buf[]);
/*
* Returns a segment representing the given string of decimal digits encoded in numeric mode.
*/
struct qrcodegen_Segment qrcodegen_makeNumeric(const char *digits, uint8_t buf[]);
/*
* Returns a segment representing the given text string encoded in alphanumeric mode.
* The characters allowed are: 0 to 9, A to Z (uppercase only), space,
* dollar, percent, asterisk, plus, hyphen, period, slash, colon.
*/
struct qrcodegen_Segment qrcodegen_makeAlphanumeric(const char *text, uint8_t buf[]);
/*
* Returns a segment representing an Extended Channel Interpretation
* (ECI) designator with the given assignment value.
*/
struct qrcodegen_Segment qrcodegen_makeEci(long assignVal, uint8_t buf[]);
/*---- Functions to extract raw data from QR Codes ----*/
/*
* Returns the side length of the given QR Code, assuming that encoding succeeded.
* The result is in the range [21, 177]. Note that the length of the array buffer
* is related to the side length - every 'uint8_t qrcode[]' must have length at least
* qrcodegen_BUFFER_LEN_FOR_VERSION(version), which equals ceil(size^2 / 8 + 1).
*/
int qrcodegen_getSize(const uint8_t qrcode[]);
/*
* Returns the color of the module (pixel) at the given coordinates, which is false
* for light or true for dark. The top left corner has the coordinates (x=0, y=0).
* If the given coordinates are out of bounds, then false (light) is returned.
*/
bool qrcodegen_getModule(const uint8_t qrcode[], int x, int y);
#ifdef __cplusplus
}
#endif

View File

@@ -0,0 +1,383 @@
#include "cmd_runtime.h"
#include "qrcode/qrcodegen.h"
#define USH_QRCODE_MAX_TEXT 640U
#define USH_QRCODE_MAX_VERSION 15
#define USH_QRCODE_BORDER 4U
#define USH_QRCODE_MAX_MODULES ((USH_QRCODE_MAX_VERSION * 4U) + 17U + (USH_QRCODE_BORDER * 2U))
#define USH_QRCODE_CANVAS_MAX 1024U
#define USH_QRCODE_COLOR_DARK 0x00000000ULL
#define USH_QRCODE_COLOR_LIGHT 0x00FFFFFFULL
static unsigned int ush_qrcode_canvas[USH_QRCODE_CANVAS_MAX][USH_QRCODE_CANVAS_MAX];
static int ush_qrcode_streq_ignore_case(const char *left, const char *right) {
u64 i = 0ULL;
if (left == (const char *)0 || right == (const char *)0) {
return 0;
}
while (left[i] != '\0' && right[i] != '\0') {
char lc = left[i];
char rc = right[i];
if (lc >= 'a' && lc <= 'z') {
lc = (char)(lc - ('a' - 'A'));
}
if (rc >= 'a' && rc <= 'z') {
rc = (char)(rc - ('a' - 'A'));
}
if (lc != rc) {
return 0;
}
i++;
}
return (left[i] == '\0' && right[i] == '\0') ? 1 : 0;
}
static int ush_qrcode_parse_ecc(const char *text, enum qrcodegen_Ecc *out_ecc) {
if (text == (const char *)0 || out_ecc == (enum qrcodegen_Ecc *)0) {
return 0;
}
if (ush_qrcode_streq_ignore_case(text, "L") != 0 || ush_qrcode_streq_ignore_case(text, "LOW") != 0) {
*out_ecc = qrcodegen_Ecc_LOW;
return 1;
}
if (ush_qrcode_streq_ignore_case(text, "M") != 0 || ush_qrcode_streq_ignore_case(text, "MEDIUM") != 0) {
*out_ecc = qrcodegen_Ecc_MEDIUM;
return 1;
}
if (ush_qrcode_streq_ignore_case(text, "Q") != 0 || ush_qrcode_streq_ignore_case(text, "QUARTILE") != 0) {
*out_ecc = qrcodegen_Ecc_QUARTILE;
return 1;
}
if (ush_qrcode_streq_ignore_case(text, "H") != 0 || ush_qrcode_streq_ignore_case(text, "HIGH") != 0) {
*out_ecc = qrcodegen_Ecc_HIGH;
return 1;
}
return 0;
}
static void ush_qrcode_usage(void) {
ush_writeln("usage: qrcode [--ecc <L|M|Q|H>] <text>");
ush_writeln(" qrcode --help");
ush_writeln("note: pipeline input supported when <text> omitted");
}
/* return: 0 fail, 1 ok, 2 help */
static int ush_qrcode_parse_args(const char *arg, char *out_text, u64 out_text_size, enum qrcodegen_Ecc *out_ecc) {
char first[USH_PATH_MAX];
char second[USH_PATH_MAX];
const char *rest = "";
const char *rest2 = "";
if (out_text == (char *)0 || out_text_size == 0ULL || out_ecc == (enum qrcodegen_Ecc *)0) {
return 0;
}
*out_ecc = qrcodegen_Ecc_LOW;
out_text[0] = '\0';
if (arg == (const char *)0 || arg[0] == '\0') {
if (ush_pipeline_stdin_text != (const char *)0 && ush_pipeline_stdin_text[0] != '\0') {
if (ush_pipeline_stdin_len + 1ULL > out_text_size) {
return 0;
}
ush_copy(out_text, out_text_size, ush_pipeline_stdin_text);
return 1;
}
return 0;
}
if (ush_split_first_and_rest(arg, first, (u64)sizeof(first), &rest) == 0) {
return 0;
}
if (ush_streq(first, "--help") != 0 || ush_streq(first, "-h") != 0) {
return 2;
}
if (ush_streq(first, "--ecc") != 0) {
if (ush_split_first_and_rest(rest, second, (u64)sizeof(second), &rest2) == 0) {
return 0;
}
if (ush_qrcode_parse_ecc(second, out_ecc) == 0) {
return 0;
}
if (rest2 == (const char *)0 || rest2[0] == '\0') {
if (ush_pipeline_stdin_text != (const char *)0 && ush_pipeline_stdin_text[0] != '\0') {
if (ush_pipeline_stdin_len + 1ULL > out_text_size) {
return 0;
}
ush_copy(out_text, out_text_size, ush_pipeline_stdin_text);
return 1;
}
return 0;
}
ush_copy(out_text, out_text_size, rest2);
return 1;
}
if (first[0] == '-' && first[1] == '-') {
const char *prefix = "--ecc=";
u64 i = 0ULL;
int match = 1;
while (prefix[i] != '\0') {
if (first[i] != prefix[i]) {
match = 0;
break;
}
i++;
}
if (match != 0) {
if (first[i] == '\0') {
return 0;
}
if (ush_qrcode_parse_ecc(&first[i], out_ecc) == 0) {
return 0;
}
if (rest == (const char *)0 || rest[0] == '\0') {
if (ush_pipeline_stdin_text != (const char *)0 && ush_pipeline_stdin_text[0] != '\0') {
if (ush_pipeline_stdin_len + 1ULL > out_text_size) {
return 0;
}
ush_copy(out_text, out_text_size, ush_pipeline_stdin_text);
return 1;
}
return 0;
}
ush_copy(out_text, out_text_size, rest);
return 1;
}
}
ush_copy(out_text, out_text_size, arg);
return 1;
}
static void ush_qrcode_emit_ascii(const uint8_t qrcode[]) {
int size = qrcodegen_getSize(qrcode);
int border = (int)USH_QRCODE_BORDER;
int limit;
int y;
int x;
limit = size + border;
for (y = -border; y < limit; y++) {
for (x = -border; x < limit; x++) {
int dark = (x >= 0 && y >= 0 && x < size && y < size && qrcodegen_getModule(qrcode, x, y)) ? 1 : 0;
ush_write(dark != 0 ? "##" : " ");
}
ush_write_char('\n');
}
}
static int ush_qrcode_build_canvas(const uint8_t qrcode[], u64 module_pixels, u64 *out_side_pixels) {
int qr_size = qrcodegen_getSize(qrcode);
u64 side_modules;
u64 side_pixels;
u64 y;
u64 x;
if (out_side_pixels == (u64 *)0 || module_pixels == 0ULL || qr_size <= 0) {
return 0;
}
side_modules = (u64)qr_size + (u64)(USH_QRCODE_BORDER * 2U);
if (side_modules == 0ULL || side_modules > (u64)USH_QRCODE_MAX_MODULES) {
return 0;
}
side_pixels = side_modules * module_pixels;
if (side_pixels == 0ULL || side_pixels > (u64)USH_QRCODE_CANVAS_MAX) {
return 0;
}
for (y = 0ULL; y < side_pixels; y++) {
for (x = 0ULL; x < side_pixels; x++) {
int qx = (int)(x / module_pixels) - (int)USH_QRCODE_BORDER;
int qy = (int)(y / module_pixels) - (int)USH_QRCODE_BORDER;
int dark =
(qx >= 0 && qy >= 0 && qx < qr_size && qy < qr_size && qrcodegen_getModule(qrcode, qx, qy)) ? 1 : 0;
ush_qrcode_canvas[y][x] =
(dark != 0) ? (unsigned int)USH_QRCODE_COLOR_DARK : (unsigned int)USH_QRCODE_COLOR_LIGHT;
}
}
*out_side_pixels = side_pixels;
return 1;
}
static int ush_qrcode_emit_pixels(const uint8_t qrcode[]) {
int qr_size = qrcodegen_getSize(qrcode);
u64 side_modules;
cleonos_fb_info fb_info;
cleonos_fb_blit_req req;
u64 module_pixels_x;
u64 module_pixels_y;
u64 module_pixels;
u64 module_pixels_canvas_cap;
u64 side_pixels = 0ULL;
u64 draw_w;
u64 draw_h;
if (qr_size <= 0) {
return 0;
}
side_modules = (u64)qr_size + (u64)(USH_QRCODE_BORDER * 2U);
if (side_modules == 0ULL || side_modules > (u64)USH_QRCODE_MAX_MODULES) {
return 0;
}
ush_zero(&fb_info, (u64)sizeof(fb_info));
if (cleonos_sys_fb_info(&fb_info) == 0ULL || fb_info.width == 0ULL || fb_info.height == 0ULL ||
fb_info.bpp != 32ULL) {
ush_writeln("qrcode: framebuffer unavailable, fallback to ascii");
ush_qrcode_emit_ascii(qrcode);
return 1;
}
module_pixels_x = fb_info.width / side_modules;
module_pixels_y = fb_info.height / side_modules;
module_pixels = (module_pixels_x < module_pixels_y) ? module_pixels_x : module_pixels_y;
if (module_pixels == 0ULL) {
ush_writeln("qrcode: framebuffer too small");
return 0;
}
module_pixels_canvas_cap = (u64)USH_QRCODE_CANVAS_MAX / side_modules;
if (module_pixels_canvas_cap == 0ULL) {
return 0;
}
if (module_pixels > module_pixels_canvas_cap) {
module_pixels = module_pixels_canvas_cap;
}
if (ush_qrcode_build_canvas(qrcode, module_pixels, &side_pixels) == 0) {
return 0;
}
draw_w = side_pixels;
draw_h = side_pixels;
req.pixels_ptr = (u64)(void *)&ush_qrcode_canvas[0][0];
req.src_width = side_pixels;
req.src_height = side_pixels;
req.src_pitch_bytes = (u64)USH_QRCODE_CANVAS_MAX * 4ULL;
req.dst_x = (fb_info.width > draw_w) ? ((fb_info.width - draw_w) / 2ULL) : 0ULL;
req.dst_y = (fb_info.height > draw_h) ? ((fb_info.height - draw_h) / 2ULL) : 0ULL;
req.scale = 1ULL;
(void)cleonos_sys_fb_clear(USH_QRCODE_COLOR_LIGHT);
if (cleonos_sys_fb_blit(&req) == 0ULL) {
ush_writeln("qrcode: framebuffer blit failed");
return 0;
}
return 1;
}
static int ush_cmd_qrcode(const char *arg) {
char text[USH_QRCODE_MAX_TEXT];
enum qrcodegen_Ecc ecc;
uint8_t qrcode[qrcodegen_BUFFER_LEN_FOR_VERSION(USH_QRCODE_MAX_VERSION)];
uint8_t temp[qrcodegen_BUFFER_LEN_FOR_VERSION(USH_QRCODE_MAX_VERSION)];
int parse_ret;
int ok;
parse_ret = ush_qrcode_parse_args(arg, text, (u64)sizeof(text), &ecc);
if (parse_ret == 2) {
ush_qrcode_usage();
return 1;
}
if (parse_ret == 0 || text[0] == '\0') {
ush_qrcode_usage();
return 0;
}
ok = qrcodegen_encodeText(text, temp, qrcode, ecc, qrcodegen_VERSION_MIN, USH_QRCODE_MAX_VERSION,
qrcodegen_Mask_AUTO, true);
if (ok == 0) {
ush_writeln("qrcode: encode failed (input too long or invalid)");
return 0;
}
return ush_qrcode_emit_pixels(qrcode);
}
int cleonos_app_main(void) {
ush_cmd_ctx ctx;
ush_cmd_ret ret;
ush_state sh;
char initial_cwd[USH_PATH_MAX];
int has_context = 0;
int success = 0;
const char *arg = "";
ush_zero(&ctx, (u64)sizeof(ctx));
ush_zero(&ret, (u64)sizeof(ret));
ush_init_state(&sh);
ush_copy(initial_cwd, (u64)sizeof(initial_cwd), sh.cwd);
if (ush_command_ctx_read(&ctx) != 0) {
if (ctx.cmd[0] != '\0' && ush_streq(ctx.cmd, "qrcode") != 0) {
has_context = 1;
arg = ctx.arg;
if (ctx.cwd[0] == '/') {
ush_copy(sh.cwd, (u64)sizeof(sh.cwd), ctx.cwd);
ush_copy(initial_cwd, (u64)sizeof(initial_cwd), sh.cwd);
}
}
}
success = ush_cmd_qrcode(arg);
if (has_context != 0) {
if (ush_streq(sh.cwd, initial_cwd) == 0) {
ret.flags |= USH_CMD_RET_FLAG_CWD;
ush_copy(ret.cwd, (u64)sizeof(ret.cwd), sh.cwd);
}
if (sh.exit_requested != 0) {
ret.flags |= USH_CMD_RET_FLAG_EXIT;
ret.exit_code = sh.exit_code;
}
(void)ush_command_ret_write(&ret);
}
return (success != 0) ? 0 : 1;
}

View File

@@ -135,8 +135,11 @@ static int ush_cmd_help(void) {
ush_writeln(" exec|run <path|name> [args...]"); ush_writeln(" exec|run <path|name> [args...]");
ush_writeln(" clear"); ush_writeln(" clear");
ush_writeln(" ansi / ansitest / color"); ush_writeln(" ansi / ansitest / color");
ush_writeln(" bmpview <file.bmp> [cols]");
ush_writeln(" qrcode [--ecc <L|M|Q|H>] <text>");
ush_writeln(" wavplay <file.wav> [steps] [ticks] / wavplay --stop"); ush_writeln(" wavplay <file.wav> [steps] [ticks] / wavplay --stop");
ush_writeln(" fastfetch [--plain]"); ush_writeln(" fastfetch [--plain]");
ush_writeln(" doom [wad_path] (framebuffer bootstrap renderer)");
ush_writeln(" memstat / fsstat / taskstat / userstat / shstat / stats"); ush_writeln(" memstat / fsstat / taskstat / userstat / shstat / stats");
ush_writeln(" tty [index]"); ush_writeln(" tty [index]");
ush_writeln(" dmesg [n]"); ush_writeln(" dmesg [n]");

View File

@@ -43,6 +43,23 @@ typedef struct cleonos_proc_snapshot {
char path[CLEONOS_PROC_PATH_MAX]; char path[CLEONOS_PROC_PATH_MAX];
} cleonos_proc_snapshot; } cleonos_proc_snapshot;
typedef struct cleonos_fb_info {
u64 width;
u64 height;
u64 pitch;
u64 bpp;
} cleonos_fb_info;
typedef struct cleonos_fb_blit_req {
u64 pixels_ptr;
u64 src_width;
u64 src_height;
u64 src_pitch_bytes;
u64 dst_x;
u64 dst_y;
u64 scale;
} cleonos_fb_blit_req;
#define CLEONOS_SYSCALL_LOG_WRITE 0ULL #define CLEONOS_SYSCALL_LOG_WRITE 0ULL
#define CLEONOS_SYSCALL_TIMER_TICKS 1ULL #define CLEONOS_SYSCALL_TIMER_TICKS 1ULL
#define CLEONOS_SYSCALL_TASK_COUNT 2ULL #define CLEONOS_SYSCALL_TASK_COUNT 2ULL
@@ -124,6 +141,10 @@ typedef struct cleonos_proc_snapshot {
#define CLEONOS_SYSCALL_DL_CLOSE 78ULL #define CLEONOS_SYSCALL_DL_CLOSE 78ULL
#define CLEONOS_SYSCALL_DL_SYM 79ULL #define CLEONOS_SYSCALL_DL_SYM 79ULL
#define CLEONOS_SYSCALL_EXEC_PATHV_IO 80ULL #define CLEONOS_SYSCALL_EXEC_PATHV_IO 80ULL
#define CLEONOS_SYSCALL_FB_INFO 81ULL
#define CLEONOS_SYSCALL_FB_BLIT 82ULL
#define CLEONOS_SYSCALL_FB_CLEAR 83ULL
#define CLEONOS_SYSCALL_KERNEL_VERSION 84ULL
u64 cleonos_syscall(u64 id, u64 arg0, u64 arg1, u64 arg2); u64 cleonos_syscall(u64 id, u64 arg0, u64 arg1, u64 arg2);
u64 cleonos_sys_log_write(const char *message, u64 length); u64 cleonos_sys_log_write(const char *message, u64 length);
@@ -207,5 +228,9 @@ u64 cleonos_sys_fd_dup(u64 fd);
u64 cleonos_sys_dl_open(const char *path); u64 cleonos_sys_dl_open(const char *path);
u64 cleonos_sys_dl_close(u64 handle); u64 cleonos_sys_dl_close(u64 handle);
u64 cleonos_sys_dl_sym(u64 handle, const char *symbol); u64 cleonos_sys_dl_sym(u64 handle, const char *symbol);
u64 cleonos_sys_fb_info(cleonos_fb_info *out_info);
u64 cleonos_sys_fb_blit(const cleonos_fb_blit_req *req);
u64 cleonos_sys_fb_clear(u64 rgb);
u64 cleonos_sys_kernel_version(char *out_version, u64 out_size);
#endif #endif

View File

@@ -196,6 +196,42 @@ static clio_size_t clio_i64_to_dec(long long value, char *out, clio_size_t out_s
return offset + len; return offset + len;
} }
static int clio_is_digit(char ch) {
return (ch >= '0' && ch <= '9') ? 1 : 0;
}
static int clio_emit_repeat(struct clio_sink *sink, char ch, clio_size_t count) {
while (count > 0UL) {
if (clio_sink_emit(sink, &ch, 1UL) == 0) {
return 0;
}
count--;
}
return 1;
}
static int clio_emit_with_width(struct clio_sink *sink, const char *text, clio_size_t text_len, int left_align,
char pad_char, clio_size_t width) {
if (left_align == 0 && width > text_len) {
if (clio_emit_repeat(sink, pad_char, width - text_len) == 0) {
return 0;
}
}
if (text_len > 0UL && clio_sink_emit(sink, text, text_len) == 0) {
return 0;
}
if (left_align != 0 && width > text_len) {
if (clio_emit_repeat(sink, ' ', width - text_len) == 0) {
return 0;
}
}
return 1;
}
static int clio_vformat(struct clio_sink *sink, const char *fmt, va_list args) { static int clio_vformat(struct clio_sink *sink, const char *fmt, va_list args) {
const char *cursor = fmt; const char *cursor = fmt;
@@ -223,10 +259,43 @@ static int clio_vformat(struct clio_sink *sink, const char *fmt, va_list args) {
} }
{ {
int left_align = 0;
int zero_pad = 0;
clio_size_t width = 0UL;
int has_precision = 0;
clio_size_t precision = 0UL;
int length_mode = 0; /* 0: default, 1: l, 2: ll, 3: z */ int length_mode = 0; /* 0: default, 1: l, 2: ll, 3: z */
char spec = *cursor; char spec = *cursor;
char number_buf[64]; char number_buf[96];
clio_size_t out_len = 0UL;
while (spec == '-' || spec == '0') {
if (spec == '-') {
left_align = 1;
} else if (spec == '0') {
zero_pad = 1;
}
cursor++;
spec = *cursor;
}
while (clio_is_digit(spec) != 0) {
width = (width * 10UL) + (clio_size_t)(unsigned long)(spec - '0');
cursor++;
spec = *cursor;
}
if (spec == '.') {
has_precision = 1;
precision = 0UL;
cursor++;
spec = *cursor;
while (clio_is_digit(spec) != 0) {
precision = (precision * 10UL) + (clio_size_t)(unsigned long)(spec - '0');
cursor++;
spec = *cursor;
}
}
if (spec == 'l') { if (spec == 'l') {
cursor++; cursor++;
@@ -250,24 +319,36 @@ static int clio_vformat(struct clio_sink *sink, const char *fmt, va_list args) {
if (spec == 's') { if (spec == 's') {
const char *text = va_arg(args, const char *); const char *text = va_arg(args, const char *);
clio_size_t text_len;
if (text == (const char *)0) { if (text == (const char *)0) {
text = "(null)"; text = "(null)";
} }
out_len = clio_strlen(text); text_len = clio_strlen(text);
if (has_precision != 0 && precision < text_len) {
text_len = precision;
}
if (clio_sink_emit(sink, text, out_len) == 0) { if (clio_emit_with_width(sink, text, text_len, left_align, ' ', width) == 0) {
return EOF; return EOF;
} }
} else if (spec == 'c') { } else if (spec == 'c') {
char out = (char)va_arg(args, int); char out = (char)va_arg(args, int);
char out_buf[1];
if (clio_sink_emit(sink, &out, 1UL) == 0) { out_buf[0] = out;
if (clio_emit_with_width(sink, out_buf, 1UL, left_align, ' ', width) == 0) {
return EOF; return EOF;
} }
} else if (spec == 'd' || spec == 'i') { } else if (spec == 'd' || spec == 'i') {
long long value; long long value;
char sign_char = '\0';
const char *digits = number_buf;
clio_size_t digits_len;
clio_size_t leading_zeros = 0UL;
clio_size_t core_len;
int sign_emitted = 0;
if (length_mode == 2) { if (length_mode == 2) {
value = va_arg(args, long long); value = va_arg(args, long long);
@@ -279,14 +360,72 @@ static int clio_vformat(struct clio_sink *sink, const char *fmt, va_list args) {
value = (long long)va_arg(args, int); value = (long long)va_arg(args, int);
} }
out_len = clio_i64_to_dec(value, number_buf, (clio_size_t)sizeof(number_buf)); digits_len = clio_i64_to_dec(value, number_buf, (clio_size_t)sizeof(number_buf));
if (out_len == 0UL || clio_sink_emit(sink, number_buf, out_len) == 0) { if (digits_len == 0UL) {
return EOF; return EOF;
} }
if (number_buf[0] == '-') {
sign_char = '-';
digits = number_buf + 1;
digits_len--;
}
if (has_precision != 0 && precision == 0UL && value == 0LL) {
digits_len = 0UL;
}
if (has_precision != 0 && precision > digits_len) {
leading_zeros = precision - digits_len;
}
core_len = digits_len + leading_zeros + ((sign_char != '\0') ? 1UL : 0UL);
if (left_align == 0 && width > core_len) {
if (zero_pad != 0 && has_precision == 0) {
if (sign_char != '\0') {
if (clio_sink_emit(sink, &sign_char, 1UL) == 0) {
return EOF;
}
sign_emitted = 1;
}
if (clio_emit_repeat(sink, '0', width - core_len) == 0) {
return EOF;
}
} else {
if (clio_emit_repeat(sink, ' ', width - core_len) == 0) {
return EOF;
}
}
}
if (sign_char != '\0' && sign_emitted == 0) {
if (clio_sink_emit(sink, &sign_char, 1UL) == 0) {
return EOF;
}
}
if (clio_emit_repeat(sink, '0', leading_zeros) == 0) {
return EOF;
}
if (digits_len > 0UL && clio_sink_emit(sink, digits, digits_len) == 0) {
return EOF;
}
if (left_align != 0 && width > core_len) {
if (clio_emit_repeat(sink, ' ', width - core_len) == 0) {
return EOF;
}
}
} else if (spec == 'u' || spec == 'x' || spec == 'X') { } else if (spec == 'u' || spec == 'x' || spec == 'X') {
unsigned long long value; unsigned long long value;
unsigned int base = (spec == 'u') ? 10U : 16U; unsigned int base = (spec == 'u') ? 10U : 16U;
int upper = (spec == 'X') ? 1 : 0; int upper = (spec == 'X') ? 1 : 0;
clio_size_t digits_len;
clio_size_t leading_zeros = 0UL;
clio_size_t core_len;
char pad_char = ' ';
if (length_mode == 2) { if (length_mode == 2) {
value = va_arg(args, unsigned long long); value = va_arg(args, unsigned long long);
@@ -298,22 +437,98 @@ static int clio_vformat(struct clio_sink *sink, const char *fmt, va_list args) {
value = (unsigned long long)va_arg(args, unsigned int); value = (unsigned long long)va_arg(args, unsigned int);
} }
out_len = clio_u64_to_base(value, base, upper, number_buf, (clio_size_t)sizeof(number_buf)); digits_len = clio_u64_to_base(value, base, upper, number_buf, (clio_size_t)sizeof(number_buf));
if (out_len == 0UL || clio_sink_emit(sink, number_buf, out_len) == 0) { if (digits_len == 0UL) {
return EOF; return EOF;
} }
if (has_precision != 0 && precision == 0UL && value == 0ULL) {
digits_len = 0UL;
}
if (has_precision != 0 && precision > digits_len) {
leading_zeros = precision - digits_len;
}
core_len = digits_len + leading_zeros;
if (zero_pad != 0 && has_precision == 0 && left_align == 0) {
pad_char = '0';
}
if (left_align == 0 && width > core_len) {
if (clio_emit_repeat(sink, pad_char, width - core_len) == 0) {
return EOF;
}
}
if (clio_emit_repeat(sink, '0', leading_zeros) == 0) {
return EOF;
}
if (digits_len > 0UL && clio_sink_emit(sink, number_buf, digits_len) == 0) {
return EOF;
}
if (left_align != 0 && width > core_len) {
if (clio_emit_repeat(sink, ' ', width - core_len) == 0) {
return EOF;
}
}
} else if (spec == 'p') { } else if (spec == 'p') {
const void *ptr = va_arg(args, const void *); const void *ptr = va_arg(args, const void *);
unsigned long long value = (unsigned long long)(unsigned long)ptr; unsigned long long value = (unsigned long long)(unsigned long)ptr;
clio_size_t digits_len;
clio_size_t leading_zeros = 0UL;
clio_size_t core_len;
digits_len = clio_u64_to_base(value, 16U, 0, number_buf, (clio_size_t)sizeof(number_buf));
if (digits_len == 0UL) {
return EOF;
}
if (has_precision != 0 && precision == 0UL && value == 0ULL) {
digits_len = 0UL;
}
if (has_precision != 0 && precision > digits_len) {
leading_zeros = precision - digits_len;
}
core_len = 2UL + leading_zeros + digits_len;
if (left_align == 0 && width > core_len) {
if (clio_emit_repeat(sink, ' ', width - core_len) == 0) {
return EOF;
}
}
if (clio_sink_emit(sink, "0x", 2UL) == 0) { if (clio_sink_emit(sink, "0x", 2UL) == 0) {
return EOF; return EOF;
} }
out_len = clio_u64_to_base(value, 16U, 0, number_buf, (clio_size_t)sizeof(number_buf)); if (clio_emit_repeat(sink, '0', leading_zeros) == 0) {
if (out_len == 0UL || clio_sink_emit(sink, number_buf, out_len) == 0) {
return EOF; return EOF;
} }
if (digits_len > 0UL && clio_sink_emit(sink, number_buf, digits_len) == 0) {
return EOF;
}
if (left_align != 0 && width > core_len) {
if (clio_emit_repeat(sink, ' ', width - core_len) == 0) {
return EOF;
}
}
} else if (spec == 'n') {
int *out_count = va_arg(args, int *);
if (out_count != (int *)0) {
if (sink->count > 0x7FFFFFFFUL) {
*out_count = 0x7FFFFFFF;
} else {
*out_count = (int)sink->count;
}
}
} else { } else {
char fallback[2]; char fallback[2];
fallback[0] = spec; fallback[0] = spec;

View File

@@ -355,3 +355,19 @@ u64 cleonos_sys_dl_close(u64 handle) {
u64 cleonos_sys_dl_sym(u64 handle, const char *symbol) { u64 cleonos_sys_dl_sym(u64 handle, const char *symbol) {
return cleonos_syscall(CLEONOS_SYSCALL_DL_SYM, handle, (u64)symbol, 0ULL); return cleonos_syscall(CLEONOS_SYSCALL_DL_SYM, handle, (u64)symbol, 0ULL);
} }
u64 cleonos_sys_fb_info(cleonos_fb_info *out_info) {
return cleonos_syscall(CLEONOS_SYSCALL_FB_INFO, (u64)out_info, 0ULL, 0ULL);
}
u64 cleonos_sys_fb_blit(const cleonos_fb_blit_req *req) {
return cleonos_syscall(CLEONOS_SYSCALL_FB_BLIT, (u64)req, 0ULL, 0ULL);
}
u64 cleonos_sys_fb_clear(u64 rgb) {
return cleonos_syscall(CLEONOS_SYSCALL_FB_CLEAR, rgb, 0ULL, 0ULL);
}
u64 cleonos_sys_kernel_version(char *out_version, u64 out_size) {
return cleonos_syscall(CLEONOS_SYSCALL_KERNEL_VERSION, (u64)out_version, out_size, 0ULL);
}

163
clks/CMakeLists.txt Normal file
View File

@@ -0,0 +1,163 @@
set(KERNEL_SOURCE_DIRS
"${CMAKE_SOURCE_DIR}/clks/kernel"
"${CMAKE_SOURCE_DIR}/clks/arch/${CLKS_ARCH}"
"${CMAKE_SOURCE_DIR}/clks/third_party"
)
set(C_SOURCES)
set(CPP_SOURCES)
set(ASM_SOURCES)
foreach(_src_dir IN LISTS KERNEL_SOURCE_DIRS)
if(EXISTS "${_src_dir}")
file(GLOB_RECURSE _c_abs CONFIGURE_DEPENDS "${_src_dir}/*.c")
file(GLOB_RECURSE _cpp_abs CONFIGURE_DEPENDS "${_src_dir}/*.cpp")
file(GLOB_RECURSE _s_abs CONFIGURE_DEPENDS "${_src_dir}/*.S")
foreach(_abs IN LISTS _c_abs)
file(RELATIVE_PATH _rel "${CMAKE_SOURCE_DIR}" "${_abs}")
list(APPEND C_SOURCES "${_rel}")
endforeach()
foreach(_abs IN LISTS _cpp_abs)
file(RELATIVE_PATH _rel "${CMAKE_SOURCE_DIR}" "${_abs}")
list(APPEND CPP_SOURCES "${_rel}")
endforeach()
foreach(_abs IN LISTS _s_abs)
file(RELATIVE_PATH _rel "${CMAKE_SOURCE_DIR}" "${_abs}")
list(APPEND ASM_SOURCES "${_rel}")
endforeach()
endif()
endforeach()
list(REMOVE_DUPLICATES C_SOURCES)
list(REMOVE_DUPLICATES CPP_SOURCES)
list(REMOVE_DUPLICATES ASM_SOURCES)
list(SORT C_SOURCES)
list(SORT CPP_SOURCES)
list(SORT ASM_SOURCES)
set(CLKS_BOOT_LIMINE_SOURCE "clks/kernel/boot/limine/limine_requests.c")
if(EXISTS "${CMAKE_SOURCE_DIR}/${CLKS_BOOT_LIMINE_SOURCE}")
list(APPEND C_SOURCES "${CLKS_BOOT_LIMINE_SOURCE}")
list(REMOVE_DUPLICATES C_SOURCES)
list(SORT C_SOURCES)
else()
cl_log_error("missing required boot source: ${CLKS_BOOT_LIMINE_SOURCE}")
endif()
file(GLOB_RECURSE KERNEL_INC_SOURCES_ABS CONFIGURE_DEPENDS
"${CMAKE_SOURCE_DIR}/clks/**/*.inc"
)
list(SORT KERNEL_INC_SOURCES_ABS)
if(NOT C_SOURCES)
cl_log_error("no kernel C sources found in clks/")
endif()
if(NOT EXISTS "${LINKER_SCRIPT}")
cl_log_error("missing linker script: ${LINKER_SCRIPT}")
endif()
function(add_kernel_c_object SRC OUTPUT_LIST_VAR)
string(REGEX REPLACE "\\.c$" ".o" OBJ_REL "${SRC}")
set(OBJ_PATH "${OBJ_ROOT}/${OBJ_REL}")
get_filename_component(OBJ_DIR "${OBJ_PATH}" DIRECTORY)
set(_deps "${CMAKE_SOURCE_DIR}/${SRC}" ${KERNEL_INC_SOURCES_ABS})
set(_cflags ${CFLAGS_COMMON})
if("${SRC}" MATCHES "^clks/third_party/")
list(APPEND _cflags
-Wno-error
-Wno-unused-function
-Wno-unused-parameter
-Wno-sign-compare
-Wno-type-limits
-Wno-missing-field-initializers
)
endif()
add_custom_command(
OUTPUT "${OBJ_PATH}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${OBJ_DIR}"
COMMAND ${CC} ${_cflags} ${ARCH_CFLAGS} -c "${CMAKE_SOURCE_DIR}/${SRC}" -o "${OBJ_PATH}"
DEPENDS ${_deps}
VERBATIM
)
set(${OUTPUT_LIST_VAR} ${${OUTPUT_LIST_VAR}} "${OBJ_PATH}" PARENT_SCOPE)
endfunction()
function(add_kernel_asm_object SRC OUTPUT_LIST_VAR)
string(REGEX REPLACE "\\.S$" ".o" OBJ_REL "${SRC}")
set(OBJ_PATH "${OBJ_ROOT}/${OBJ_REL}")
get_filename_component(OBJ_DIR "${OBJ_PATH}" DIRECTORY)
set(_deps "${CMAKE_SOURCE_DIR}/${SRC}" ${KERNEL_INC_SOURCES_ABS})
add_custom_command(
OUTPUT "${OBJ_PATH}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${OBJ_DIR}"
COMMAND ${CC} ${ASFLAGS_COMMON} ${ARCH_CFLAGS} -c "${CMAKE_SOURCE_DIR}/${SRC}" -o "${OBJ_PATH}"
DEPENDS ${_deps}
VERBATIM
)
set(${OUTPUT_LIST_VAR} ${${OUTPUT_LIST_VAR}} "${OBJ_PATH}" PARENT_SCOPE)
endfunction()
function(add_kernel_cpp_object SRC OUTPUT_LIST_VAR)
string(REGEX REPLACE "\\.cpp$" ".o" OBJ_REL "${SRC}")
set(OBJ_PATH "${OBJ_ROOT}/${OBJ_REL}")
get_filename_component(OBJ_DIR "${OBJ_PATH}" DIRECTORY)
set(_deps "${CMAKE_SOURCE_DIR}/${SRC}" ${KERNEL_INC_SOURCES_ABS})
add_custom_command(
OUTPUT "${OBJ_PATH}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${OBJ_DIR}"
COMMAND ${KERNEL_CXX} ${CXXFLAGS_COMMON} ${ARCH_CFLAGS} -c "${CMAKE_SOURCE_DIR}/${SRC}" -o "${OBJ_PATH}"
DEPENDS ${_deps}
VERBATIM
)
set(${OUTPUT_LIST_VAR} ${${OUTPUT_LIST_VAR}} "${OBJ_PATH}" PARENT_SCOPE)
endfunction()
set(KERNEL_OBJECTS)
foreach(SRC IN LISTS C_SOURCES)
add_kernel_c_object("${SRC}" KERNEL_OBJECTS)
endforeach()
foreach(SRC IN LISTS CPP_SOURCES)
add_kernel_cpp_object("${SRC}" KERNEL_OBJECTS)
endforeach()
foreach(SRC IN LISTS ASM_SOURCES)
add_kernel_asm_object("${SRC}" KERNEL_OBJECTS)
endforeach()
add_custom_command(
OUTPUT "${KERNEL_RUST_LIB}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${BUILD_ROOT}"
COMMAND ${RUSTC} --crate-type staticlib -C panic=abort -O "${CMAKE_SOURCE_DIR}/clks/rust/src/lib.rs" -o "${KERNEL_RUST_LIB}"
DEPENDS "${CMAKE_SOURCE_DIR}/clks/rust/src/lib.rs"
VERBATIM
)
add_custom_command(
OUTPUT "${KERNEL_ELF}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${BUILD_ROOT}"
COMMAND ${LD} ${LDFLAGS_COMMON} -T "${LINKER_SCRIPT}" -o "${KERNEL_ELF}" ${KERNEL_OBJECTS} "${KERNEL_RUST_LIB}"
DEPENDS ${KERNEL_OBJECTS} "${LINKER_SCRIPT}" "${KERNEL_RUST_LIB}" "${CMAKE_SOURCE_DIR}/clks/rust/src/lib.rs"
VERBATIM
)
add_custom_target(kernel DEPENDS "${KERNEL_ELF}")
add_custom_command(
OUTPUT "${KERNEL_SYMBOLS_FILE}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${BUILD_ROOT}"
COMMAND ${CMAKE_COMMAND}
"-DNM_TOOL=${NM}"
"-DADDR2LINE_TOOL=${ADDR2LINE}"
"-DKERNEL_ELF=${KERNEL_ELF}"
"-DOUT_SYMBOL_FILE=${KERNEL_SYMBOLS_FILE}"
-P "${CMAKE_SOURCE_DIR}/cmake/gen_kernel_symbols.cmake"
DEPENDS "${KERNEL_ELF}" "${CMAKE_SOURCE_DIR}/cmake/gen_kernel_symbols.cmake"
VERBATIM
)
add_custom_target(kernel-symbols DEPENDS "${KERNEL_SYMBOLS_FILE}")
add_dependencies(kernel-symbols kernel)

View File

@@ -74,5 +74,7 @@ u64 clks_exec_request_count(void);
u64 clks_exec_success_count(void); u64 clks_exec_success_count(void);
clks_bool clks_exec_is_running(void); clks_bool clks_exec_is_running(void);
clks_bool clks_exec_current_path_is_user(void); clks_bool clks_exec_current_path_is_user(void);
clks_bool clks_exec_current_user_ptr_readable(u64 addr, u64 size);
clks_bool clks_exec_current_user_ptr_writable(u64 addr, u64 size);
#endif #endif

View File

@@ -0,0 +1,19 @@
#ifndef CLKS_PANIC_QR_H
#define CLKS_PANIC_QR_H
#include <clks/types.h>
#ifdef __cplusplus
extern "C" {
#endif
clks_bool clks_panic_qr_prepare(void);
clks_bool clks_panic_qr_show(void);
u64 clks_panic_qr_total_lines(void);
u64 clks_panic_qr_dropped_lines(void);
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -84,6 +84,10 @@
#define CLKS_SYSCALL_DL_CLOSE 78ULL #define CLKS_SYSCALL_DL_CLOSE 78ULL
#define CLKS_SYSCALL_DL_SYM 79ULL #define CLKS_SYSCALL_DL_SYM 79ULL
#define CLKS_SYSCALL_EXEC_PATHV_IO 80ULL #define CLKS_SYSCALL_EXEC_PATHV_IO 80ULL
#define CLKS_SYSCALL_FB_INFO 81ULL
#define CLKS_SYSCALL_FB_BLIT 82ULL
#define CLKS_SYSCALL_FB_CLEAR 83ULL
#define CLKS_SYSCALL_KERNEL_VERSION 84ULL
void clks_syscall_init(void); void clks_syscall_init(void);
u64 clks_syscall_dispatch(void *frame_ptr); u64 clks_syscall_dispatch(void *frame_ptr);

View File

@@ -2,6 +2,7 @@
#include <clks/framebuffer.h> #include <clks/framebuffer.h>
#include <clks/fs.h> #include <clks/fs.h>
#include <clks/panic.h> #include <clks/panic.h>
#include <clks/panic_qr.h>
#include <clks/serial.h> #include <clks/serial.h>
#include <clks/string.h> #include <clks/string.h>
#include <clks/types.h> #include <clks/types.h>
@@ -13,6 +14,16 @@
#define CLKS_PANIC_STACK_WINDOW_BYTES (128ULL * 1024ULL) #define CLKS_PANIC_STACK_WINDOW_BYTES (128ULL * 1024ULL)
#define CLKS_PANIC_SYMBOL_FILE "/system/kernel.sym" #define CLKS_PANIC_SYMBOL_FILE "/system/kernel.sym"
#define CLKS_PANIC_KERNEL_ADDR_BASE 0xFFFF800000000000ULL #define CLKS_PANIC_KERNEL_ADDR_BASE 0xFFFF800000000000ULL
#define CLKS_PANIC_QR_HINT "\nPress SPACE to toggle panic log QR.\n"
#define CLKS_PANIC_REASON_MAX 192U
#define CLKS_PANIC_NAME_MAX 64U
#define CLKS_PANIC_PS2_DATA_PORT 0x60U
#define CLKS_PANIC_PS2_STATUS_PORT 0x64U
#define CLKS_PANIC_PS2_STATUS_OBF 0x01U
#define CLKS_PANIC_SC_SPACE_MAKE 0x39U
#define CLKS_PANIC_SC_SPACE_BREAK 0xB9U
#define CLKS_PANIC_SC_EXT_PREFIX 0xE0U
struct clks_panic_console { struct clks_panic_console {
u32 cols; u32 cols;
@@ -28,6 +39,28 @@ static clks_bool clks_panic_symbols_checked = CLKS_FALSE;
static const char *clks_panic_symbols_data = CLKS_NULL; static const char *clks_panic_symbols_data = CLKS_NULL;
static u64 clks_panic_symbols_size = 0ULL; static u64 clks_panic_symbols_size = 0ULL;
enum clks_panic_screen_kind {
CLKS_PANIC_SCREEN_NONE = 0,
CLKS_PANIC_SCREEN_REASON = 1,
CLKS_PANIC_SCREEN_EXCEPTION = 2
};
struct clks_panic_screen_snapshot {
enum clks_panic_screen_kind kind;
char reason[CLKS_PANIC_REASON_MAX];
char name[CLKS_PANIC_NAME_MAX];
u64 vector;
u64 error_code;
u64 rip;
u64 rbp;
u64 rsp;
clks_bool has_reason;
clks_bool has_name;
};
static struct clks_panic_screen_snapshot clks_panic_screen = {
CLKS_PANIC_SCREEN_NONE, {0}, {0}, 0ULL, 0ULL, 0ULL, 0ULL, 0ULL, CLKS_FALSE, CLKS_FALSE};
static inline void clks_panic_disable_interrupts(void) { static inline void clks_panic_disable_interrupts(void) {
#if defined(CLKS_ARCH_X86_64) #if defined(CLKS_ARCH_X86_64)
__asm__ volatile("cli"); __asm__ volatile("cli");
@@ -36,6 +69,55 @@ static inline void clks_panic_disable_interrupts(void) {
#endif #endif
} }
#if defined(CLKS_ARCH_X86_64)
static inline u8 clks_panic_inb(u16 port) {
u8 value;
__asm__ volatile("inb %1, %0" : "=a"(value) : "Nd"(port));
return value;
}
static clks_bool clks_panic_ps2_has_output(void) {
return ((clks_panic_inb(CLKS_PANIC_PS2_STATUS_PORT) & CLKS_PANIC_PS2_STATUS_OBF) != 0U) ? CLKS_TRUE : CLKS_FALSE;
}
#endif
static clks_bool clks_panic_poll_space_press(clks_bool *space_down) {
#if defined(CLKS_ARCH_X86_64)
clks_bool pressed = CLKS_FALSE;
if (space_down == CLKS_NULL) {
return CLKS_FALSE;
}
while (clks_panic_ps2_has_output() == CLKS_TRUE) {
u8 scancode = clks_panic_inb(CLKS_PANIC_PS2_DATA_PORT);
if (scancode == CLKS_PANIC_SC_EXT_PREFIX) {
continue;
}
if (scancode == CLKS_PANIC_SC_SPACE_BREAK) {
*space_down = CLKS_FALSE;
continue;
}
if (scancode == CLKS_PANIC_SC_SPACE_MAKE) {
if (*space_down == CLKS_FALSE) {
*space_down = CLKS_TRUE;
pressed = CLKS_TRUE;
}
continue;
}
}
return pressed;
#else
(void)space_down;
return CLKS_FALSE;
#endif
}
static void clks_panic_u64_to_hex(u64 value, char out[19]) { static void clks_panic_u64_to_hex(u64 value, char out[19]) {
int nibble; int nibble;
@@ -399,7 +481,7 @@ static clks_bool clks_panic_lookup_symbol(u64 addr, const char **out_name, usize
return CLKS_TRUE; return CLKS_TRUE;
} }
static void clks_panic_emit_bt_entry(struct clks_panic_console *console, u32 index, u64 rip) { static void clks_panic_emit_bt_entry(struct clks_panic_console *console, u32 index, u64 rip, clks_bool serial_enabled) {
char index_dec[12]; char index_dec[12];
char rip_hex[19]; char rip_hex[19];
const char *sym_name = CLKS_NULL; const char *sym_name = CLKS_NULL;
@@ -413,28 +495,30 @@ static void clks_panic_emit_bt_entry(struct clks_panic_console *console, u32 ind
clks_panic_u64_to_hex(rip, rip_hex); clks_panic_u64_to_hex(rip, rip_hex);
has_symbol = clks_panic_lookup_symbol(rip, &sym_name, &sym_name_len, &sym_base, &sym_source, &sym_source_len); has_symbol = clks_panic_lookup_symbol(rip, &sym_name, &sym_name_len, &sym_base, &sym_source, &sym_source_len);
clks_serial_write("[PANIC][BT] #"); if (serial_enabled == CLKS_TRUE) {
clks_serial_write(index_dec); clks_serial_write("[PANIC][BT] #");
clks_serial_write(" "); clks_serial_write(index_dec);
clks_serial_write(rip_hex);
if (has_symbol == CLKS_TRUE) {
char off_hex[19];
u64 off = rip - sym_base;
clks_panic_u64_to_hex(off, off_hex);
clks_serial_write(" "); clks_serial_write(" ");
clks_panic_serial_write_n(sym_name, sym_name_len); clks_serial_write(rip_hex);
clks_serial_write("+");
clks_serial_write(off_hex);
if (sym_source != CLKS_NULL && sym_source_len > 0U) { if (has_symbol == CLKS_TRUE) {
clks_serial_write(" @ "); char off_hex[19];
clks_panic_serial_write_n(sym_source, sym_source_len); u64 off = rip - sym_base;
clks_panic_u64_to_hex(off, off_hex);
clks_serial_write(" ");
clks_panic_serial_write_n(sym_name, sym_name_len);
clks_serial_write("+");
clks_serial_write(off_hex);
if (sym_source != CLKS_NULL && sym_source_len > 0U) {
clks_serial_write(" @ ");
clks_panic_serial_write_n(sym_source, sym_source_len);
}
} }
}
clks_serial_write("\n"); clks_serial_write("\n");
}
if (console == CLKS_NULL) { if (console == CLKS_NULL) {
return; return;
@@ -480,7 +564,8 @@ static clks_bool clks_panic_stack_ptr_valid(u64 ptr, u64 stack_low, u64 stack_hi
return CLKS_TRUE; return CLKS_TRUE;
} }
static void clks_panic_emit_backtrace(struct clks_panic_console *console, u64 rip, u64 rbp, u64 rsp) { static void clks_panic_emit_backtrace(struct clks_panic_console *console, u64 rip, u64 rbp, u64 rsp,
clks_bool serial_enabled) {
u64 current_rbp; u64 current_rbp;
u64 stack_low; u64 stack_low;
u64 stack_high; u64 stack_high;
@@ -490,17 +575,21 @@ static void clks_panic_emit_backtrace(struct clks_panic_console *console, u64 ri
return; return;
} }
clks_panic_serial_write_line("[PANIC][BT] BEGIN"); if (serial_enabled == CLKS_TRUE) {
clks_panic_serial_write_line("[PANIC][BT] BEGIN");
}
if (console != CLKS_NULL) { if (console != CLKS_NULL) {
clks_panic_console_write(console, "\nBACKTRACE:\n"); clks_panic_console_write(console, "\nBACKTRACE:\n");
} }
clks_panic_emit_bt_entry(console, frame, rip); clks_panic_emit_bt_entry(console, frame, rip, serial_enabled);
frame++; frame++;
if (rbp == 0ULL || rsp == 0ULL || frame >= CLKS_PANIC_BACKTRACE_MAX) { if (rbp == 0ULL || rsp == 0ULL || frame >= CLKS_PANIC_BACKTRACE_MAX) {
clks_panic_serial_write_line("[PANIC][BT] END"); if (serial_enabled == CLKS_TRUE) {
clks_panic_serial_write_line("[PANIC][BT] END");
}
return; return;
} }
@@ -508,7 +597,9 @@ static void clks_panic_emit_backtrace(struct clks_panic_console *console, u64 ri
stack_high = rsp + CLKS_PANIC_STACK_WINDOW_BYTES; stack_high = rsp + CLKS_PANIC_STACK_WINDOW_BYTES;
if (stack_high <= stack_low) { if (stack_high <= stack_low) {
clks_panic_serial_write_line("[PANIC][BT] END"); if (serial_enabled == CLKS_TRUE) {
clks_panic_serial_write_line("[PANIC][BT] END");
}
return; return;
} }
@@ -531,7 +622,7 @@ static void clks_panic_emit_backtrace(struct clks_panic_console *console, u64 ri
break; break;
} }
clks_panic_emit_bt_entry(console, frame, ret_rip); clks_panic_emit_bt_entry(console, frame, ret_rip, serial_enabled);
frame++; frame++;
if (next_rbp <= current_rbp) { if (next_rbp <= current_rbp) {
@@ -541,7 +632,9 @@ static void clks_panic_emit_backtrace(struct clks_panic_console *console, u64 ri
current_rbp = next_rbp; current_rbp = next_rbp;
} }
clks_panic_serial_write_line("[PANIC][BT] END"); if (serial_enabled == CLKS_TRUE) {
clks_panic_serial_write_line("[PANIC][BT] END");
}
} }
static void clks_panic_capture_context(u64 *out_rip, u64 *out_rbp, u64 *out_rsp) { static void clks_panic_capture_context(u64 *out_rip, u64 *out_rbp, u64 *out_rsp) {
@@ -572,12 +665,137 @@ static void clks_panic_capture_context(u64 *out_rip, u64 *out_rbp, u64 *out_rsp)
#endif #endif
} }
static void clks_panic_copy_text(char *dst, usize dst_size, const char *src) {
usize i = 0U;
if (dst == CLKS_NULL || dst_size == 0U) {
return;
}
if (src == CLKS_NULL) {
dst[0] = '\0';
return;
}
while (i + 1U < dst_size && src[i] != '\0') {
dst[i] = src[i];
i++;
}
dst[i] = '\0';
}
static void clks_panic_snapshot_reason(const char *reason, u64 rip, u64 rbp, u64 rsp) {
clks_panic_screen.kind = CLKS_PANIC_SCREEN_REASON;
clks_panic_screen.vector = 0ULL;
clks_panic_screen.error_code = 0ULL;
clks_panic_screen.rip = rip;
clks_panic_screen.rbp = rbp;
clks_panic_screen.rsp = rsp;
clks_panic_screen.has_name = CLKS_FALSE;
clks_panic_screen.name[0] = '\0';
if (reason != CLKS_NULL && reason[0] != '\0') {
clks_panic_copy_text(clks_panic_screen.reason, sizeof(clks_panic_screen.reason), reason);
clks_panic_screen.has_reason = CLKS_TRUE;
} else {
clks_panic_screen.reason[0] = '\0';
clks_panic_screen.has_reason = CLKS_FALSE;
}
}
static void clks_panic_snapshot_exception(const char *name, u64 vector, u64 error_code, u64 rip, u64 rbp, u64 rsp) {
clks_panic_screen.kind = CLKS_PANIC_SCREEN_EXCEPTION;
clks_panic_screen.vector = vector;
clks_panic_screen.error_code = error_code;
clks_panic_screen.rip = rip;
clks_panic_screen.rbp = rbp;
clks_panic_screen.rsp = rsp;
clks_panic_screen.has_reason = CLKS_FALSE;
clks_panic_screen.reason[0] = '\0';
if (name != CLKS_NULL && name[0] != '\0') {
clks_panic_copy_text(clks_panic_screen.name, sizeof(clks_panic_screen.name), name);
clks_panic_screen.has_name = CLKS_TRUE;
} else {
clks_panic_screen.name[0] = '\0';
clks_panic_screen.has_name = CLKS_FALSE;
}
}
static void clks_panic_render_snapshot_console(clks_bool serial_backtrace) {
struct clks_panic_console console;
char hex_buf[19];
if (clks_panic_console_init(&console) == CLKS_TRUE) {
clks_fb_clear(CLKS_PANIC_BG);
clks_panic_console_write(&console, "CLeonOS KERNEL PANIC\n");
clks_panic_console_write(&console, "====================\n\n");
if (clks_panic_screen.kind == CLKS_PANIC_SCREEN_EXCEPTION) {
clks_panic_console_write(&console, "TYPE: CPU EXCEPTION\n");
if (clks_panic_screen.has_name == CLKS_TRUE) {
clks_panic_console_write(&console, "NAME: ");
clks_panic_console_write(&console, clks_panic_screen.name);
clks_panic_console_write(&console, "\n");
}
clks_panic_u64_to_hex(clks_panic_screen.vector, hex_buf);
clks_panic_console_write(&console, "VECTOR: ");
clks_panic_console_write(&console, hex_buf);
clks_panic_console_write(&console, "\n");
clks_panic_u64_to_hex(clks_panic_screen.error_code, hex_buf);
clks_panic_console_write(&console, "ERROR: ");
clks_panic_console_write(&console, hex_buf);
clks_panic_console_write(&console, "\n");
clks_panic_u64_to_hex(clks_panic_screen.rip, hex_buf);
clks_panic_console_write(&console, "RIP: ");
clks_panic_console_write(&console, hex_buf);
clks_panic_console_write(&console, "\n");
} else if (clks_panic_screen.has_reason == CLKS_TRUE) {
clks_panic_console_write(&console, "REASON: ");
clks_panic_console_write(&console, clks_panic_screen.reason);
clks_panic_console_write(&console, "\n");
}
clks_panic_emit_backtrace(&console, clks_panic_screen.rip, clks_panic_screen.rbp, clks_panic_screen.rsp,
serial_backtrace);
clks_panic_console_write(&console, "\nSystem halted. Please reboot the computer.\n");
clks_panic_console_write(&console, CLKS_PANIC_QR_HINT);
} else {
clks_panic_emit_backtrace(CLKS_NULL, clks_panic_screen.rip, clks_panic_screen.rbp, clks_panic_screen.rsp,
serial_backtrace);
}
}
static CLKS_NORETURN void clks_panic_halt_loop(void) { static CLKS_NORETURN void clks_panic_halt_loop(void) {
clks_cpu_halt_forever(); clks_bool space_down = CLKS_FALSE;
clks_bool qr_shown = CLKS_FALSE;
for (;;) {
if (clks_panic_poll_space_press(&space_down) == CLKS_TRUE) {
if (qr_shown == CLKS_FALSE) {
if (clks_panic_qr_show() == CLKS_TRUE) {
qr_shown = CLKS_TRUE;
clks_panic_serial_write_line("[PANIC][QR] DISPLAYED");
} else {
clks_panic_serial_write_line("[PANIC][QR] PREPARE/SHOW FAILED");
}
} else {
clks_panic_render_snapshot_console(CLKS_FALSE);
qr_shown = CLKS_FALSE;
clks_panic_serial_write_line("[PANIC][QR] RETURNED TO PANIC PAGE");
}
}
clks_cpu_pause();
}
} }
CLKS_NORETURN void clks_panic(const char *reason) { CLKS_NORETURN void clks_panic(const char *reason) {
struct clks_panic_console console;
u64 rip = 0ULL; u64 rip = 0ULL;
u64 rbp = 0ULL; u64 rbp = 0ULL;
u64 rsp = 0ULL; u64 rsp = 0ULL;
@@ -597,29 +815,19 @@ CLKS_NORETURN void clks_panic(const char *reason) {
clks_panic_serial_write_line(reason); clks_panic_serial_write_line(reason);
} }
if (clks_panic_console_init(&console) == CLKS_TRUE) { clks_panic_snapshot_reason(reason, rip, rbp, rsp);
clks_fb_clear(CLKS_PANIC_BG); clks_panic_render_snapshot_console(CLKS_TRUE);
clks_panic_console_write(&console, "CLeonOS KERNEL PANIC\n"); if (clks_panic_qr_prepare() == CLKS_TRUE) {
clks_panic_console_write(&console, "====================\n\n"); clks_panic_serial_write_line("[PANIC][QR] READY (PRESS SPACE TO TOGGLE)");
if (reason != CLKS_NULL) {
clks_panic_console_write(&console, "REASON: ");
clks_panic_console_write(&console, reason);
clks_panic_console_write(&console, "\n");
}
clks_panic_emit_backtrace(&console, rip, rbp, rsp);
clks_panic_console_write(&console, "\nSystem halted. Please reboot the computer.\n");
} else { } else {
clks_panic_emit_backtrace(CLKS_NULL, rip, rbp, rsp); clks_panic_serial_write_line("[PANIC][QR] NOT AVAILABLE");
} }
clks_panic_halt_loop(); clks_panic_halt_loop();
} }
CLKS_NORETURN void clks_panic_exception(const char *name, u64 vector, u64 error_code, u64 rip, u64 rbp, u64 rsp) { CLKS_NORETURN void clks_panic_exception(const char *name, u64 vector, u64 error_code, u64 rip, u64 rbp, u64 rsp) {
struct clks_panic_console console;
char hex_buf[19]; char hex_buf[19];
clks_panic_disable_interrupts(); clks_panic_disable_interrupts();
@@ -643,38 +851,13 @@ CLKS_NORETURN void clks_panic_exception(const char *name, u64 vector, u64 error_
clks_panic_u64_to_hex(rip, hex_buf); clks_panic_u64_to_hex(rip, hex_buf);
clks_panic_serial_write_line(hex_buf); clks_panic_serial_write_line(hex_buf);
if (clks_panic_console_init(&console) == CLKS_TRUE) { clks_panic_snapshot_exception(name, vector, error_code, rip, rbp, rsp);
clks_fb_clear(CLKS_PANIC_BG); clks_panic_render_snapshot_console(CLKS_TRUE);
clks_panic_console_write(&console, "CLeonOS KERNEL PANIC\n"); if (clks_panic_qr_prepare() == CLKS_TRUE) {
clks_panic_console_write(&console, "====================\n\n"); clks_panic_serial_write_line("[PANIC][QR] READY (PRESS SPACE TO TOGGLE)");
clks_panic_console_write(&console, "TYPE: CPU EXCEPTION\n");
if (name != CLKS_NULL) {
clks_panic_console_write(&console, "NAME: ");
clks_panic_console_write(&console, name);
clks_panic_console_write(&console, "\n");
}
clks_panic_u64_to_hex(vector, hex_buf);
clks_panic_console_write(&console, "VECTOR: ");
clks_panic_console_write(&console, hex_buf);
clks_panic_console_write(&console, "\n");
clks_panic_u64_to_hex(error_code, hex_buf);
clks_panic_console_write(&console, "ERROR: ");
clks_panic_console_write(&console, hex_buf);
clks_panic_console_write(&console, "\n");
clks_panic_u64_to_hex(rip, hex_buf);
clks_panic_console_write(&console, "RIP: ");
clks_panic_console_write(&console, hex_buf);
clks_panic_console_write(&console, "\n");
clks_panic_emit_backtrace(&console, rip, rbp, rsp);
clks_panic_console_write(&console, "\nSystem halted. Please reboot the computer.\n");
} else { } else {
clks_panic_emit_backtrace(CLKS_NULL, rip, rbp, rsp); clks_panic_serial_write_line("[PANIC][QR] NOT AVAILABLE");
} }
clks_panic_halt_loop(); clks_panic_halt_loop();

View File

@@ -0,0 +1,395 @@
extern "C" {
#include <clks/framebuffer.h>
#include <clks/log.h>
#include <clks/panic_qr.h>
#include <clks/serial.h>
#include <clks/string.h>
#include <clks/types.h>
}
#ifndef NDEBUG
#define NDEBUG 1
#endif
#define MINIZ_NO_STDIO 1
#define MINIZ_NO_INFLATE_APIS 1
#define MINIZ_NO_TIME 1
#define MINIZ_NO_MALLOC 1
#define MINIZ_NO_ZLIB_COMPATIBLE_NAMES 1
#include "../../third_party/miniz/miniz.h"
extern "C" {
#include "../../third_party/qrcodegen/qrcodegen.h"
}
#define CLKS_PANIC_QR_BORDER 4U
#define CLKS_PANIC_QR_MAX_LINES 256U
#define CLKS_PANIC_QR_LINE_MAX 256U
#define CLKS_PANIC_QR_TEXT_MAX ((CLKS_PANIC_QR_MAX_LINES * CLKS_PANIC_QR_LINE_MAX) + CLKS_PANIC_QR_MAX_LINES)
#define CLKS_PANIC_QR_COMP_MAX (CLKS_PANIC_QR_TEXT_MAX + 2048U)
#define CLKS_PANIC_QR_MAX_COMP_BYTES 2953U
#define CLKS_PANIC_QR_DIGITS_MAX (((CLKS_PANIC_QR_MAX_COMP_BYTES / 7U) * 17U) + 17U)
#define CLKS_PANIC_QR_URL_PREFIX "https://panic.archlinux.org/panic_report#?a=cleonos-x86_64&v=cleonos&z="
#define CLKS_PANIC_QR_URL_PREFIX_LEN ((u64)(sizeof(CLKS_PANIC_QR_URL_PREFIX) - 1U))
#define CLKS_PANIC_QR_COLOR_DARK 0x00000000U
#define CLKS_PANIC_QR_COLOR_LIGHT 0x00FFFFFFU
static char clks_panic_qr_lines[CLKS_PANIC_QR_MAX_LINES][CLKS_PANIC_QR_LINE_MAX];
static u16 clks_panic_qr_line_len[CLKS_PANIC_QR_MAX_LINES];
static char clks_panic_qr_text[CLKS_PANIC_QR_TEXT_MAX];
static u8 clks_panic_qr_comp[CLKS_PANIC_QR_COMP_MAX];
static char clks_panic_qr_digits[CLKS_PANIC_QR_DIGITS_MAX];
static u8 clks_panic_qr_payload[qrcodegen_BUFFER_LEN_MAX];
static u8 clks_panic_qr_code[qrcodegen_BUFFER_LEN_MAX];
static u8 clks_panic_qr_url_seg_buf[qrcodegen_BUFFER_LEN_MAX];
static u8 clks_panic_qr_num_seg_buf[qrcodegen_BUFFER_LEN_MAX];
static clks_bool clks_panic_qr_ready = CLKS_FALSE;
static clks_bool clks_panic_qr_attempted = CLKS_FALSE;
static u64 clks_panic_qr_total_lines_cache = 0ULL;
static u64 clks_panic_qr_dropped_lines_cache = 0ULL;
static u64 clks_panic_qr_comp_size_cache = 0ULL;
static u64 clks_panic_qr_digits_size_cache = 0ULL;
static u64 clks_panic_qr_collect_lines(void) {
u64 journal_count = clks_log_journal_count();
u64 i;
u64 line_count = 0ULL;
if (journal_count > CLKS_PANIC_QR_MAX_LINES) {
journal_count = CLKS_PANIC_QR_MAX_LINES;
}
for (i = 0ULL; i < journal_count; i++) {
if (clks_log_journal_read(i, clks_panic_qr_lines[line_count], CLKS_PANIC_QR_LINE_MAX) == CLKS_TRUE) {
clks_panic_qr_line_len[line_count] = (u16)clks_strlen(clks_panic_qr_lines[line_count]);
line_count++;
}
}
return line_count;
}
static u64 clks_panic_qr_build_text(u64 line_start, u64 line_count) {
u64 i;
u64 out_len = 0ULL;
if (line_start >= line_count) {
return 0ULL;
}
for (i = line_start; i < line_count; i++) {
u64 len = (u64)clks_panic_qr_line_len[i];
if (out_len + len + 1ULL > CLKS_PANIC_QR_TEXT_MAX) {
break;
}
if (len > 0ULL) {
clks_memcpy(&clks_panic_qr_text[out_len], clks_panic_qr_lines[i], (usize)len);
out_len += len;
}
clks_panic_qr_text[out_len++] = '\n';
}
return out_len;
}
static clks_bool clks_panic_qr_compress(const char *src, u64 src_len, u8 *dst, u64 dst_cap, u64 *out_len) {
tdefl_compressor comp;
tdefl_status init_status;
tdefl_status comp_status;
size_t in_size;
size_t out_size;
mz_uint flags;
if (src == CLKS_NULL || dst == CLKS_NULL || out_len == CLKS_NULL || src_len == 0ULL || dst_cap == 0ULL) {
return CLKS_FALSE;
}
flags = tdefl_create_comp_flags_from_zip_params(6, 12, MZ_DEFAULT_STRATEGY);
init_status = tdefl_init(&comp, (tdefl_put_buf_func_ptr)0, (void *)0, (int)flags);
if (init_status < 0) {
return CLKS_FALSE;
}
in_size = (size_t)src_len;
out_size = (size_t)dst_cap;
comp_status = tdefl_compress(&comp, src, &in_size, dst, &out_size, TDEFL_FINISH);
if (comp_status != TDEFL_STATUS_DONE || in_size != (size_t)src_len) {
return CLKS_FALSE;
}
*out_len = (u64)out_size;
return CLKS_TRUE;
}
static void clks_panic_qr_u64_to_dec_padded(u64 value, u32 digits, char *out) {
u32 i;
if (out == CLKS_NULL || digits == 0U) {
return;
}
for (i = 0U; i < digits; i++) {
out[digits - 1U - i] = (char)('0' + (value % 10ULL));
value /= 10ULL;
}
}
static u64 clks_panic_qr_binary_to_decimal(const u8 *src, u64 src_len, char *dst, u64 dst_cap) {
static const u8 tail_digits[7] = {0U, 3U, 5U, 8U, 10U, 13U, 15U};
u64 in_pos = 0ULL;
u64 out_pos = 0ULL;
if (src == CLKS_NULL || dst == CLKS_NULL || dst_cap == 0ULL) {
return 0ULL;
}
while (in_pos + 7ULL <= src_len) {
u64 value = 0ULL;
u32 i;
if (out_pos + 17ULL + 1ULL > dst_cap) {
return 0ULL;
}
for (i = 0U; i < 7U; i++) {
value |= ((u64)src[in_pos + (u64)i]) << (i * 8U);
}
clks_panic_qr_u64_to_dec_padded(value, 17U, &dst[out_pos]);
out_pos += 17ULL;
in_pos += 7ULL;
}
if (in_pos < src_len) {
u64 value = 0ULL;
u64 rem = src_len - in_pos;
u32 digits = tail_digits[rem];
u32 i;
if (digits == 0U || out_pos + (u64)digits + 1ULL > dst_cap) {
return 0ULL;
}
for (i = 0U; i < (u32)rem; i++) {
value |= ((u64)src[in_pos + (u64)i]) << (i * 8U);
}
clks_panic_qr_u64_to_dec_padded(value, digits, &dst[out_pos]);
out_pos += (u64)digits;
}
dst[out_pos] = '\0';
return out_pos;
}
static clks_bool clks_panic_qr_encode_payload(const u8 *payload, u64 payload_size, u64 *digit_len_out) {
struct qrcodegen_Segment segs[2];
u64 digit_len;
size_t url_seg_buf_len;
size_t num_seg_buf_len;
if (payload == CLKS_NULL || payload_size == 0ULL || payload_size > CLKS_PANIC_QR_MAX_COMP_BYTES) {
return CLKS_FALSE;
}
digit_len = clks_panic_qr_binary_to_decimal(payload, payload_size, clks_panic_qr_digits, CLKS_PANIC_QR_DIGITS_MAX);
if (digit_len == 0ULL) {
return CLKS_FALSE;
}
url_seg_buf_len = qrcodegen_calcSegmentBufferSize(qrcodegen_Mode_BYTE, (size_t)CLKS_PANIC_QR_URL_PREFIX_LEN);
num_seg_buf_len = qrcodegen_calcSegmentBufferSize(qrcodegen_Mode_NUMERIC, (size_t)digit_len);
if (url_seg_buf_len == (size_t)-1 || num_seg_buf_len == (size_t)-1 || url_seg_buf_len > qrcodegen_BUFFER_LEN_MAX ||
num_seg_buf_len > qrcodegen_BUFFER_LEN_MAX) {
return CLKS_FALSE;
}
segs[0] = qrcodegen_makeBytes((const u8 *)CLKS_PANIC_QR_URL_PREFIX, (size_t)CLKS_PANIC_QR_URL_PREFIX_LEN,
clks_panic_qr_url_seg_buf);
segs[1] = qrcodegen_makeNumeric(clks_panic_qr_digits, clks_panic_qr_num_seg_buf);
if (qrcodegen_encodeSegmentsAdvanced(segs, 2U, qrcodegen_Ecc_LOW, qrcodegen_VERSION_MIN, qrcodegen_VERSION_MAX,
qrcodegen_Mask_AUTO, true, clks_panic_qr_payload,
clks_panic_qr_code) == false) {
return CLKS_FALSE;
}
if (digit_len_out != CLKS_NULL) {
*digit_len_out = digit_len;
}
return CLKS_TRUE;
}
extern "C" clks_bool clks_panic_qr_prepare(void) {
u64 line_count;
u64 start;
if (clks_panic_qr_attempted == CLKS_TRUE) {
return clks_panic_qr_ready;
}
clks_panic_qr_attempted = CLKS_TRUE;
clks_panic_qr_ready = CLKS_FALSE;
clks_panic_qr_total_lines_cache = 0ULL;
clks_panic_qr_dropped_lines_cache = 0ULL;
clks_panic_qr_comp_size_cache = 0ULL;
clks_panic_qr_digits_size_cache = 0ULL;
line_count = clks_panic_qr_collect_lines();
clks_panic_qr_total_lines_cache = line_count;
if (line_count == 0ULL) {
return CLKS_FALSE;
}
for (start = 0ULL; start < line_count; start++) {
u64 text_len = clks_panic_qr_build_text(start, line_count);
u64 comp_len = 0ULL;
u64 digit_len = 0ULL;
if (text_len == 0ULL) {
continue;
}
if (clks_panic_qr_compress(clks_panic_qr_text, text_len, clks_panic_qr_comp, CLKS_PANIC_QR_COMP_MAX,
&comp_len) == CLKS_FALSE) {
continue;
}
if (comp_len > CLKS_PANIC_QR_MAX_COMP_BYTES) {
continue;
}
if (clks_panic_qr_encode_payload(clks_panic_qr_comp, comp_len, &digit_len) == CLKS_FALSE) {
continue;
}
clks_panic_qr_dropped_lines_cache = start;
clks_panic_qr_comp_size_cache = comp_len;
clks_panic_qr_digits_size_cache = digit_len;
clks_panic_qr_ready = CLKS_TRUE;
return CLKS_TRUE;
}
return CLKS_FALSE;
}
extern "C" clks_bool clks_panic_qr_show(void) {
struct clks_framebuffer_info fb_info;
int qr_size;
u32 modules;
u32 scale;
u32 draw_w;
u32 draw_h;
u32 base_x;
u32 base_y;
u32 y;
u32 x;
if (clks_panic_qr_ready == CLKS_FALSE) {
if (clks_panic_qr_prepare() == CLKS_FALSE) {
return CLKS_FALSE;
}
}
if (clks_fb_ready() == CLKS_FALSE) {
return CLKS_FALSE;
}
qr_size = qrcodegen_getSize(clks_panic_qr_code);
if (qr_size <= 0) {
return CLKS_FALSE;
}
fb_info = clks_fb_info();
modules = (u32)qr_size + (CLKS_PANIC_QR_BORDER * 2U);
if (modules == 0U) {
return CLKS_FALSE;
}
scale = fb_info.width / modules;
if ((fb_info.height / modules) < scale) {
scale = fb_info.height / modules;
}
if (scale == 0U) {
return CLKS_FALSE;
}
draw_w = modules * scale;
draw_h = modules * scale;
base_x = (fb_info.width > draw_w) ? ((fb_info.width - draw_w) / 2U) : 0U;
base_y = (fb_info.height > draw_h) ? ((fb_info.height - draw_h) / 2U) : 0U;
clks_fb_clear(CLKS_PANIC_QR_COLOR_LIGHT);
for (y = 0U; y < modules; y++) {
for (x = 0U; x < modules; x++) {
int qx = (int)x - (int)CLKS_PANIC_QR_BORDER;
int qy = (int)y - (int)CLKS_PANIC_QR_BORDER;
clks_bool dark = CLKS_FALSE;
if (qx >= 0 && qy >= 0 && qx < qr_size && qy < qr_size) {
dark = qrcodegen_getModule(clks_panic_qr_code, qx, qy) ? CLKS_TRUE : CLKS_FALSE;
}
if (dark == CLKS_TRUE) {
clks_fb_fill_rect(base_x + (x * scale), base_y + (y * scale), scale, scale, CLKS_PANIC_QR_COLOR_DARK);
}
}
}
clks_serial_write("[PANIC][QR] LINES:");
{
char hex_buf[19];
clks_serial_write(" TOTAL=");
clks_memset(hex_buf, 0, sizeof(hex_buf));
hex_buf[0] = '0';
hex_buf[1] = 'X';
for (int i = 0; i < 16; i++) {
u8 n = (u8)((clks_panic_qr_total_lines_cache >> ((15 - i) * 4)) & 0x0FULL);
hex_buf[2 + i] = (n < 10U) ? (char)('0' + n) : (char)('A' + (n - 10U));
}
clks_serial_write(hex_buf);
clks_serial_write(" DROPPED=");
for (int i = 0; i < 16; i++) {
u8 n = (u8)((clks_panic_qr_dropped_lines_cache >> ((15 - i) * 4)) & 0x0FULL);
hex_buf[2 + i] = (n < 10U) ? (char)('0' + n) : (char)('A' + (n - 10U));
}
clks_serial_write(hex_buf);
clks_serial_write(" COMP_BYTES=");
for (int i = 0; i < 16; i++) {
u8 n = (u8)((clks_panic_qr_comp_size_cache >> ((15 - i) * 4)) & 0x0FULL);
hex_buf[2 + i] = (n < 10U) ? (char)('0' + n) : (char)('A' + (n - 10U));
}
clks_serial_write(hex_buf);
clks_serial_write(" DIGITS=");
for (int i = 0; i < 16; i++) {
u8 n = (u8)((clks_panic_qr_digits_size_cache >> ((15 - i) * 4)) & 0x0FULL);
hex_buf[2 + i] = (n < 10U) ? (char)('0' + n) : (char)('A' + (n - 10U));
}
clks_serial_write(hex_buf);
clks_serial_write("\n");
}
return CLKS_TRUE;
}
extern "C" u64 clks_panic_qr_total_lines(void) {
return clks_panic_qr_total_lines_cache;
}
extern "C" u64 clks_panic_qr_dropped_lines(void) {
return clks_panic_qr_dropped_lines_cache;
}

View File

@@ -46,7 +46,9 @@ static u64 clks_shell_cmd_unknown = 0ULL;
static clks_bool clks_shell_pending_command = CLKS_FALSE; static clks_bool clks_shell_pending_command = CLKS_FALSE;
static char clks_shell_pending_line[CLKS_SHELL_LINE_MAX]; static char clks_shell_pending_line[CLKS_SHELL_LINE_MAX];
extern void clks_rusttest_hello(void); __attribute__((weak)) void clks_rusttest_hello(void) {
clks_tty_write("rusttest: rust symbol unavailable\n");
}
static clks_bool clks_shell_is_space(char ch) { static clks_bool clks_shell_is_space(char ch) {
return (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n') ? CLKS_TRUE : CLKS_FALSE; return (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n') ? CLKS_TRUE : CLKS_FALSE;

View File

@@ -2,7 +2,11 @@
#include <clks/string.h> #include <clks/string.h>
#include <clks/types.h> #include <clks/types.h>
#define CLKS_HEAP_ARENA_SIZE (1024ULL * 1024ULL) #ifndef CLKS_CFG_HEAP_ARENA_SIZE
#define CLKS_CFG_HEAP_ARENA_SIZE (64ULL * 1024ULL * 1024ULL)
#endif
#define CLKS_HEAP_ARENA_SIZE CLKS_CFG_HEAP_ARENA_SIZE
#define CLKS_HEAP_ALIGN 16ULL #define CLKS_HEAP_ALIGN 16ULL
#define CLKS_HEAP_MAGIC 0x434C454F4E4F534FULL #define CLKS_HEAP_MAGIC 0x434C454F4E4F534FULL
@@ -173,4 +177,4 @@ struct clks_heap_stats clks_heap_get_stats(void) {
stats.free_count = clks_heap_free_count; stats.free_count = clks_heap_free_count;
return stats; return stats;
} }

View File

@@ -1,5 +1,6 @@
#include <clks/elf64.h> #include <clks/elf64.h>
#include <clks/heap.h> #include <clks/heap.h>
#include <clks/log.h>
#include <clks/string.h> #include <clks/string.h>
#include <clks/types.h> #include <clks/types.h>
@@ -17,6 +18,8 @@
#define CLKS_ELF64_EM_X86_64 62U #define CLKS_ELF64_EM_X86_64 62U
#define CLKS_ELF64_PF_X 0x1U
struct clks_elf64_ehdr { struct clks_elf64_ehdr {
u8 e_ident[16]; u8 e_ident[16];
u16 e_type; u16 e_type;
@@ -90,6 +93,42 @@ static clks_bool clks_elf64_range_ok(u64 off, u64 len, u64 total) {
return CLKS_TRUE; return CLKS_TRUE;
} }
static void clks_elf64_rebase_exec_pointers(struct clks_elf64_loaded_image *loaded, u64 old_base, u64 old_end,
u64 delta) {
u16 seg_index;
if (loaded == CLKS_NULL || delta == 0ULL || old_end <= old_base) {
return;
}
for (seg_index = 0U; seg_index < loaded->segment_count; seg_index++) {
struct clks_elf64_loaded_segment *seg = &loaded->segments[seg_index];
u64 scan_len;
u64 off;
/* Skip executable segments to avoid patching instruction bytes. */
if ((seg->flags & CLKS_ELF64_PF_X) != 0U) {
continue;
}
scan_len = seg->filesz;
if (scan_len < sizeof(u64)) {
continue;
}
scan_len -= (scan_len % sizeof(u64));
for (off = 0ULL; off < scan_len; off += sizeof(u64)) {
u64 *slot = (u64 *)((u8 *)seg->base + (usize)off);
u64 value = *slot;
if (value >= old_base && value < old_end) {
*slot = value + delta;
}
}
}
}
clks_bool clks_elf64_validate(const void *image, u64 size) { clks_bool clks_elf64_validate(const void *image, u64 size) {
const struct clks_elf64_ehdr *eh; const struct clks_elf64_ehdr *eh;
u64 ph_table_size; u64 ph_table_size;
@@ -230,6 +269,10 @@ clks_bool clks_elf64_load(const void *image, u64 size, struct clks_elf64_loaded_
image_base = clks_kmalloc((usize)span); image_base = clks_kmalloc((usize)span);
if (image_base == CLKS_NULL) { if (image_base == CLKS_NULL) {
clks_log(CLKS_LOG_WARN, "ELF", "LOAD ALLOC FAILED");
clks_log_hex(CLKS_LOG_WARN, "ELF", "SPAN", span);
clks_log_hex(CLKS_LOG_WARN, "ELF", "MIN_VADDR", min_vaddr);
clks_log_hex(CLKS_LOG_WARN, "ELF", "MAX_VADDR_END", max_vaddr_end);
return CLKS_FALSE; return CLKS_FALSE;
} }
@@ -273,6 +316,17 @@ clks_bool clks_elf64_load(const void *image, u64 size, struct clks_elf64_loaded_
out_loaded->segment_count++; out_loaded->segment_count++;
} }
if (eh->e_type == CLKS_ELF64_ET_EXEC) {
u64 new_base = (u64)(usize)image_base;
u64 old_base = min_vaddr;
u64 old_end = max_vaddr_end;
if (new_base != old_base) {
u64 delta = new_base - old_base;
clks_elf64_rebase_exec_pointers(out_loaded, old_base, old_end, delta);
}
}
return CLKS_TRUE; return CLKS_TRUE;
} }

View File

@@ -13,7 +13,7 @@
typedef u64 (*clks_exec_entry_fn)(void); typedef u64 (*clks_exec_entry_fn)(void);
#define CLKS_EXEC_RUN_STACK_BYTES (64ULL * 1024ULL) #define CLKS_EXEC_RUN_STACK_BYTES (1024ULL * 1024ULL)
#define CLKS_EXEC_MAX_PROCS 64U #define CLKS_EXEC_MAX_PROCS 64U
#define CLKS_EXEC_MAX_DEPTH 16U #define CLKS_EXEC_MAX_DEPTH 16U
#define CLKS_EXEC_PATH_MAX 192U #define CLKS_EXEC_PATH_MAX 192U
@@ -160,6 +160,11 @@ struct clks_exec_dynlib_slot {
#if defined(CLKS_ARCH_X86_64) #if defined(CLKS_ARCH_X86_64)
extern u64 clks_exec_call_on_stack_x86_64(void *entry_ptr, void *stack_top); extern u64 clks_exec_call_on_stack_x86_64(void *entry_ptr, void *stack_top);
extern void clks_exec_abort_to_caller_x86_64(void); extern void clks_exec_abort_to_caller_x86_64(void);
static u64 clks_exec_read_cr2(void) {
u64 value = 0ULL;
__asm__ volatile("mov %%cr2, %0" : "=r"(value));
return value;
}
#endif #endif
static u64 clks_exec_requests = 0ULL; static u64 clks_exec_requests = 0ULL;
@@ -178,6 +183,10 @@ static u64 clks_exec_unwind_slot_stack[CLKS_EXEC_MAX_DEPTH];
static clks_bool clks_exec_unwind_slot_valid_stack[CLKS_EXEC_MAX_DEPTH]; static clks_bool clks_exec_unwind_slot_valid_stack[CLKS_EXEC_MAX_DEPTH];
static u64 clks_exec_image_begin_stack[CLKS_EXEC_MAX_DEPTH]; static u64 clks_exec_image_begin_stack[CLKS_EXEC_MAX_DEPTH];
static u64 clks_exec_image_end_stack[CLKS_EXEC_MAX_DEPTH]; static u64 clks_exec_image_end_stack[CLKS_EXEC_MAX_DEPTH];
static u64 clks_exec_image_vaddr_begin_stack[CLKS_EXEC_MAX_DEPTH];
static u64 clks_exec_image_vaddr_end_stack[CLKS_EXEC_MAX_DEPTH];
static u64 clks_exec_stack_begin_stack[CLKS_EXEC_MAX_DEPTH];
static u64 clks_exec_stack_end_stack[CLKS_EXEC_MAX_DEPTH];
static u32 clks_exec_pid_stack_depth = 0U; static u32 clks_exec_pid_stack_depth = 0U;
static struct clks_exec_dynlib_slot clks_exec_dynlib_table[CLKS_EXEC_DYNLIB_MAX]; static struct clks_exec_dynlib_slot clks_exec_dynlib_table[CLKS_EXEC_DYNLIB_MAX];
static u64 clks_exec_next_dynlib_handle = 1ULL; static u64 clks_exec_next_dynlib_handle = 1ULL;
@@ -315,6 +324,89 @@ static clks_bool clks_exec_rip_is_current_user_context(u64 rip) {
return (rip >= image_begin && rip < image_end) ? CLKS_TRUE : CLKS_FALSE; return (rip >= image_begin && rip < image_end) ? CLKS_TRUE : CLKS_FALSE;
} }
static clks_bool clks_exec_translate_legacy_user_rip(u64 rip, u64 *out_rip) {
i32 depth_index;
u64 vaddr_begin;
u64 vaddr_end;
u64 image_begin;
u64 image_end;
u64 off;
u64 translated;
if (out_rip == CLKS_NULL || clks_exec_pid_stack_depth == 0U) {
return CLKS_FALSE;
}
depth_index = (i32)(clks_exec_pid_stack_depth - 1U);
vaddr_begin = clks_exec_image_vaddr_begin_stack[(u32)depth_index];
vaddr_end = clks_exec_image_vaddr_end_stack[(u32)depth_index];
image_begin = clks_exec_image_begin_stack[(u32)depth_index];
image_end = clks_exec_image_end_stack[(u32)depth_index];
if (vaddr_begin == 0ULL || vaddr_end <= vaddr_begin || image_begin == 0ULL || image_end <= image_begin) {
return CLKS_FALSE;
}
if (rip < vaddr_begin || rip >= vaddr_end) {
return CLKS_FALSE;
}
off = rip - vaddr_begin;
if (off >= (image_end - image_begin)) {
return CLKS_FALSE;
}
translated = image_begin + off;
if (translated < image_begin || translated >= image_end) {
return CLKS_FALSE;
}
*out_rip = translated;
return CLKS_TRUE;
}
static clks_bool clks_exec_translate_loaded_user_rip_to_vaddr(u64 rip, u64 *out_rip) {
i32 depth_index;
u64 vaddr_begin;
u64 vaddr_end;
u64 image_begin;
u64 image_end;
u64 off;
u64 translated;
if (out_rip == CLKS_NULL || clks_exec_pid_stack_depth == 0U) {
return CLKS_FALSE;
}
depth_index = (i32)(clks_exec_pid_stack_depth - 1U);
vaddr_begin = clks_exec_image_vaddr_begin_stack[(u32)depth_index];
vaddr_end = clks_exec_image_vaddr_end_stack[(u32)depth_index];
image_begin = clks_exec_image_begin_stack[(u32)depth_index];
image_end = clks_exec_image_end_stack[(u32)depth_index];
if (vaddr_begin == 0ULL || vaddr_end <= vaddr_begin || image_begin == 0ULL || image_end <= image_begin) {
return CLKS_FALSE;
}
if (rip < image_begin || rip >= image_end) {
return CLKS_FALSE;
}
off = rip - image_begin;
if (off >= (vaddr_end - vaddr_begin)) {
return CLKS_FALSE;
}
translated = vaddr_begin + off;
if (translated < vaddr_begin || translated >= vaddr_end) {
return CLKS_FALSE;
}
*out_rip = translated;
return CLKS_TRUE;
}
static void clks_exec_copy_path(char *dst, usize dst_size, const char *src) { static void clks_exec_copy_path(char *dst, usize dst_size, const char *src) {
usize i = 0U; usize i = 0U;
@@ -362,6 +454,26 @@ static clks_bool clks_exec_range_ok(u64 off, u64 len, u64 total) {
return CLKS_TRUE; return CLKS_TRUE;
} }
static clks_bool clks_exec_addr_range_in_window(u64 addr, u64 size, u64 begin, u64 end) {
if (begin == 0ULL || end <= begin) {
return CLKS_FALSE;
}
if (size == 0ULL) {
return CLKS_FALSE;
}
if (addr < begin || addr >= end) {
return CLKS_FALSE;
}
if (size > (end - addr)) {
return CLKS_FALSE;
}
return CLKS_TRUE;
}
static i32 clks_exec_dynlib_alloc_slot(void) { static i32 clks_exec_dynlib_alloc_slot(void) {
u32 i; u32 i;
@@ -724,6 +836,41 @@ static u64 clks_exec_encode_signal_status(u64 signal, u64 vector, u64 error_code
((error_code & 0xFFFFULL) << 16); ((error_code & 0xFFFFULL) << 16);
} }
static clks_bool clks_exec_status_is_signal(u64 status) {
return ((status & CLKS_EXEC_STATUS_SIGNAL_FLAG) != 0ULL) ? CLKS_TRUE : CLKS_FALSE;
}
static u64 clks_exec_status_signal(u64 status) {
return status & 0xFFULL;
}
static u64 clks_exec_status_vector(u64 status) {
return (status >> 8) & 0xFFULL;
}
static u64 clks_exec_status_error(u64 status) {
return (status >> 16) & 0xFFFFULL;
}
static clks_bool clks_exec_status_is_user_terminated(u64 status) {
u64 signal;
if (clks_exec_status_is_signal(status) == CLKS_FALSE) {
return CLKS_FALSE;
}
if (clks_exec_status_vector(status) != 0ULL || clks_exec_status_error(status) != 0ULL) {
return CLKS_FALSE;
}
signal = clks_exec_status_signal(status);
if (signal == CLKS_EXEC_SIGNAL_TERM || signal == CLKS_EXEC_SIGNAL_KILL || signal == CLKS_EXEC_SIGNAL_STOP) {
return CLKS_TRUE;
}
return CLKS_FALSE;
}
static i32 clks_exec_proc_find_slot_by_pid(u64 pid) { static i32 clks_exec_proc_find_slot_by_pid(u64 pid) {
u32 i; u32 i;
@@ -1179,6 +1326,8 @@ static clks_bool clks_exec_invoke_entry(void *entry_ptr, u32 depth_index, u64 *o
} }
stack_top = (void *)((u8 *)stack_base + (usize)CLKS_EXEC_RUN_STACK_BYTES); stack_top = (void *)((u8 *)stack_base + (usize)CLKS_EXEC_RUN_STACK_BYTES);
clks_exec_stack_begin_stack[depth_index] = (u64)stack_base;
clks_exec_stack_end_stack[depth_index] = (u64)stack_top;
unwind_slot = (((u64)stack_top) & ~0xFULL) - CLKS_EXEC_UNWIND_CTX_BYTES; unwind_slot = (((u64)stack_top) & ~0xFULL) - CLKS_EXEC_UNWIND_CTX_BYTES;
clks_exec_unwind_slot_stack[depth_index] = unwind_slot; clks_exec_unwind_slot_stack[depth_index] = unwind_slot;
clks_exec_unwind_slot_valid_stack[depth_index] = CLKS_TRUE; clks_exec_unwind_slot_valid_stack[depth_index] = CLKS_TRUE;
@@ -1192,6 +1341,8 @@ static clks_bool clks_exec_invoke_entry(void *entry_ptr, u32 depth_index, u64 *o
/* Close unwind window immediately after call returns to avoid IRQ race. */ /* Close unwind window immediately after call returns to avoid IRQ race. */
clks_exec_unwind_slot_valid_stack[depth_index] = CLKS_FALSE; clks_exec_unwind_slot_valid_stack[depth_index] = CLKS_FALSE;
clks_exec_unwind_slot_stack[depth_index] = 0ULL; clks_exec_unwind_slot_stack[depth_index] = 0ULL;
clks_exec_stack_begin_stack[depth_index] = 0ULL;
clks_exec_stack_end_stack[depth_index] = 0ULL;
clks_exec_restore_interrupt_window(restore_irq_disable); clks_exec_restore_interrupt_window(restore_irq_disable);
*out_ret = call_ret; *out_ret = call_ret;
@@ -1254,6 +1405,10 @@ static clks_bool clks_exec_run_proc_slot(i32 slot, u64 *out_status) {
clks_exec_stop_requested_stack[(u32)depth_index] = CLKS_FALSE; clks_exec_stop_requested_stack[(u32)depth_index] = CLKS_FALSE;
clks_exec_image_begin_stack[(u32)depth_index] = 0ULL; clks_exec_image_begin_stack[(u32)depth_index] = 0ULL;
clks_exec_image_end_stack[(u32)depth_index] = 0ULL; clks_exec_image_end_stack[(u32)depth_index] = 0ULL;
clks_exec_image_vaddr_begin_stack[(u32)depth_index] = 0ULL;
clks_exec_image_vaddr_end_stack[(u32)depth_index] = 0ULL;
clks_exec_stack_begin_stack[(u32)depth_index] = 0ULL;
clks_exec_stack_end_stack[(u32)depth_index] = 0ULL;
clks_exec_pid_stack_depth++; clks_exec_pid_stack_depth++;
depth_pushed = CLKS_TRUE; depth_pushed = CLKS_TRUE;
@@ -1300,12 +1455,17 @@ static clks_bool clks_exec_run_proc_slot(i32 slot, u64 *out_status) {
clks_exec_image_begin_stack[(u32)depth_index] = image_begin; clks_exec_image_begin_stack[(u32)depth_index] = image_begin;
clks_exec_image_end_stack[(u32)depth_index] = image_end; clks_exec_image_end_stack[(u32)depth_index] = image_end;
clks_exec_image_vaddr_begin_stack[(u32)depth_index] = loaded.image_vaddr_base;
clks_exec_image_vaddr_end_stack[(u32)depth_index] = loaded.image_vaddr_base + loaded.image_size;
} }
clks_exec_log_info_serial("EXEC RUN START"); clks_exec_log_info_serial("EXEC RUN START");
clks_exec_log_info_serial(proc->path); clks_exec_log_info_serial(proc->path);
clks_exec_log_hex_serial("ENTRY", info.entry); clks_exec_log_hex_serial("ENTRY", info.entry);
clks_exec_log_hex_serial("PHNUM", (u64)info.phnum); clks_exec_log_hex_serial("PHNUM", (u64)info.phnum);
clks_exec_log_hex_serial("IMAGE_BASE", (u64)loaded.image_base);
clks_exec_log_hex_serial("IMAGE_SIZE", loaded.image_size);
clks_exec_log_hex_serial("VADDR_BASE", loaded.image_vaddr_base);
clks_exec_running_depth++; clks_exec_running_depth++;
depth_counted = CLKS_TRUE; depth_counted = CLKS_TRUE;
@@ -1328,6 +1488,12 @@ static clks_bool clks_exec_run_proc_slot(i32 slot, u64 *out_status) {
clks_exec_log_info_serial("RUN RETURNED"); clks_exec_log_info_serial("RUN RETURNED");
clks_exec_log_info_serial(proc->path); clks_exec_log_info_serial(proc->path);
clks_exec_log_hex_serial("RET", run_ret); clks_exec_log_hex_serial("RET", run_ret);
if (clks_exec_status_is_user_terminated(run_ret) == CLKS_TRUE) {
clks_exec_log_info_serial("TERMINATED BY USER");
clks_exec_log_info_serial(proc->path);
clks_exec_log_hex_serial("PID", proc->pid);
clks_exec_log_hex_serial("SIGNAL", clks_exec_status_signal(run_ret));
}
clks_exec_success++; clks_exec_success++;
if (clks_exec_stop_requested_stack[(u32)depth_index] == CLKS_TRUE) { if (clks_exec_stop_requested_stack[(u32)depth_index] == CLKS_TRUE) {
@@ -1348,6 +1514,10 @@ static clks_bool clks_exec_run_proc_slot(i32 slot, u64 *out_status) {
clks_exec_stop_requested_stack[(u32)depth_index] = CLKS_FALSE; clks_exec_stop_requested_stack[(u32)depth_index] = CLKS_FALSE;
clks_exec_image_begin_stack[(u32)depth_index] = 0ULL; clks_exec_image_begin_stack[(u32)depth_index] = 0ULL;
clks_exec_image_end_stack[(u32)depth_index] = 0ULL; clks_exec_image_end_stack[(u32)depth_index] = 0ULL;
clks_exec_image_vaddr_begin_stack[(u32)depth_index] = 0ULL;
clks_exec_image_vaddr_end_stack[(u32)depth_index] = 0ULL;
clks_exec_stack_begin_stack[(u32)depth_index] = 0ULL;
clks_exec_stack_end_stack[(u32)depth_index] = 0ULL;
clks_exec_pid_stack_depth--; clks_exec_pid_stack_depth--;
depth_pushed = CLKS_FALSE; depth_pushed = CLKS_FALSE;
} }
@@ -1374,6 +1544,10 @@ fail:
clks_exec_stop_requested_stack[(u32)depth_index] = CLKS_FALSE; clks_exec_stop_requested_stack[(u32)depth_index] = CLKS_FALSE;
clks_exec_image_begin_stack[(u32)depth_index] = 0ULL; clks_exec_image_begin_stack[(u32)depth_index] = 0ULL;
clks_exec_image_end_stack[(u32)depth_index] = 0ULL; clks_exec_image_end_stack[(u32)depth_index] = 0ULL;
clks_exec_image_vaddr_begin_stack[(u32)depth_index] = 0ULL;
clks_exec_image_vaddr_end_stack[(u32)depth_index] = 0ULL;
clks_exec_stack_begin_stack[(u32)depth_index] = 0ULL;
clks_exec_stack_end_stack[(u32)depth_index] = 0ULL;
clks_exec_pid_stack_depth--; clks_exec_pid_stack_depth--;
} }
@@ -1484,6 +1658,10 @@ void clks_exec_init(void) {
clks_memset(clks_exec_unwind_slot_valid_stack, 0, sizeof(clks_exec_unwind_slot_valid_stack)); clks_memset(clks_exec_unwind_slot_valid_stack, 0, sizeof(clks_exec_unwind_slot_valid_stack));
clks_memset(clks_exec_image_begin_stack, 0, sizeof(clks_exec_image_begin_stack)); clks_memset(clks_exec_image_begin_stack, 0, sizeof(clks_exec_image_begin_stack));
clks_memset(clks_exec_image_end_stack, 0, sizeof(clks_exec_image_end_stack)); clks_memset(clks_exec_image_end_stack, 0, sizeof(clks_exec_image_end_stack));
clks_memset(clks_exec_image_vaddr_begin_stack, 0, sizeof(clks_exec_image_vaddr_begin_stack));
clks_memset(clks_exec_image_vaddr_end_stack, 0, sizeof(clks_exec_image_vaddr_end_stack));
clks_memset(clks_exec_stack_begin_stack, 0, sizeof(clks_exec_stack_begin_stack));
clks_memset(clks_exec_stack_end_stack, 0, sizeof(clks_exec_stack_end_stack));
clks_memset(clks_exec_proc_table, 0, sizeof(clks_exec_proc_table)); clks_memset(clks_exec_proc_table, 0, sizeof(clks_exec_proc_table));
clks_memset(clks_exec_dynlib_table, 0, sizeof(clks_exec_dynlib_table)); clks_memset(clks_exec_dynlib_table, 0, sizeof(clks_exec_dynlib_table));
clks_exec_next_dynlib_handle = 1ULL; clks_exec_next_dynlib_handle = 1ULL;
@@ -2271,6 +2449,13 @@ u64 clks_exec_proc_kill(u64 pid, u64 signal) {
if (proc->state == CLKS_EXEC_PROC_PENDING || proc->state == CLKS_EXEC_PROC_STOPPED) { if (proc->state == CLKS_EXEC_PROC_PENDING || proc->state == CLKS_EXEC_PROC_STOPPED) {
clks_exec_proc_mark_exited(proc, now_tick, status); clks_exec_proc_mark_exited(proc, now_tick, status);
if (effective_signal == CLKS_EXEC_SIGNAL_TERM || effective_signal == CLKS_EXEC_SIGNAL_KILL ||
effective_signal == CLKS_EXEC_SIGNAL_STOP) {
clks_exec_log_info_serial("TERMINATED BY USER");
clks_exec_log_info_serial(proc->path);
clks_exec_log_hex_serial("PID", proc->pid);
clks_exec_log_hex_serial("SIGNAL", effective_signal);
}
return 1ULL; return 1ULL;
} }
@@ -2419,6 +2604,20 @@ clks_bool clks_exec_handle_exception(u64 vector, u64 error_code, u64 rip, u64 *i
return CLKS_FALSE; return CLKS_FALSE;
} }
#if defined(CLKS_ARCH_X86_64)
if (vector == 14ULL && (error_code & 0x10ULL) != 0ULL && io_rip != CLKS_NULL) {
u64 translated_rip = 0ULL;
if (clks_exec_translate_legacy_user_rip(rip, &translated_rip) == CLKS_TRUE) {
*io_rip = translated_rip;
clks_exec_log_info_serial("USER RIP LEGACY REBASE");
clks_exec_log_hex_serial("RIP_OLD", rip);
clks_exec_log_hex_serial("RIP_NEW", translated_rip);
return CLKS_TRUE;
}
}
#endif
signal = clks_exec_signal_from_vector(vector); signal = clks_exec_signal_from_vector(vector);
status = clks_exec_encode_signal_status(signal, vector, error_code); status = clks_exec_encode_signal_status(signal, vector, error_code);
@@ -2437,6 +2636,17 @@ clks_bool clks_exec_handle_exception(u64 vector, u64 error_code, u64 rip, u64 *i
clks_exec_log_hex_serial("VECTOR", vector); clks_exec_log_hex_serial("VECTOR", vector);
clks_exec_log_hex_serial("ERROR", error_code); clks_exec_log_hex_serial("ERROR", error_code);
clks_exec_log_hex_serial("RIP", rip); clks_exec_log_hex_serial("RIP", rip);
{
u64 rip_vaddr = 0ULL;
if (clks_exec_translate_loaded_user_rip_to_vaddr(rip, &rip_vaddr) == CLKS_TRUE) {
clks_exec_log_hex_serial("RIP_VADDR", rip_vaddr);
}
}
#if defined(CLKS_ARCH_X86_64)
if (vector == 14ULL) {
clks_exec_log_hex_serial("CR2", clks_exec_read_cr2());
}
#endif
#if defined(CLKS_ARCH_X86_64) #if defined(CLKS_ARCH_X86_64)
if (io_rip == CLKS_NULL || io_rdi == CLKS_NULL || io_rsi == CLKS_NULL) { if (io_rip == CLKS_NULL || io_rdi == CLKS_NULL || io_rsi == CLKS_NULL) {
@@ -2526,3 +2736,39 @@ clks_bool clks_exec_current_path_is_user(void) {
proc = &clks_exec_proc_table[(u32)slot]; proc = &clks_exec_proc_table[(u32)slot];
return clks_exec_path_is_user_program(proc->path); return clks_exec_path_is_user_program(proc->path);
} }
clks_bool clks_exec_current_user_ptr_readable(u64 addr, u64 size) {
i32 depth_index;
u64 image_begin;
u64 image_end;
u64 stack_begin;
u64 stack_end;
if (clks_exec_is_running() == CLKS_FALSE || clks_exec_current_path_is_user() == CLKS_FALSE) {
return CLKS_FALSE;
}
if (size == 0ULL || clks_exec_pid_stack_depth == 0U) {
return CLKS_FALSE;
}
depth_index = (i32)(clks_exec_pid_stack_depth - 1U);
image_begin = clks_exec_image_begin_stack[(u32)depth_index];
image_end = clks_exec_image_end_stack[(u32)depth_index];
stack_begin = clks_exec_stack_begin_stack[(u32)depth_index];
stack_end = clks_exec_stack_end_stack[(u32)depth_index];
if (clks_exec_addr_range_in_window(addr, size, image_begin, image_end) == CLKS_TRUE) {
return CLKS_TRUE;
}
if (clks_exec_addr_range_in_window(addr, size, stack_begin, stack_end) == CLKS_TRUE) {
return CLKS_TRUE;
}
return CLKS_FALSE;
}
clks_bool clks_exec_current_user_ptr_writable(u64 addr, u64 size) {
return clks_exec_current_user_ptr_readable(addr, size);
}

View File

@@ -1,6 +1,7 @@
#include <clks/cpu.h> #include <clks/cpu.h>
#include <clks/audio.h> #include <clks/audio.h>
#include <clks/exec.h> #include <clks/exec.h>
#include <clks/framebuffer.h>
#include <clks/fs.h> #include <clks/fs.h>
#include <clks/heap.h> #include <clks/heap.h>
#include <clks/interrupts.h> #include <clks/interrupts.h>
@@ -15,6 +16,7 @@
#include <clks/tty.h> #include <clks/tty.h>
#include <clks/types.h> #include <clks/types.h>
#include <clks/userland.h> #include <clks/userland.h>
#include <cleonos_version.h>
#define CLKS_SYSCALL_LOG_MAX_LEN 191U #define CLKS_SYSCALL_LOG_MAX_LEN 191U
#define CLKS_SYSCALL_PATH_MAX 192U #define CLKS_SYSCALL_PATH_MAX 192U
@@ -32,7 +34,7 @@
#define CLKS_SYSCALL_KDBG_STACK_WINDOW_BYTES (128ULL * 1024ULL) #define CLKS_SYSCALL_KDBG_STACK_WINDOW_BYTES (128ULL * 1024ULL)
#define CLKS_SYSCALL_KERNEL_SYMBOL_FILE "/system/kernel.sym" #define CLKS_SYSCALL_KERNEL_SYMBOL_FILE "/system/kernel.sym"
#define CLKS_SYSCALL_KERNEL_ADDR_BASE 0xFFFF800000000000ULL #define CLKS_SYSCALL_KERNEL_ADDR_BASE 0xFFFF800000000000ULL
#define CLKS_SYSCALL_STATS_MAX_ID CLKS_SYSCALL_EXEC_PATHV_IO #define CLKS_SYSCALL_STATS_MAX_ID CLKS_SYSCALL_KERNEL_VERSION
#define CLKS_SYSCALL_STATS_RING_SIZE 256U #define CLKS_SYSCALL_STATS_RING_SIZE 256U
#define CLKS_SYSCALL_USC_MAX_ALLOWED_APPS 64U #define CLKS_SYSCALL_USC_MAX_ALLOWED_APPS 64U
@@ -131,6 +133,23 @@ struct clks_syscall_exec_io_req {
u64 stderr_fd; u64 stderr_fd;
}; };
struct clks_syscall_fb_info_user {
u64 width;
u64 height;
u64 pitch;
u64 bpp;
};
struct clks_syscall_fb_blit_req {
u64 pixels_ptr;
u64 src_width;
u64 src_height;
u64 src_pitch_bytes;
u64 dst_x;
u64 dst_y;
u64 scale;
};
static clks_bool clks_syscall_ready = CLKS_FALSE; static clks_bool clks_syscall_ready = CLKS_FALSE;
static clks_bool clks_syscall_user_trace_active = CLKS_FALSE; static clks_bool clks_syscall_user_trace_active = CLKS_FALSE;
static u64 clks_syscall_user_trace_budget = 0ULL; static u64 clks_syscall_user_trace_budget = 0ULL;
@@ -160,16 +179,55 @@ static inline void clks_syscall_outw(u16 port, u16 value) {
} }
#endif #endif
static clks_bool clks_syscall_in_user_exec_context(void) {
return (clks_exec_is_running() == CLKS_TRUE && clks_exec_current_path_is_user() == CLKS_TRUE) ? CLKS_TRUE
: CLKS_FALSE;
}
static clks_bool clks_syscall_user_ptr_readable(u64 addr, u64 size) {
if (addr == 0ULL || size == 0ULL) {
return CLKS_FALSE;
}
if (clks_syscall_in_user_exec_context() == CLKS_FALSE) {
return CLKS_TRUE;
}
return clks_exec_current_user_ptr_readable(addr, size);
}
static clks_bool clks_syscall_user_ptr_writable(u64 addr, u64 size) {
if (addr == 0ULL || size == 0ULL) {
return CLKS_FALSE;
}
if (clks_syscall_in_user_exec_context() == CLKS_FALSE) {
return CLKS_TRUE;
}
return clks_exec_current_user_ptr_writable(addr, size);
}
static clks_bool clks_syscall_copy_user_string(u64 src_addr, char *dst, usize dst_size) { static clks_bool clks_syscall_copy_user_string(u64 src_addr, char *dst, usize dst_size) {
const char *src = (const char *)src_addr;
usize i = 0U; usize i = 0U;
if (src == CLKS_NULL || dst == CLKS_NULL || dst_size == 0U) { if (src_addr == 0ULL || dst == CLKS_NULL || dst_size == 0U) {
return CLKS_FALSE; return CLKS_FALSE;
} }
while (i + 1U < dst_size) { while (i + 1U < dst_size) {
char ch = src[i]; u64 char_addr = src_addr + (u64)i;
char ch;
if (char_addr < src_addr) {
return CLKS_FALSE;
}
if (clks_syscall_user_ptr_readable(char_addr, 1ULL) == CLKS_FALSE) {
return CLKS_FALSE;
}
ch = *(const char *)(usize)char_addr;
dst[i] = ch; dst[i] = ch;
if (ch == '\0') { if (ch == '\0') {
@@ -209,6 +267,10 @@ static u64 clks_syscall_copy_text_to_user(u64 dst_addr, u64 dst_size, const char
copy_len = (usize)dst_size - 1U; copy_len = (usize)dst_size - 1U;
} }
if (clks_syscall_user_ptr_writable(dst_addr, (u64)copy_len + 1ULL) == CLKS_FALSE) {
return 0ULL;
}
clks_memcpy((void *)dst_addr, src, copy_len); clks_memcpy((void *)dst_addr, src, copy_len);
((char *)dst_addr)[copy_len] = '\0'; ((char *)dst_addr)[copy_len] = '\0';
return (u64)copy_len; return (u64)copy_len;
@@ -228,6 +290,10 @@ static u64 clks_syscall_log_write(u64 arg0, u64 arg1) {
len = CLKS_SYSCALL_LOG_MAX_LEN; len = CLKS_SYSCALL_LOG_MAX_LEN;
} }
if (clks_syscall_user_ptr_readable((u64)(usize)src, len) == CLKS_FALSE) {
return 0ULL;
}
for (i = 0ULL; i < len; i++) { for (i = 0ULL; i < len; i++) {
buf[i] = src[i]; buf[i] = src[i];
} }
@@ -252,6 +318,10 @@ static u64 clks_syscall_tty_write(u64 arg0, u64 arg1) {
len = CLKS_SYSCALL_TTY_MAX_LEN; len = CLKS_SYSCALL_TTY_MAX_LEN;
} }
if (clks_syscall_user_ptr_readable((u64)(usize)src, len) == CLKS_FALSE) {
return 0ULL;
}
for (i = 0ULL; i < len; i++) { for (i = 0ULL; i < len; i++) {
buf[i] = src[i]; buf[i] = src[i];
} }
@@ -277,6 +347,132 @@ static u64 clks_syscall_kbd_get_char(void) {
return (u64)(u8)ch; return (u64)(u8)ch;
} }
static u64 clks_syscall_fb_info(u64 arg0) {
struct clks_syscall_fb_info_user *out_info = (struct clks_syscall_fb_info_user *)arg0;
struct clks_framebuffer_info fb_info;
if (arg0 == 0ULL || clks_fb_ready() == CLKS_FALSE) {
return 0ULL;
}
if (clks_syscall_user_ptr_writable(arg0, (u64)sizeof(*out_info)) == CLKS_FALSE) {
return 0ULL;
}
fb_info = clks_fb_info();
out_info->width = (u64)fb_info.width;
out_info->height = (u64)fb_info.height;
out_info->pitch = (u64)fb_info.pitch;
out_info->bpp = (u64)fb_info.bpp;
return 1ULL;
}
static u64 clks_syscall_fb_clear(u64 arg0) {
if (clks_fb_ready() == CLKS_FALSE) {
return 0ULL;
}
clks_fb_clear((u32)(arg0 & 0xFFFFFFFFULL));
return 1ULL;
}
static u64 clks_syscall_fb_blit(u64 arg0) {
struct clks_syscall_fb_blit_req req;
const u8 *src_base;
struct clks_framebuffer_info fb_info;
u64 src_width;
u64 src_height;
u64 src_pitch_bytes;
u64 dst_x;
u64 dst_y;
u64 scale;
u64 y;
u64 x;
if (arg0 == 0ULL || clks_fb_ready() == CLKS_FALSE) {
return 0ULL;
}
if (clks_syscall_user_ptr_readable(arg0, (u64)sizeof(req)) == CLKS_FALSE) {
return 0ULL;
}
clks_memcpy(&req, (const void *)(usize)arg0, sizeof(req));
if (req.pixels_ptr == 0ULL) {
return 0ULL;
}
src_width = req.src_width;
src_height = req.src_height;
src_pitch_bytes = req.src_pitch_bytes;
dst_x = req.dst_x;
dst_y = req.dst_y;
scale = req.scale;
if (src_width == 0ULL || src_height == 0ULL || scale == 0ULL) {
return 0ULL;
}
if (src_width > 4096ULL || src_height > 4096ULL || scale > 8ULL) {
return 0ULL;
}
if (src_pitch_bytes == 0ULL) {
src_pitch_bytes = src_width * 4ULL;
}
if (src_pitch_bytes < (src_width * 4ULL)) {
return 0ULL;
}
if (src_pitch_bytes != 0ULL && src_height > (((u64)-1) / src_pitch_bytes)) {
return 0ULL;
}
if (clks_syscall_user_ptr_readable(req.pixels_ptr, src_pitch_bytes * src_height) == CLKS_FALSE) {
return 0ULL;
}
src_base = (const u8 *)(usize)req.pixels_ptr;
fb_info = clks_fb_info();
if (dst_x >= (u64)fb_info.width || dst_y >= (u64)fb_info.height) {
return 0ULL;
}
for (y = 0ULL; y < src_height; y++) {
const u32 *src_row = (const u32 *)(const void *)(src_base + (usize)(y * src_pitch_bytes));
u64 draw_y = dst_y + (y * scale);
if (draw_y >= (u64)fb_info.height) {
break;
}
for (x = 0ULL; x < src_width; x++) {
u32 color = src_row[x];
u64 draw_x = dst_x + (x * scale);
if (draw_x >= (u64)fb_info.width) {
break;
}
if (scale == 1ULL) {
clks_fb_draw_pixel((u32)draw_x, (u32)draw_y, color);
} else {
clks_fb_fill_rect((u32)draw_x, (u32)draw_y, (u32)scale, (u32)scale, color);
}
}
}
return 1ULL;
}
static u64 clks_syscall_kernel_version(u64 arg0, u64 arg1) {
usize len = clks_strlen(CLKS_VERSION_STRING);
return clks_syscall_copy_text_to_user(arg0, arg1, CLKS_VERSION_STRING, len);
}
static u64 clks_syscall_fd_open(u64 arg0, u64 arg1, u64 arg2) { static u64 clks_syscall_fd_open(u64 arg0, u64 arg1, u64 arg2) {
char path[CLKS_SYSCALL_PATH_MAX]; char path[CLKS_SYSCALL_PATH_MAX];
@@ -292,6 +488,10 @@ static u64 clks_syscall_fd_read(u64 arg0, u64 arg1, u64 arg2) {
return (u64)-1; return (u64)-1;
} }
if (arg2 > 0ULL && clks_syscall_user_ptr_writable(arg1, arg2) == CLKS_FALSE) {
return (u64)-1;
}
return clks_exec_fd_read(arg0, (void *)arg1, arg2); return clks_exec_fd_read(arg0, (void *)arg1, arg2);
} }
@@ -300,6 +500,10 @@ static u64 clks_syscall_fd_write(u64 arg0, u64 arg1, u64 arg2) {
return (u64)-1; return (u64)-1;
} }
if (arg2 > 0ULL && clks_syscall_user_ptr_readable(arg1, arg2) == CLKS_FALSE) {
return (u64)-1;
}
return clks_exec_fd_write(arg0, (const void *)arg1, arg2); return clks_exec_fd_write(arg0, (const void *)arg1, arg2);
} }
@@ -878,6 +1082,10 @@ static u64 clks_syscall_kdbg_bt(u64 arg0) {
return 0ULL; return 0ULL;
} }
if (clks_syscall_user_ptr_readable(arg0, (u64)sizeof(req)) == CLKS_FALSE) {
return 0ULL;
}
clks_memcpy(&req, (const void *)arg0, sizeof(req)); clks_memcpy(&req, (const void *)arg0, sizeof(req));
if (req.out_ptr == 0ULL || req.out_size == 0ULL) { if (req.out_ptr == 0ULL || req.out_size == 0ULL) {
@@ -1144,6 +1352,10 @@ static u64 clks_syscall_fs_get_child_name(u64 arg0, u64 arg1, u64 arg2) {
return 0ULL; return 0ULL;
} }
if (clks_syscall_user_ptr_writable(arg2, CLKS_SYSCALL_NAME_MAX) == CLKS_FALSE) {
return 0ULL;
}
if (clks_syscall_copy_user_string(arg0, path, sizeof(path)) == CLKS_FALSE) { if (clks_syscall_copy_user_string(arg0, path, sizeof(path)) == CLKS_FALSE) {
return 0ULL; return 0ULL;
} }
@@ -1215,6 +1427,10 @@ static u64 clks_syscall_fs_read(u64 arg0, u64 arg1, u64 arg2) {
return 0ULL; return 0ULL;
} }
if (clks_syscall_user_ptr_writable(arg1, arg2) == CLKS_FALSE) {
return 0ULL;
}
if (clks_syscall_copy_user_string(arg0, path, sizeof(path)) == CLKS_FALSE) { if (clks_syscall_copy_user_string(arg0, path, sizeof(path)) == CLKS_FALSE) {
return 0ULL; return 0ULL;
} }
@@ -1309,6 +1525,10 @@ static u64 clks_syscall_exec_pathv_io(u64 arg0, u64 arg1, u64 arg2) {
return (u64)-1; return (u64)-1;
} }
if (clks_syscall_user_ptr_readable(arg2, (u64)sizeof(req)) == CLKS_FALSE) {
return (u64)-1;
}
clks_memcpy(&req, (const void *)arg2, sizeof(req)); clks_memcpy(&req, (const void *)arg2, sizeof(req));
if (clks_syscall_copy_user_optional_string(req.env_line_ptr, env_line, sizeof(env_line)) == CLKS_FALSE) { if (clks_syscall_copy_user_optional_string(req.env_line_ptr, env_line, sizeof(env_line)) == CLKS_FALSE) {
@@ -1372,6 +1592,9 @@ static u64 clks_syscall_waitpid(u64 arg0, u64 arg1) {
u64 wait_ret = clks_exec_wait_pid(arg0, &status); u64 wait_ret = clks_exec_wait_pid(arg0, &status);
if (wait_ret == 1ULL && arg1 != 0ULL) { if (wait_ret == 1ULL && arg1 != 0ULL) {
if (clks_syscall_user_ptr_writable(arg1, (u64)sizeof(status)) == CLKS_FALSE) {
return (u64)-1;
}
clks_memcpy((void *)arg1, &status, sizeof(status)); clks_memcpy((void *)arg1, &status, sizeof(status));
} }
@@ -1391,6 +1614,10 @@ static u64 clks_syscall_proc_argv(u64 arg0, u64 arg1, u64 arg2) {
arg2 = CLKS_SYSCALL_ITEM_MAX; arg2 = CLKS_SYSCALL_ITEM_MAX;
} }
if (clks_syscall_user_ptr_writable(arg1, arg2) == CLKS_FALSE) {
return 0ULL;
}
return (clks_exec_copy_current_argv(arg0, (char *)arg1, (usize)arg2) == CLKS_TRUE) ? 1ULL : 0ULL; return (clks_exec_copy_current_argv(arg0, (char *)arg1, (usize)arg2) == CLKS_TRUE) ? 1ULL : 0ULL;
} }
@@ -1407,6 +1634,10 @@ static u64 clks_syscall_proc_env(u64 arg0, u64 arg1, u64 arg2) {
arg2 = CLKS_SYSCALL_ITEM_MAX; arg2 = CLKS_SYSCALL_ITEM_MAX;
} }
if (clks_syscall_user_ptr_writable(arg1, arg2) == CLKS_FALSE) {
return 0ULL;
}
return (clks_exec_copy_current_env(arg0, (char *)arg1, (usize)arg2) == CLKS_TRUE) ? 1ULL : 0ULL; return (clks_exec_copy_current_env(arg0, (char *)arg1, (usize)arg2) == CLKS_TRUE) ? 1ULL : 0ULL;
} }
@@ -1437,6 +1668,10 @@ static u64 clks_syscall_proc_pid_at(u64 arg0, u64 arg1) {
return 0ULL; return 0ULL;
} }
if (clks_syscall_user_ptr_writable(arg1, (u64)sizeof(pid)) == CLKS_FALSE) {
return 0ULL;
}
if (clks_exec_proc_pid_at(arg0, &pid) == CLKS_FALSE) { if (clks_exec_proc_pid_at(arg0, &pid) == CLKS_FALSE) {
return 0ULL; return 0ULL;
} }
@@ -1452,6 +1687,10 @@ static u64 clks_syscall_proc_snapshot(u64 arg0, u64 arg1, u64 arg2) {
return 0ULL; return 0ULL;
} }
if (clks_syscall_user_ptr_writable(arg1, (u64)sizeof(snap)) == CLKS_FALSE) {
return 0ULL;
}
if (clks_exec_proc_snapshot(arg0, &snap) == CLKS_FALSE) { if (clks_exec_proc_snapshot(arg0, &snap) == CLKS_FALSE) {
return 0ULL; return 0ULL;
} }
@@ -1602,6 +1841,10 @@ static u64 clks_syscall_fs_write_common(u64 arg0, u64 arg1, u64 arg2, clks_bool
return 0ULL; return 0ULL;
} }
if (clks_syscall_user_ptr_readable(arg1, arg2) == CLKS_FALSE) {
return 0ULL;
}
while (remaining > 0ULL) { while (remaining > 0ULL) {
u64 chunk_len = remaining; u64 chunk_len = remaining;
void *heap_copy; void *heap_copy;
@@ -1668,6 +1911,10 @@ static u64 clks_syscall_log_journal_read(u64 arg0, u64 arg1, u64 arg2) {
return 0ULL; return 0ULL;
} }
if (clks_syscall_user_ptr_writable(arg1, arg2) == CLKS_FALSE) {
return 0ULL;
}
if (clks_log_journal_read(arg0, line, sizeof(line)) == CLKS_FALSE) { if (clks_log_journal_read(arg0, line, sizeof(line)) == CLKS_FALSE) {
return 0ULL; return 0ULL;
} }
@@ -2266,6 +2513,14 @@ u64 clks_syscall_dispatch(void *frame_ptr) {
return clks_syscall_dl_close(frame->rbx); return clks_syscall_dl_close(frame->rbx);
case CLKS_SYSCALL_DL_SYM: case CLKS_SYSCALL_DL_SYM:
return clks_syscall_dl_sym(frame->rbx, frame->rcx); return clks_syscall_dl_sym(frame->rbx, frame->rcx);
case CLKS_SYSCALL_FB_INFO:
return clks_syscall_fb_info(frame->rbx);
case CLKS_SYSCALL_FB_BLIT:
return clks_syscall_fb_blit(frame->rbx);
case CLKS_SYSCALL_FB_CLEAR:
return clks_syscall_fb_clear(frame->rbx);
case CLKS_SYSCALL_KERNEL_VERSION:
return clks_syscall_kernel_version(frame->rbx, frame->rcx);
default: default:
return (u64)-1; return (u64)-1;
} }

View File

@@ -29,4 +29,34 @@ int memcmp(const void *left, const void *right, usize count) {
int bcmp(const void *left, const void *right, usize count) { int bcmp(const void *left, const void *right, usize count) {
return memcmp(left, right, count); return memcmp(left, right, count);
} }
usize strlen(const char *str) {
return clks_strlen(str);
}
char *strchr(const char *str, int c) {
char ch = (char)c;
const char *cur = str;
while (*cur != '\0') {
if (*cur == ch) {
return (char *)cur;
}
cur++;
}
if (ch == '\0') {
return (char *)cur;
}
return (char *)0;
}
int abs(int value) {
return (value < 0) ? -value : value;
}
long labs(long value) {
return (value < 0L) ? -value : value;
}

618
clks/third_party/miniz/miniz.h vendored Normal file
View File

@@ -0,0 +1,618 @@
/* miniz.c 3.1.0 - public domain deflate/inflate, zlib-subset, ZIP reading/writing/appending, PNG writing
See "unlicense" statement at the end of this file.
Rich Geldreich <richgel99@gmail.com>, last updated Oct. 13, 2013
Implements RFC 1950: http://www.ietf.org/rfc/rfc1950.txt and RFC 1951: http://www.ietf.org/rfc/rfc1951.txt
Most API's defined in miniz.c are optional. For example, to disable the archive related functions just define
MINIZ_NO_ARCHIVE_APIS, or to get rid of all stdio usage define MINIZ_NO_STDIO (see the list below for more macros).
* Low-level Deflate/Inflate implementation notes:
Compression: Use the "tdefl" API's. The compressor supports raw, static, and dynamic blocks, lazy or
greedy parsing, match length filtering, RLE-only, and Huffman-only streams. It performs and compresses
approximately as well as zlib.
Decompression: Use the "tinfl" API's. The entire decompressor is implemented as a single function
coroutine: see tinfl_decompress(). It supports decompression into a 32KB (or larger power of 2) wrapping buffer, or
into a memory block large enough to hold the entire file.
The low-level tdefl/tinfl API's do not make any use of dynamic memory allocation.
* zlib-style API notes:
miniz.c implements a fairly large subset of zlib. There's enough functionality present for it to be a drop-in
zlib replacement in many apps:
The z_stream struct, optional memory allocation callbacks
deflateInit/deflateInit2/deflate/deflateReset/deflateEnd/deflateBound
inflateInit/inflateInit2/inflate/inflateReset/inflateEnd
compress, compress2, compressBound, uncompress
CRC-32, Adler-32 - Using modern, minimal code size, CPU cache friendly routines.
Supports raw deflate streams or standard zlib streams with adler-32 checking.
Limitations:
The callback API's are not implemented yet. No support for gzip headers or zlib static dictionaries.
I've tried to closely emulate zlib's various flavors of stream flushing and return status codes, but
there are no guarantees that miniz.c pulls this off perfectly.
* PNG writing: See the tdefl_write_image_to_png_file_in_memory() function, originally written by
Alex Evans. Supports 1-4 bytes/pixel images.
* ZIP archive API notes:
The ZIP archive API's where designed with simplicity and efficiency in mind, with just enough abstraction to
get the job done with minimal fuss. There are simple API's to retrieve file information, read files from
existing archives, create new archives, append new files to existing archives, or clone archive data from
one archive to another. It supports archives located in memory or the heap, on disk (using stdio.h),
or you can specify custom file read/write callbacks.
- Archive reading: Just call this function to read a single file from a disk archive:
void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, const char *pArchive_name,
size_t *pSize, mz_uint zip_flags);
For more complex cases, use the "mz_zip_reader" functions. Upon opening an archive, the entire central
directory is located and read as-is into memory, and subsequent file access only occurs when reading individual
files.
- Archives file scanning: The simple way is to use this function to scan a loaded archive for a specific file:
int mz_zip_reader_locate_file(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags);
The locate operation can optionally check file comments too, which (as one example) can be used to identify
multiple versions of the same file in an archive. This function uses a simple linear search through the central
directory, so it's not very fast.
Alternately, you can iterate through all the files in an archive (using mz_zip_reader_get_num_files()) and
retrieve detailed info on each file by calling mz_zip_reader_file_stat().
- Archive creation: Use the "mz_zip_writer" functions. The ZIP writer immediately writes compressed file data
to disk and builds an exact image of the central directory in memory. The central directory image is written
all at once at the end of the archive file when the archive is finalized.
The archive writer can optionally align each file's local header and file data to any power of 2 alignment,
which can be useful when the archive will be read from optical media. Also, the writer supports placing
arbitrary data blobs at the very beginning of ZIP archives. Archives written using either feature are still
readable by any ZIP tool.
- Archive appending: The simple way to add a single file to an archive is to call this function:
mz_bool mz_zip_add_mem_to_archive_file_in_place(const char *pZip_filename, const char *pArchive_name,
const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags);
The archive will be created if it doesn't already exist, otherwise it'll be appended to.
Note the appending is done in-place and is not an atomic operation, so if something goes wrong
during the operation it's possible the archive could be left without a central directory (although the local
file headers and file data will be fine, so the archive will be recoverable).
For more complex archive modification scenarios:
1. The safest way is to use a mz_zip_reader to read the existing archive, cloning only those bits you want to
preserve into a new archive using using the mz_zip_writer_add_from_zip_reader() function (which compiles the
compressed file data as-is). When you're done, delete the old archive and rename the newly written archive, and
you're done. This is safe but requires a bunch of temporary disk space or heap memory.
2. Or, you can convert an mz_zip_reader in-place to an mz_zip_writer using mz_zip_writer_init_from_reader(),
append new files as needed, then finalize the archive which will write an updated central directory to the
original archive. (This is basically what mz_zip_add_mem_to_archive_file_in_place() does.) There's a
possibility that the archive's central directory could be lost with this method if anything goes wrong, though.
- ZIP archive support limitations:
No spanning support. Extraction functions can only handle unencrypted, stored or deflated files.
Requires streams capable of seeking.
* This is a header file library, like stb_image.c. To get only a header file, either cut and paste the
below header, or create miniz.h, #define MINIZ_HEADER_FILE_ONLY, and then include miniz.c from it.
* Important: For best perf. be sure to customize the below macros for your target platform:
#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1
#define MINIZ_LITTLE_ENDIAN 1
#define MINIZ_HAS_64BIT_REGISTERS 1
* On platforms using glibc, Be sure to "#define _LARGEFILE64_SOURCE 1" before including miniz.c to ensure miniz
uses the 64-bit variants: fopen64(), stat64(), etc. Otherwise you won't be able to process large files
(i.e. 32-bit stat() fails for me on files > 0x7FFFFFFF bytes).
*/
#pragma once
#include "miniz_export.h"
#if defined(__STRICT_ANSI__)
#define MZ_FORCEINLINE
#elif defined(_MSC_VER)
#define MZ_FORCEINLINE __forceinline
#elif defined(__GNUC__)
#define MZ_FORCEINLINE __inline__ __attribute__((__always_inline__))
#else
#define MZ_FORCEINLINE inline
#endif
/* Defines to completely disable specific portions of miniz.c:
If all macros here are defined the only functionality remaining will be CRC-32 and adler-32. */
/* Define MINIZ_NO_STDIO to disable all usage and any functions which rely on stdio for file I/O. */
/*#define MINIZ_NO_STDIO */
/* If MINIZ_NO_TIME is specified then the ZIP archive functions will not be able to get the current time, or */
/* get/set file times, and the C run-time funcs that get/set times won't be called. */
/* The current downside is the times written to your archives will be from 1979. */
/*#define MINIZ_NO_TIME */
/* Define MINIZ_NO_DEFLATE_APIS to disable all compression API's. */
/*#define MINIZ_NO_DEFLATE_APIS */
/* Define MINIZ_NO_INFLATE_APIS to disable all decompression API's. */
/*#define MINIZ_NO_INFLATE_APIS */
/* Define MINIZ_NO_ARCHIVE_APIS to disable all ZIP archive API's. */
/*#define MINIZ_NO_ARCHIVE_APIS */
/* Define MINIZ_NO_ARCHIVE_WRITING_APIS to disable all writing related ZIP archive API's. */
/*#define MINIZ_NO_ARCHIVE_WRITING_APIS */
/* Define MINIZ_NO_ZLIB_APIS to remove all ZLIB-style compression/decompression API's. */
/*#define MINIZ_NO_ZLIB_APIS */
/* Define MINIZ_NO_ZLIB_COMPATIBLE_NAME to disable zlib names, to prevent conflicts against stock zlib. */
/*#define MINIZ_NO_ZLIB_COMPATIBLE_NAMES */
/* Define MINIZ_NO_MALLOC to disable all calls to malloc, free, and realloc.
Note if MINIZ_NO_MALLOC is defined then the user must always provide custom user alloc/free/realloc
callbacks to the zlib and archive API's, and a few stand-alone helper API's which don't provide custom user
functions (such as tdefl_compress_mem_to_heap() and tinfl_decompress_mem_to_heap()) won't work. */
/*#define MINIZ_NO_MALLOC */
#ifdef MINIZ_NO_INFLATE_APIS
#define MINIZ_NO_ARCHIVE_APIS
#endif
#ifdef MINIZ_NO_DEFLATE_APIS
#define MINIZ_NO_ARCHIVE_WRITING_APIS
#endif
#if defined(__TINYC__) && (defined(__linux) || defined(__linux__))
/* TODO: Work around "error: include file 'sys\utime.h' when compiling with tcc on Linux */
#define MINIZ_NO_TIME
#endif
#include <stddef.h>
#if !defined(MINIZ_NO_TIME) && !defined(MINIZ_NO_ARCHIVE_APIS)
#include <time.h>
#endif
#if defined(_M_IX86) || defined(_M_X64) || defined(__i386__) || defined(__i386) || defined(__i486__) || \
defined(__i486) || defined(i386) || defined(__ia64__) || defined(__x86_64__)
/* MINIZ_X86_OR_X64_CPU is only used to help set the below macros. */
#define MINIZ_X86_OR_X64_CPU 1
#else
#define MINIZ_X86_OR_X64_CPU 0
#endif
/* Set MINIZ_LITTLE_ENDIAN only if not set */
#if !defined(MINIZ_LITTLE_ENDIAN)
#if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__)
#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
/* Set MINIZ_LITTLE_ENDIAN to 1 if the processor is little endian. */
#define MINIZ_LITTLE_ENDIAN 1
#else
#define MINIZ_LITTLE_ENDIAN 0
#endif
#else
#if MINIZ_X86_OR_X64_CPU
#define MINIZ_LITTLE_ENDIAN 1
#else
#define MINIZ_LITTLE_ENDIAN 0
#endif
#endif
#endif
/* Using unaligned loads and stores causes errors when using UBSan */
#if defined(__has_feature)
#if __has_feature(undefined_behavior_sanitizer)
#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0
#endif
#endif
/* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES only if not set */
#if !defined(MINIZ_USE_UNALIGNED_LOADS_AND_STORES)
#if MINIZ_X86_OR_X64_CPU
/* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES to 1 on CPU's that permit efficient integer loads and stores from unaligned
* addresses. */
#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0
#define MINIZ_UNALIGNED_USE_MEMCPY
#else
#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0
#endif
#endif
#if defined(_M_X64) || defined(_WIN64) || defined(__MINGW64__) || defined(_LP64) || defined(__LP64__) || \
defined(__ia64__) || defined(__x86_64__)
/* Set MINIZ_HAS_64BIT_REGISTERS to 1 if operations on 64-bit integers are reasonably fast (and don't involve compiler
* generated calls to helper functions). */
#define MINIZ_HAS_64BIT_REGISTERS 1
#else
#define MINIZ_HAS_64BIT_REGISTERS 0
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* ------------------- zlib-style API Definitions. */
/* For more compatibility with zlib, miniz.c uses unsigned long for some parameters/struct members. Beware: mz_ulong can
* be either 32 or 64-bits! */
typedef unsigned long mz_ulong;
/* mz_free() internally uses the MZ_FREE() macro (which by default calls free() unless you've modified the MZ_MALLOC
* macro) to release a block allocated from the heap. */
MINIZ_EXPORT void mz_free(void *p);
#define MZ_ADLER32_INIT (1)
/* mz_adler32() returns the initial adler-32 value to use when called with ptr==NULL. */
MINIZ_EXPORT mz_ulong mz_adler32(mz_ulong adler, const unsigned char *ptr, size_t buf_len);
#define MZ_CRC32_INIT (0)
/* mz_crc32() returns the initial CRC-32 value to use when called with ptr==NULL. */
MINIZ_EXPORT mz_ulong mz_crc32(mz_ulong crc, const unsigned char *ptr, size_t buf_len);
/* Compression strategies. */
enum { MZ_DEFAULT_STRATEGY = 0, MZ_FILTERED = 1, MZ_HUFFMAN_ONLY = 2, MZ_RLE = 3, MZ_FIXED = 4 };
/* Method */
#define MZ_DEFLATED 8
/* Heap allocation callbacks.
Note that mz_alloc_func parameter types purposely differ from zlib's: items/size is size_t, not unsigned long. */
typedef void *(*mz_alloc_func)(void *opaque, size_t items, size_t size);
typedef void (*mz_free_func)(void *opaque, void *address);
typedef void *(*mz_realloc_func)(void *opaque, void *address, size_t items, size_t size);
/* Compression levels: 0-9 are the standard zlib-style levels, 10 is best possible compression (not zlib compatible, and
* may be very slow), MZ_DEFAULT_COMPRESSION=MZ_DEFAULT_LEVEL. */
enum {
MZ_NO_COMPRESSION = 0,
MZ_BEST_SPEED = 1,
MZ_BEST_COMPRESSION = 9,
MZ_UBER_COMPRESSION = 10,
MZ_DEFAULT_LEVEL = 6,
MZ_DEFAULT_COMPRESSION = -1
};
#define MZ_VERSION "11.3.1"
#define MZ_VERNUM 0xB301
#define MZ_VER_MAJOR 11
#define MZ_VER_MINOR 3
#define MZ_VER_REVISION 1
#define MZ_VER_SUBREVISION 0
#ifndef MINIZ_NO_ZLIB_APIS
/* Flush values. For typical usage you only need MZ_NO_FLUSH and MZ_FINISH. The other values are for advanced use (refer
* to the zlib docs). */
enum { MZ_NO_FLUSH = 0, MZ_PARTIAL_FLUSH = 1, MZ_SYNC_FLUSH = 2, MZ_FULL_FLUSH = 3, MZ_FINISH = 4, MZ_BLOCK = 5 };
/* Return status codes. MZ_PARAM_ERROR is non-standard. */
enum {
MZ_OK = 0,
MZ_STREAM_END = 1,
MZ_NEED_DICT = 2,
MZ_ERRNO = -1,
MZ_STREAM_ERROR = -2,
MZ_DATA_ERROR = -3,
MZ_MEM_ERROR = -4,
MZ_BUF_ERROR = -5,
MZ_VERSION_ERROR = -6,
MZ_PARAM_ERROR = -10000
};
/* Window bits */
#define MZ_DEFAULT_WINDOW_BITS 15
struct mz_internal_state;
/* Compression/decompression stream struct. */
typedef struct mz_stream_s {
const unsigned char *next_in; /* pointer to next byte to read */
unsigned int avail_in; /* number of bytes available at next_in */
mz_ulong total_in; /* total number of bytes consumed so far */
unsigned char *next_out; /* pointer to next byte to write */
unsigned int avail_out; /* number of bytes that can be written to next_out */
mz_ulong total_out; /* total number of bytes produced so far */
char *msg; /* error msg (unused) */
struct mz_internal_state *state; /* internal state, allocated by zalloc/zfree */
mz_alloc_func zalloc; /* optional heap allocation function (defaults to malloc) */
mz_free_func zfree; /* optional heap free function (defaults to free) */
void *opaque; /* heap alloc function user pointer */
int data_type; /* data_type (unused) */
mz_ulong adler; /* adler32 of the source or uncompressed data */
mz_ulong reserved; /* not used */
} mz_stream;
typedef mz_stream *mz_streamp;
/* Returns the version string of miniz.c. */
MINIZ_EXPORT const char *mz_version(void);
#ifndef MINIZ_NO_DEFLATE_APIS
/* mz_deflateInit() initializes a compressor with default options: */
/* Parameters: */
/* pStream must point to an initialized mz_stream struct. */
/* level must be between [MZ_NO_COMPRESSION, MZ_BEST_COMPRESSION]. */
/* level 1 enables a specially optimized compression function that's been optimized purely for performance, not ratio.
*/
/* (This special func. is currently only enabled when MINIZ_USE_UNALIGNED_LOADS_AND_STORES and MINIZ_LITTLE_ENDIAN are
* defined.) */
/* Return values: */
/* MZ_OK on success. */
/* MZ_STREAM_ERROR if the stream is bogus. */
/* MZ_PARAM_ERROR if the input parameters are bogus. */
/* MZ_MEM_ERROR on out of memory. */
MINIZ_EXPORT int mz_deflateInit(mz_streamp pStream, int level);
/* mz_deflateInit2() is like mz_deflate(), except with more control: */
/* Additional parameters: */
/* method must be MZ_DEFLATED */
/* window_bits must be MZ_DEFAULT_WINDOW_BITS (to wrap the deflate stream with zlib header/adler-32 footer) or
* -MZ_DEFAULT_WINDOW_BITS (raw deflate/no header or footer) */
/* mem_level must be between [1, 9] (it's checked but ignored by miniz.c) */
MINIZ_EXPORT int mz_deflateInit2(mz_streamp pStream, int level, int method, int window_bits, int mem_level,
int strategy);
/* Quickly resets a compressor without having to reallocate anything. Same as calling mz_deflateEnd() followed by
* mz_deflateInit()/mz_deflateInit2(). */
MINIZ_EXPORT int mz_deflateReset(mz_streamp pStream);
/* mz_deflate() compresses the input to output, consuming as much of the input and producing as much output as possible.
*/
/* Parameters: */
/* pStream is the stream to read from and write to. You must initialize/update the next_in, avail_in, next_out, and
* avail_out members. */
/* flush may be MZ_NO_FLUSH, MZ_PARTIAL_FLUSH/MZ_SYNC_FLUSH, MZ_FULL_FLUSH, or MZ_FINISH. */
/* Return values: */
/* MZ_OK on success (when flushing, or if more input is needed but not available, and/or there's more output to be
* written but the output buffer is full). */
/* MZ_STREAM_END if all input has been consumed and all output bytes have been written. Don't call mz_deflate() on the
* stream anymore. */
/* MZ_STREAM_ERROR if the stream is bogus. */
/* MZ_PARAM_ERROR if one of the parameters is invalid. */
/* MZ_BUF_ERROR if no forward progress is possible because the input and/or output buffers are empty. (Fill up the
* input buffer or free up some output space and try again.) */
MINIZ_EXPORT int mz_deflate(mz_streamp pStream, int flush);
/* mz_deflateEnd() deinitializes a compressor: */
/* Return values: */
/* MZ_OK on success. */
/* MZ_STREAM_ERROR if the stream is bogus. */
MINIZ_EXPORT int mz_deflateEnd(mz_streamp pStream);
/* mz_deflateBound() returns a (very) conservative upper bound on the amount of data that could be generated by
* deflate(), assuming flush is set to only MZ_NO_FLUSH or MZ_FINISH. */
MINIZ_EXPORT mz_ulong mz_deflateBound(mz_streamp pStream, mz_ulong source_len);
/* Single-call compression functions mz_compress() and mz_compress2(): */
/* Returns MZ_OK on success, or one of the error codes from mz_deflate() on failure. */
MINIZ_EXPORT int mz_compress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource,
mz_ulong source_len);
MINIZ_EXPORT int mz_compress2(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource,
mz_ulong source_len, int level);
/* mz_compressBound() returns a (very) conservative upper bound on the amount of data that could be generated by calling
* mz_compress(). */
MINIZ_EXPORT mz_ulong mz_compressBound(mz_ulong source_len);
#endif /*#ifndef MINIZ_NO_DEFLATE_APIS*/
#ifndef MINIZ_NO_INFLATE_APIS
/* Initializes a decompressor. */
MINIZ_EXPORT int mz_inflateInit(mz_streamp pStream);
/* mz_inflateInit2() is like mz_inflateInit() with an additional option that controls the window size and whether or not
* the stream has been wrapped with a zlib header/footer: */
/* window_bits must be MZ_DEFAULT_WINDOW_BITS (to parse zlib header/footer) or -MZ_DEFAULT_WINDOW_BITS (raw deflate). */
MINIZ_EXPORT int mz_inflateInit2(mz_streamp pStream, int window_bits);
/* Quickly resets a compressor without having to reallocate anything. Same as calling mz_inflateEnd() followed by
* mz_inflateInit()/mz_inflateInit2(). */
MINIZ_EXPORT int mz_inflateReset(mz_streamp pStream);
/* Decompresses the input stream to the output, consuming only as much of the input as needed, and writing as much to
* the output as possible. */
/* Parameters: */
/* pStream is the stream to read from and write to. You must initialize/update the next_in, avail_in, next_out, and
* avail_out members. */
/* flush may be MZ_NO_FLUSH, MZ_SYNC_FLUSH, or MZ_FINISH. */
/* On the first call, if flush is MZ_FINISH it's assumed the input and output buffers are both sized large enough to
* decompress the entire stream in a single call (this is slightly faster). */
/* MZ_FINISH implies that there are no more source bytes available beside what's already in the input buffer, and that
* the output buffer is large enough to hold the rest of the decompressed data. */
/* Return values: */
/* MZ_OK on success. Either more input is needed but not available, and/or there's more output to be written but the
* output buffer is full. */
/* MZ_STREAM_END if all needed input has been consumed and all output bytes have been written. For zlib streams, the
* adler-32 of the decompressed data has also been verified. */
/* MZ_STREAM_ERROR if the stream is bogus. */
/* MZ_DATA_ERROR if the deflate stream is invalid. */
/* MZ_PARAM_ERROR if one of the parameters is invalid. */
/* MZ_BUF_ERROR if no forward progress is possible because the input buffer is empty but the inflater needs more input
* to continue, or if the output buffer is not large enough. Call mz_inflate() again */
/* with more input data, or with more room in the output buffer (except when using single call decompression,
* described above). */
MINIZ_EXPORT int mz_inflate(mz_streamp pStream, int flush);
/* Deinitializes a decompressor. */
MINIZ_EXPORT int mz_inflateEnd(mz_streamp pStream);
/* Single-call decompression. */
/* Returns MZ_OK on success, or one of the error codes from mz_inflate() on failure. */
MINIZ_EXPORT int mz_uncompress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource,
mz_ulong source_len);
MINIZ_EXPORT int mz_uncompress2(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource,
mz_ulong *pSource_len);
#endif /*#ifndef MINIZ_NO_INFLATE_APIS*/
/* Returns a string description of the specified error code, or NULL if the error code is invalid. */
MINIZ_EXPORT const char *mz_error(int err);
/* Redefine zlib-compatible names to miniz equivalents, so miniz.c can be used as a drop-in replacement for the subset
* of zlib that miniz.c supports. */
/* Define MINIZ_NO_ZLIB_COMPATIBLE_NAMES to disable zlib-compatibility if you use zlib in the same project. */
#ifndef MINIZ_NO_ZLIB_COMPATIBLE_NAMES
typedef unsigned char Byte;
typedef unsigned int uInt;
typedef mz_ulong uLong;
typedef Byte Bytef;
typedef uInt uIntf;
typedef char charf;
typedef int intf;
typedef void *voidpf;
typedef uLong uLongf;
typedef void *voidp;
typedef void *const voidpc;
#define Z_NULL 0
#define Z_NO_FLUSH MZ_NO_FLUSH
#define Z_PARTIAL_FLUSH MZ_PARTIAL_FLUSH
#define Z_SYNC_FLUSH MZ_SYNC_FLUSH
#define Z_FULL_FLUSH MZ_FULL_FLUSH
#define Z_FINISH MZ_FINISH
#define Z_BLOCK MZ_BLOCK
#define Z_OK MZ_OK
#define Z_STREAM_END MZ_STREAM_END
#define Z_NEED_DICT MZ_NEED_DICT
#define Z_ERRNO MZ_ERRNO
#define Z_STREAM_ERROR MZ_STREAM_ERROR
#define Z_DATA_ERROR MZ_DATA_ERROR
#define Z_MEM_ERROR MZ_MEM_ERROR
#define Z_BUF_ERROR MZ_BUF_ERROR
#define Z_VERSION_ERROR MZ_VERSION_ERROR
#define Z_PARAM_ERROR MZ_PARAM_ERROR
#define Z_NO_COMPRESSION MZ_NO_COMPRESSION
#define Z_BEST_SPEED MZ_BEST_SPEED
#define Z_BEST_COMPRESSION MZ_BEST_COMPRESSION
#define Z_DEFAULT_COMPRESSION MZ_DEFAULT_COMPRESSION
#define Z_DEFAULT_STRATEGY MZ_DEFAULT_STRATEGY
#define Z_FILTERED MZ_FILTERED
#define Z_HUFFMAN_ONLY MZ_HUFFMAN_ONLY
#define Z_RLE MZ_RLE
#define Z_FIXED MZ_FIXED
#define Z_DEFLATED MZ_DEFLATED
#define Z_DEFAULT_WINDOW_BITS MZ_DEFAULT_WINDOW_BITS
/* See mz_alloc_func */
typedef void *(*alloc_func)(void *opaque, size_t items, size_t size);
/* See mz_free_func */
typedef void (*free_func)(void *opaque, void *address);
#define internal_state mz_internal_state
#define z_stream mz_stream
#ifndef MINIZ_NO_DEFLATE_APIS
/* Compatiblity with zlib API. See called functions for documentation */
static MZ_FORCEINLINE int deflateInit(mz_streamp pStream, int level) {
return mz_deflateInit(pStream, level);
}
static MZ_FORCEINLINE int deflateInit2(mz_streamp pStream, int level, int method, int window_bits, int mem_level,
int strategy) {
return mz_deflateInit2(pStream, level, method, window_bits, mem_level, strategy);
}
static MZ_FORCEINLINE int deflateReset(mz_streamp pStream) {
return mz_deflateReset(pStream);
}
static MZ_FORCEINLINE int deflate(mz_streamp pStream, int flush) {
return mz_deflate(pStream, flush);
}
static MZ_FORCEINLINE int deflateEnd(mz_streamp pStream) {
return mz_deflateEnd(pStream);
}
static MZ_FORCEINLINE mz_ulong deflateBound(mz_streamp pStream, mz_ulong source_len) {
return mz_deflateBound(pStream, source_len);
}
static MZ_FORCEINLINE int compress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource,
mz_ulong source_len) {
return mz_compress(pDest, pDest_len, pSource, source_len);
}
static MZ_FORCEINLINE int compress2(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource,
mz_ulong source_len, int level) {
return mz_compress2(pDest, pDest_len, pSource, source_len, level);
}
static MZ_FORCEINLINE mz_ulong compressBound(mz_ulong source_len) {
return mz_compressBound(source_len);
}
#endif /*#ifndef MINIZ_NO_DEFLATE_APIS*/
#ifndef MINIZ_NO_INFLATE_APIS
/* Compatiblity with zlib API. See called functions for documentation */
static MZ_FORCEINLINE int inflateInit(mz_streamp pStream) {
return mz_inflateInit(pStream);
}
static MZ_FORCEINLINE int inflateInit2(mz_streamp pStream, int window_bits) {
return mz_inflateInit2(pStream, window_bits);
}
static MZ_FORCEINLINE int inflateReset(mz_streamp pStream) {
return mz_inflateReset(pStream);
}
static MZ_FORCEINLINE int inflate(mz_streamp pStream, int flush) {
return mz_inflate(pStream, flush);
}
static MZ_FORCEINLINE int inflateEnd(mz_streamp pStream) {
return mz_inflateEnd(pStream);
}
static MZ_FORCEINLINE int uncompress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource,
mz_ulong source_len) {
return mz_uncompress(pDest, pDest_len, pSource, source_len);
}
static MZ_FORCEINLINE int uncompress2(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource,
mz_ulong *pSource_len) {
return mz_uncompress2(pDest, pDest_len, pSource, pSource_len);
}
#endif /*#ifndef MINIZ_NO_INFLATE_APIS*/
static MZ_FORCEINLINE mz_ulong crc32(mz_ulong crc, const unsigned char *ptr, size_t buf_len) {
return mz_crc32(crc, ptr, buf_len);
}
static MZ_FORCEINLINE mz_ulong adler32(mz_ulong adler, const unsigned char *ptr, size_t buf_len) {
return mz_adler32(adler, ptr, buf_len);
}
#define MAX_WBITS 15
#define MAX_MEM_LEVEL 9
static MZ_FORCEINLINE const char *zError(int err) {
return mz_error(err);
}
#define ZLIB_VERSION MZ_VERSION
#define ZLIB_VERNUM MZ_VERNUM
#define ZLIB_VER_MAJOR MZ_VER_MAJOR
#define ZLIB_VER_MINOR MZ_VER_MINOR
#define ZLIB_VER_REVISION MZ_VER_REVISION
#define ZLIB_VER_SUBREVISION MZ_VER_SUBREVISION
#define zlibVersion mz_version
#define zlib_version mz_version()
#endif /* #ifndef MINIZ_NO_ZLIB_COMPATIBLE_NAMES */
#endif /* MINIZ_NO_ZLIB_APIS */
#ifdef __cplusplus
}
#endif
#include "miniz_common.h"
#include "miniz_tdef.h"
#include "miniz_tinfl.h"
#include "miniz_zip.h"

90
clks/third_party/miniz/miniz_common.h vendored Normal file
View File

@@ -0,0 +1,90 @@
#pragma once
#include <assert.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include "miniz_export.h"
/* ------------------- Types and macros */
typedef unsigned char mz_uint8;
typedef int16_t mz_int16;
typedef uint16_t mz_uint16;
typedef uint32_t mz_uint32;
typedef uint32_t mz_uint;
typedef int64_t mz_int64;
typedef uint64_t mz_uint64;
typedef int mz_bool;
#define MZ_FALSE (0)
#define MZ_TRUE (1)
/* Works around MSVC's spammy "warning C4127: conditional expression is constant" message. */
#ifdef _MSC_VER
#define MZ_MACRO_END while (0, 0)
#else
#define MZ_MACRO_END while (0)
#endif
#ifdef MINIZ_NO_STDIO
#define MZ_FILE void *
#else
#include <stdio.h>
#define MZ_FILE FILE
#endif /* #ifdef MINIZ_NO_STDIO */
#ifdef MINIZ_NO_TIME
typedef struct mz_dummy_time_t_tag {
mz_uint32 m_dummy1;
mz_uint32 m_dummy2;
} mz_dummy_time_t;
#define MZ_TIME_T mz_dummy_time_t
#else
#define MZ_TIME_T time_t
#endif
#define MZ_ASSERT(x) assert(x)
#ifdef MINIZ_NO_MALLOC
#define MZ_MALLOC(x) NULL
#define MZ_FREE(x) (void)x, ((void)0)
#define MZ_REALLOC(p, x) NULL
#else
#define MZ_MALLOC(x) malloc(x)
#define MZ_FREE(x) free(x)
#define MZ_REALLOC(p, x) realloc(p, x)
#endif
#define MZ_MAX(a, b) (((a) > (b)) ? (a) : (b))
#define MZ_MIN(a, b) (((a) < (b)) ? (a) : (b))
#define MZ_CLEAR_OBJ(obj) memset(&(obj), 0, sizeof(obj))
#define MZ_CLEAR_ARR(obj) memset((obj), 0, sizeof(obj))
#define MZ_CLEAR_PTR(obj) memset((obj), 0, sizeof(*obj))
#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN
#define MZ_READ_LE16(p) *((const mz_uint16 *)(p))
#define MZ_READ_LE32(p) *((const mz_uint32 *)(p))
#else
#define MZ_READ_LE16(p) ((mz_uint32)(((const mz_uint8 *)(p))[0]) | ((mz_uint32)(((const mz_uint8 *)(p))[1]) << 8U))
#define MZ_READ_LE32(p) \
((mz_uint32)(((const mz_uint8 *)(p))[0]) | ((mz_uint32)(((const mz_uint8 *)(p))[1]) << 8U) | \
((mz_uint32)(((const mz_uint8 *)(p))[2]) << 16U) | ((mz_uint32)(((const mz_uint8 *)(p))[3]) << 24U))
#endif
#define MZ_READ_LE64(p) \
(((mz_uint64)MZ_READ_LE32(p)) | (((mz_uint64)MZ_READ_LE32((const mz_uint8 *)(p) + sizeof(mz_uint32))) << 32U))
#ifdef __cplusplus
extern "C" {
#endif
extern MINIZ_EXPORT void *miniz_def_alloc_func(void *opaque, size_t items, size_t size);
extern MINIZ_EXPORT void miniz_def_free_func(void *opaque, void *address);
extern MINIZ_EXPORT void *miniz_def_realloc_func(void *opaque, void *address, size_t items, size_t size);
#define MZ_UINT16_MAX (0xFFFFU)
#define MZ_UINT32_MAX (0xFFFFFFFFU)
#ifdef __cplusplus
}
#endif

6
clks/third_party/miniz/miniz_export.h vendored Normal file
View File

@@ -0,0 +1,6 @@
#ifndef MINIZ_EXPORT_H
#define MINIZ_EXPORT_H
#define MINIZ_EXPORT
#endif

76
clks/third_party/miniz/miniz_support.c vendored Normal file
View File

@@ -0,0 +1,76 @@
#ifndef NDEBUG
#define NDEBUG 1
#endif
#ifndef MINIZ_NO_STDIO
#define MINIZ_NO_STDIO 1
#endif
#ifndef MINIZ_NO_INFLATE_APIS
#define MINIZ_NO_INFLATE_APIS 1
#endif
#ifndef MINIZ_NO_TIME
#define MINIZ_NO_TIME 1
#endif
#ifndef MINIZ_NO_MALLOC
#define MINIZ_NO_MALLOC 1
#endif
#ifndef MINIZ_NO_ZLIB_APIS
#define MINIZ_NO_ZLIB_APIS 1
#endif
#ifndef MINIZ_NO_ZLIB_COMPATIBLE_NAMES
#define MINIZ_NO_ZLIB_COMPATIBLE_NAMES 1
#endif
#include "miniz.h"
mz_ulong mz_adler32(mz_ulong adler, const unsigned char *ptr, size_t buf_len) {
mz_uint32 s1 = (mz_uint32)(adler & 0xFFFFU);
mz_uint32 s2 = (mz_uint32)((adler >> 16) & 0xFFFFU);
size_t i;
if (ptr == 0) {
return MZ_ADLER32_INIT;
}
for (i = 0; i < buf_len; i++) {
s1 += (mz_uint32)ptr[i];
if (s1 >= 65521U) {
s1 -= 65521U;
}
s2 += s1;
if (s2 >= 65521U) {
s2 -= 65521U;
}
}
return ((mz_ulong)s2 << 16) | (mz_ulong)s1;
}
mz_ulong mz_crc32(mz_ulong crc, const unsigned char *ptr, size_t buf_len) {
mz_uint32 cur = (mz_uint32)crc ^ 0xFFFFFFFFU;
size_t i;
unsigned int bit;
if (ptr == 0) {
return MZ_CRC32_INIT;
}
for (i = 0; i < buf_len; i++) {
cur ^= (mz_uint32)ptr[i];
for (bit = 0U; bit < 8U; bit++) {
if ((cur & 1U) != 0U) {
cur = (cur >> 1) ^ 0xEDB88320U;
} else {
cur >>= 1;
}
}
}
return (mz_ulong)(cur ^ 0xFFFFFFFFU);
}

1506
clks/third_party/miniz/miniz_tdef.c vendored Normal file

File diff suppressed because it is too large Load Diff

206
clks/third_party/miniz/miniz_tdef.h vendored Normal file
View File

@@ -0,0 +1,206 @@
#pragma once
#include "miniz_common.h"
#ifndef MINIZ_NO_DEFLATE_APIS
#ifdef __cplusplus
extern "C" {
#endif
/* ------------------- Low-level Compression API Definitions */
/* Set TDEFL_LESS_MEMORY to 1 to use less memory (compression will be slightly slower, and raw/dynamic blocks will be
* output more frequently). */
#ifndef TDEFL_LESS_MEMORY
#define TDEFL_LESS_MEMORY 0
#endif
/* tdefl_init() compression flags logically OR'd together (low 12 bits contain the max. number of probes per dictionary
* search): */
/* TDEFL_DEFAULT_MAX_PROBES: The compressor defaults to 128 dictionary probes per dictionary search. 0=Huffman only,
* 1=Huffman+LZ (fastest/crap compression), 4095=Huffman+LZ (slowest/best compression). */
enum { TDEFL_HUFFMAN_ONLY = 0, TDEFL_DEFAULT_MAX_PROBES = 128, TDEFL_MAX_PROBES_MASK = 0xFFF };
/* TDEFL_WRITE_ZLIB_HEADER: If set, the compressor outputs a zlib header before the deflate data, and the Adler-32 of
* the source data at the end. Otherwise, you'll get raw deflate data. */
/* TDEFL_COMPUTE_ADLER32: Always compute the adler-32 of the input data (even when not writing zlib headers). */
/* TDEFL_GREEDY_PARSING_FLAG: Set to use faster greedy parsing, instead of more efficient lazy parsing. */
/* TDEFL_NONDETERMINISTIC_PARSING_FLAG: Enable to decrease the compressor's initialization time to the minimum, but the
* output may vary from run to run given the same input (depending on the contents of memory). */
/* TDEFL_RLE_MATCHES: Only look for RLE matches (matches with a distance of 1) */
/* TDEFL_FILTER_MATCHES: Discards matches <= 5 chars if enabled. */
/* TDEFL_FORCE_ALL_STATIC_BLOCKS: Disable usage of optimized Huffman tables. */
/* TDEFL_FORCE_ALL_RAW_BLOCKS: Only use raw (uncompressed) deflate blocks. */
/* The low 12 bits are reserved to control the max # of hash probes per dictionary lookup (see TDEFL_MAX_PROBES_MASK).
*/
enum {
TDEFL_WRITE_ZLIB_HEADER = 0x01000,
TDEFL_COMPUTE_ADLER32 = 0x02000,
TDEFL_GREEDY_PARSING_FLAG = 0x04000,
TDEFL_NONDETERMINISTIC_PARSING_FLAG = 0x08000,
TDEFL_RLE_MATCHES = 0x10000,
TDEFL_FILTER_MATCHES = 0x20000,
TDEFL_FORCE_ALL_STATIC_BLOCKS = 0x40000,
TDEFL_FORCE_ALL_RAW_BLOCKS = 0x80000
};
/* High level compression functions: */
/* tdefl_compress_mem_to_heap() compresses a block in memory to a heap block allocated via malloc(). */
/* On entry: */
/* pSrc_buf, src_buf_len: Pointer and size of source block to compress. */
/* flags: The max match finder probes (default is 128) logically OR'd against the above flags. Higher probes are slower
* but improve compression. */
/* On return: */
/* Function returns a pointer to the compressed data, or NULL on failure. */
/* *pOut_len will be set to the compressed data's size, which could be larger than src_buf_len on uncompressible data.
*/
/* The caller must free() the returned block when it's no longer needed. */
MINIZ_EXPORT void *tdefl_compress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags);
/* tdefl_compress_mem_to_mem() compresses a block in memory to another block in memory. */
/* Returns 0 on failure. */
MINIZ_EXPORT size_t tdefl_compress_mem_to_mem(void *pOut_buf, size_t out_buf_len, const void *pSrc_buf,
size_t src_buf_len, int flags);
/* Compresses an image to a compressed PNG file in memory. */
/* On entry: */
/* pImage, w, h, and num_chans describe the image to compress. num_chans may be 1, 2, 3, or 4. */
/* The image pitch in bytes per scanline will be w*num_chans. The leftmost pixel on the top scanline is stored first in
* memory. */
/* level may range from [0,10], use MZ_NO_COMPRESSION, MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc. or a decent default is
* MZ_DEFAULT_LEVEL */
/* If flip is true, the image will be flipped on the Y axis (useful for OpenGL apps). */
/* On return: */
/* Function returns a pointer to the compressed data, or NULL on failure. */
/* *pLen_out will be set to the size of the PNG image file. */
/* The caller must mz_free() the returned heap block (which will typically be larger than *pLen_out) when it's no
* longer needed. */
MINIZ_EXPORT void *tdefl_write_image_to_png_file_in_memory_ex(const void *pImage, int w, int h, int num_chans,
size_t *pLen_out, mz_uint level, mz_bool flip);
MINIZ_EXPORT void *tdefl_write_image_to_png_file_in_memory(const void *pImage, int w, int h, int num_chans,
size_t *pLen_out);
/* Output stream interface. The compressor uses this interface to write compressed data. It'll typically be called
* TDEFL_OUT_BUF_SIZE at a time. */
typedef mz_bool (*tdefl_put_buf_func_ptr)(const void *pBuf, int len, void *pUser);
/* tdefl_compress_mem_to_output() compresses a block to an output stream. The above helpers use this function
* internally. */
MINIZ_EXPORT mz_bool tdefl_compress_mem_to_output(const void *pBuf, size_t buf_len,
tdefl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags);
enum {
TDEFL_MAX_HUFF_TABLES = 3,
TDEFL_MAX_HUFF_SYMBOLS_0 = 288,
TDEFL_MAX_HUFF_SYMBOLS_1 = 32,
TDEFL_MAX_HUFF_SYMBOLS_2 = 19,
TDEFL_LZ_DICT_SIZE = 32768,
TDEFL_LZ_DICT_SIZE_MASK = TDEFL_LZ_DICT_SIZE - 1,
TDEFL_MIN_MATCH_LEN = 3,
TDEFL_MAX_MATCH_LEN = 258
};
/* TDEFL_OUT_BUF_SIZE MUST be large enough to hold a single entire compressed output block (using static/fixed Huffman
* codes). */
#if TDEFL_LESS_MEMORY
enum {
TDEFL_LZ_CODE_BUF_SIZE = 24 * 1024,
TDEFL_OUT_BUF_SIZE = (TDEFL_LZ_CODE_BUF_SIZE * 13) / 10,
TDEFL_MAX_HUFF_SYMBOLS = 288,
TDEFL_LZ_HASH_BITS = 12,
TDEFL_LEVEL1_HASH_SIZE_MASK = 4095,
TDEFL_LZ_HASH_SHIFT = (TDEFL_LZ_HASH_BITS + 2) / 3,
TDEFL_LZ_HASH_SIZE = 1 << TDEFL_LZ_HASH_BITS
};
#else
enum {
TDEFL_LZ_CODE_BUF_SIZE = 64 * 1024,
TDEFL_OUT_BUF_SIZE = (mz_uint)((TDEFL_LZ_CODE_BUF_SIZE * 13) / 10),
TDEFL_MAX_HUFF_SYMBOLS = 288,
TDEFL_LZ_HASH_BITS = 15,
TDEFL_LEVEL1_HASH_SIZE_MASK = 4095,
TDEFL_LZ_HASH_SHIFT = (TDEFL_LZ_HASH_BITS + 2) / 3,
TDEFL_LZ_HASH_SIZE = 1 << TDEFL_LZ_HASH_BITS
};
#endif
/* The low-level tdefl functions below may be used directly if the above helper functions aren't flexible enough. The
* low-level functions don't make any heap allocations, unlike the above helper functions. */
typedef enum {
TDEFL_STATUS_BAD_PARAM = -2,
TDEFL_STATUS_PUT_BUF_FAILED = -1,
TDEFL_STATUS_OKAY = 0,
TDEFL_STATUS_DONE = 1
} tdefl_status;
/* Must map to MZ_NO_FLUSH, MZ_SYNC_FLUSH, etc. enums */
typedef enum { TDEFL_NO_FLUSH = 0, TDEFL_SYNC_FLUSH = 2, TDEFL_FULL_FLUSH = 3, TDEFL_FINISH = 4 } tdefl_flush;
/* tdefl's compression state structure. */
typedef struct {
tdefl_put_buf_func_ptr m_pPut_buf_func;
void *m_pPut_buf_user;
mz_uint m_flags, m_max_probes[2];
int m_greedy_parsing;
mz_uint m_adler32, m_lookahead_pos, m_lookahead_size, m_dict_size;
mz_uint8 *m_pLZ_code_buf, *m_pLZ_flags, *m_pOutput_buf, *m_pOutput_buf_end;
mz_uint m_num_flags_left, m_total_lz_bytes, m_lz_code_buf_dict_pos, m_bits_in, m_bit_buffer;
mz_uint m_saved_match_dist, m_saved_match_len, m_saved_lit, m_output_flush_ofs, m_output_flush_remaining,
m_finished, m_block_index, m_wants_to_finish;
tdefl_status m_prev_return_status;
const void *m_pIn_buf;
void *m_pOut_buf;
size_t *m_pIn_buf_size, *m_pOut_buf_size;
tdefl_flush m_flush;
const mz_uint8 *m_pSrc;
size_t m_src_buf_left, m_out_buf_ofs;
mz_uint8 m_dict[TDEFL_LZ_DICT_SIZE + TDEFL_MAX_MATCH_LEN - 1];
mz_uint16 m_huff_count[TDEFL_MAX_HUFF_TABLES][TDEFL_MAX_HUFF_SYMBOLS];
mz_uint16 m_huff_codes[TDEFL_MAX_HUFF_TABLES][TDEFL_MAX_HUFF_SYMBOLS];
mz_uint8 m_huff_code_sizes[TDEFL_MAX_HUFF_TABLES][TDEFL_MAX_HUFF_SYMBOLS];
mz_uint8 m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE];
mz_uint16 m_next[TDEFL_LZ_DICT_SIZE];
mz_uint16 m_hash[TDEFL_LZ_HASH_SIZE];
mz_uint8 m_output_buf[TDEFL_OUT_BUF_SIZE];
} tdefl_compressor;
/* Initializes the compressor. */
/* There is no corresponding deinit() function because the tdefl API's do not dynamically allocate memory. */
/* pBut_buf_func: If NULL, output data will be supplied to the specified callback. In this case, the user should call
* the tdefl_compress_buffer() API for compression. */
/* If pBut_buf_func is NULL the user should always call the tdefl_compress() API. */
/* flags: See the above enums (TDEFL_HUFFMAN_ONLY, TDEFL_WRITE_ZLIB_HEADER, etc.) */
MINIZ_EXPORT tdefl_status tdefl_init(tdefl_compressor *d, tdefl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user,
int flags);
/* Compresses a block of data, consuming as much of the specified input buffer as possible, and writing as much
* compressed data to the specified output buffer as possible. */
MINIZ_EXPORT tdefl_status tdefl_compress(tdefl_compressor *d, const void *pIn_buf, size_t *pIn_buf_size, void *pOut_buf,
size_t *pOut_buf_size, tdefl_flush flush);
/* tdefl_compress_buffer() is only usable when the tdefl_init() is called with a non-NULL tdefl_put_buf_func_ptr. */
/* tdefl_compress_buffer() always consumes the entire input buffer. */
MINIZ_EXPORT tdefl_status tdefl_compress_buffer(tdefl_compressor *d, const void *pIn_buf, size_t in_buf_size,
tdefl_flush flush);
MINIZ_EXPORT tdefl_status tdefl_get_prev_return_status(tdefl_compressor *d);
MINIZ_EXPORT mz_uint32 tdefl_get_adler32(tdefl_compressor *d);
/* Create tdefl_compress() flags given zlib-style compression parameters. */
/* level may range from [0,10] (where 10 is absolute max compression, but may be much slower on some files) */
/* window_bits may be -15 (raw deflate) or 15 (zlib) */
/* strategy may be either MZ_DEFAULT_STRATEGY, MZ_FILTERED, MZ_HUFFMAN_ONLY, MZ_RLE, or MZ_FIXED */
MINIZ_EXPORT mz_uint tdefl_create_comp_flags_from_zip_params(int level, int window_bits, int strategy);
#ifndef MINIZ_NO_MALLOC
/* Allocate the tdefl_compressor structure in C so that */
/* non-C language bindings to tdefl_ API don't need to worry about */
/* structure size and allocation mechanism. */
MINIZ_EXPORT tdefl_compressor *tdefl_compressor_alloc(void);
MINIZ_EXPORT void tdefl_compressor_free(tdefl_compressor *pComp);
#endif
#ifdef __cplusplus
}
#endif
#endif /*#ifndef MINIZ_NO_DEFLATE_APIS*/

168
clks/third_party/miniz/miniz_tinfl.h vendored Normal file
View File

@@ -0,0 +1,168 @@
#pragma once
#include "miniz_common.h"
/* ------------------- Low-level Decompression API Definitions */
#ifndef MINIZ_NO_INFLATE_APIS
#ifdef __cplusplus
extern "C" {
#endif
/* Decompression flags used by tinfl_decompress(). */
/* TINFL_FLAG_PARSE_ZLIB_HEADER: If set, the input has a valid zlib header and ends with an adler32 checksum (it's a
* valid zlib stream). Otherwise, the input is a raw deflate stream. */
/* TINFL_FLAG_HAS_MORE_INPUT: If set, there are more input bytes available beyond the end of the supplied input buffer.
* If clear, the input buffer contains all remaining input. */
/* TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF: If set, the output buffer is large enough to hold the entire decompressed
* stream. If clear, the output buffer is at least the size of the dictionary (typically 32KB). */
/* TINFL_FLAG_COMPUTE_ADLER32: Force adler-32 checksum computation of the decompressed bytes. */
enum {
TINFL_FLAG_PARSE_ZLIB_HEADER = 1,
TINFL_FLAG_HAS_MORE_INPUT = 2,
TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF = 4,
TINFL_FLAG_COMPUTE_ADLER32 = 8
};
/* High level decompression functions: */
/* tinfl_decompress_mem_to_heap() decompresses a block in memory to a heap block allocated via malloc(). */
/* On entry: */
/* pSrc_buf, src_buf_len: Pointer and size of the Deflate or zlib source data to decompress. */
/* On return: */
/* Function returns a pointer to the decompressed data, or NULL on failure. */
/* *pOut_len will be set to the decompressed data's size, which could be larger than src_buf_len on uncompressible
* data. */
/* The caller must call mz_free() on the returned block when it's no longer needed. */
MINIZ_EXPORT void *tinfl_decompress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags);
/* tinfl_decompress_mem_to_mem() decompresses a block in memory to another block in memory. */
/* Returns TINFL_DECOMPRESS_MEM_TO_MEM_FAILED on failure, or the number of bytes written on success. */
#define TINFL_DECOMPRESS_MEM_TO_MEM_FAILED ((size_t)(-1))
MINIZ_EXPORT size_t tinfl_decompress_mem_to_mem(void *pOut_buf, size_t out_buf_len, const void *pSrc_buf,
size_t src_buf_len, int flags);
/* tinfl_decompress_mem_to_callback() decompresses a block in memory to an internal 32KB buffer, and a user provided
* callback function will be called to flush the buffer. */
/* Returns 1 on success or 0 on failure. */
typedef int (*tinfl_put_buf_func_ptr)(const void *pBuf, int len, void *pUser);
MINIZ_EXPORT int tinfl_decompress_mem_to_callback(const void *pIn_buf, size_t *pIn_buf_size,
tinfl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags);
struct tinfl_decompressor_tag;
typedef struct tinfl_decompressor_tag tinfl_decompressor;
#ifndef MINIZ_NO_MALLOC
/* Allocate the tinfl_decompressor structure in C so that */
/* non-C language bindings to tinfl_ API don't need to worry about */
/* structure size and allocation mechanism. */
MINIZ_EXPORT tinfl_decompressor *tinfl_decompressor_alloc(void);
MINIZ_EXPORT void tinfl_decompressor_free(tinfl_decompressor *pDecomp);
#endif
/* Max size of LZ dictionary. */
#define TINFL_LZ_DICT_SIZE 32768
/* Return status. */
typedef enum {
/* This flags indicates the inflator needs 1 or more input bytes to make forward progress, but the caller is
indicating that no more are available. The compressed data */
/* is probably corrupted. If you call the inflator again with more bytes it'll try to continue processing the input
but this is a BAD sign (either the data is corrupted or you called it incorrectly). */
/* If you call it again with no input you'll just get TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS again. */
TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS = -4,
/* This flag indicates that one or more of the input parameters was obviously bogus. (You can try calling it again,
but if you get this error the calling code is wrong.) */
TINFL_STATUS_BAD_PARAM = -3,
/* This flags indicate the inflator is finished but the adler32 check of the uncompressed data didn't match. If you
call it again it'll return TINFL_STATUS_DONE. */
TINFL_STATUS_ADLER32_MISMATCH = -2,
/* This flags indicate the inflator has somehow failed (bad code, corrupted input, etc.). If you call it again
without resetting via tinfl_init() it it'll just keep on returning the same status failure code. */
TINFL_STATUS_FAILED = -1,
/* Any status code less than TINFL_STATUS_DONE must indicate a failure. */
/* This flag indicates the inflator has returned every byte of uncompressed data that it can, has consumed every
byte that it needed, has successfully reached the end of the deflate stream, and */
/* if zlib headers and adler32 checking enabled that it has successfully checked the uncompressed data's adler32. If
you call it again you'll just get TINFL_STATUS_DONE over and over again. */
TINFL_STATUS_DONE = 0,
/* This flag indicates the inflator MUST have more input data (even 1 byte) before it can make any more forward
progress, or you need to clear the TINFL_FLAG_HAS_MORE_INPUT */
/* flag on the next call if you don't have any more source data. If the source data was somehow corrupted it's also
possible (but unlikely) for the inflator to keep on demanding input to */
/* proceed, so be sure to properly set the TINFL_FLAG_HAS_MORE_INPUT flag. */
TINFL_STATUS_NEEDS_MORE_INPUT = 1,
/* This flag indicates the inflator definitely has 1 or more bytes of uncompressed data available, but it cannot
write this data into the output buffer. */
/* Note if the source compressed data was corrupted it's possible for the inflator to return a lot of uncompressed
data to the caller. I've been assuming you know how much uncompressed data to expect */
/* (either exact or worst case) and will stop calling the inflator and fail after receiving too much. In pure
streaming scenarios where you have no idea how many bytes to expect this may not be possible */
/* so I may need to add some code to address this. */
TINFL_STATUS_HAS_MORE_OUTPUT = 2
} tinfl_status;
/* Initializes the decompressor to its initial state. */
#define tinfl_init(r) \
do { \
(r)->m_state = 0; \
} \
MZ_MACRO_END
#define tinfl_get_adler32(r) (r)->m_check_adler32
/* Main low-level decompressor coroutine function. This is the only function actually needed for decompression. All the
* other functions are just high-level helpers for improved usability. */
/* This is a universal API, i.e. it can be used as a building block to build any desired higher level decompression API.
* In the limit case, it can be called once per every byte input or output. */
MINIZ_EXPORT tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_next, size_t *pIn_buf_size,
mz_uint8 *pOut_buf_start, mz_uint8 *pOut_buf_next, size_t *pOut_buf_size,
const mz_uint32 decomp_flags);
/* Internal/private bits follow. */
enum {
TINFL_MAX_HUFF_TABLES = 3,
TINFL_MAX_HUFF_SYMBOLS_0 = 288,
TINFL_MAX_HUFF_SYMBOLS_1 = 32,
TINFL_MAX_HUFF_SYMBOLS_2 = 19,
TINFL_FAST_LOOKUP_BITS = 10,
TINFL_FAST_LOOKUP_SIZE = 1 << TINFL_FAST_LOOKUP_BITS
};
#if MINIZ_HAS_64BIT_REGISTERS
#define TINFL_USE_64BIT_BITBUF 1
#else
#define TINFL_USE_64BIT_BITBUF 0
#endif
#if TINFL_USE_64BIT_BITBUF
typedef mz_uint64 tinfl_bit_buf_t;
#define TINFL_BITBUF_SIZE (64)
#else
typedef mz_uint32 tinfl_bit_buf_t;
#define TINFL_BITBUF_SIZE (32)
#endif
struct tinfl_decompressor_tag {
mz_uint32 m_state, m_num_bits, m_zhdr0, m_zhdr1, m_z_adler32, m_final, m_type, m_check_adler32, m_dist, m_counter,
m_num_extra, m_table_sizes[TINFL_MAX_HUFF_TABLES];
tinfl_bit_buf_t m_bit_buf;
size_t m_dist_from_out_buf_start;
mz_int16 m_look_up[TINFL_MAX_HUFF_TABLES][TINFL_FAST_LOOKUP_SIZE];
mz_int16 m_tree_0[TINFL_MAX_HUFF_SYMBOLS_0 * 2];
mz_int16 m_tree_1[TINFL_MAX_HUFF_SYMBOLS_1 * 2];
mz_int16 m_tree_2[TINFL_MAX_HUFF_SYMBOLS_2 * 2];
mz_uint8 m_code_size_0[TINFL_MAX_HUFF_SYMBOLS_0];
mz_uint8 m_code_size_1[TINFL_MAX_HUFF_SYMBOLS_1];
mz_uint8 m_code_size_2[TINFL_MAX_HUFF_SYMBOLS_2];
mz_uint8 m_raw_header[4], m_len_codes[TINFL_MAX_HUFF_SYMBOLS_0 + TINFL_MAX_HUFF_SYMBOLS_1 + 137];
};
#ifdef __cplusplus
}
#endif
#endif /*#ifndef MINIZ_NO_INFLATE_APIS*/

523
clks/third_party/miniz/miniz_zip.h vendored Normal file
View File

@@ -0,0 +1,523 @@
#pragma once
#include "miniz_common.h"
/* ------------------- ZIP archive reading/writing */
#ifndef MINIZ_NO_ARCHIVE_APIS
#ifdef __cplusplus
extern "C" {
#endif
enum {
/* Note: These enums can be reduced as needed to save memory or stack space - they are pretty conservative. */
MZ_ZIP_MAX_IO_BUF_SIZE = 64 * 1024,
MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE = 512,
MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE = 512
};
typedef struct {
/* Central directory file index. */
mz_uint32 m_file_index;
/* Byte offset of this entry in the archive's central directory. Note we currently only support up to UINT_MAX or
* less bytes in the central dir. */
mz_uint64 m_central_dir_ofs;
/* These fields are copied directly from the zip's central dir. */
mz_uint16 m_version_made_by;
mz_uint16 m_version_needed;
mz_uint16 m_bit_flag;
mz_uint16 m_method;
/* CRC-32 of uncompressed data. */
mz_uint32 m_crc32;
/* File's compressed size. */
mz_uint64 m_comp_size;
/* File's uncompressed size. Note, I've seen some old archives where directory entries had 512 bytes for their
* uncompressed sizes, but when you try to unpack them you actually get 0 bytes. */
mz_uint64 m_uncomp_size;
/* Zip internal and external file attributes. */
mz_uint16 m_internal_attr;
mz_uint32 m_external_attr;
/* Entry's local header file offset in bytes. */
mz_uint64 m_local_header_ofs;
/* Size of comment in bytes. */
mz_uint32 m_comment_size;
/* MZ_TRUE if the entry appears to be a directory. */
mz_bool m_is_directory;
/* MZ_TRUE if the entry uses encryption/strong encryption (which miniz_zip doesn't support) */
mz_bool m_is_encrypted;
/* MZ_TRUE if the file is not encrypted, a patch file, and if it uses a compression method we support. */
mz_bool m_is_supported;
/* Filename. If string ends in '/' it's a subdirectory entry. */
/* Guaranteed to be zero terminated, may be truncated to fit. */
char m_filename[MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE];
/* Comment field. */
/* Guaranteed to be zero terminated, may be truncated to fit. */
char m_comment[MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE];
#ifdef MINIZ_NO_TIME
MZ_TIME_T m_padding;
#else
MZ_TIME_T m_time;
#endif
} mz_zip_archive_file_stat;
typedef size_t (*mz_file_read_func)(void *pOpaque, mz_uint64 file_ofs, void *pBuf, size_t n);
typedef size_t (*mz_file_write_func)(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n);
typedef mz_bool (*mz_file_needs_keepalive)(void *pOpaque);
struct mz_zip_internal_state_tag;
typedef struct mz_zip_internal_state_tag mz_zip_internal_state;
typedef enum {
MZ_ZIP_MODE_INVALID = 0,
MZ_ZIP_MODE_READING = 1,
MZ_ZIP_MODE_WRITING = 2,
MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED = 3
} mz_zip_mode;
typedef enum {
MZ_ZIP_FLAG_CASE_SENSITIVE = 0x0100,
MZ_ZIP_FLAG_IGNORE_PATH = 0x0200,
MZ_ZIP_FLAG_COMPRESSED_DATA = 0x0400,
MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY = 0x0800,
MZ_ZIP_FLAG_VALIDATE_LOCATE_FILE_FLAG =
0x1000, /* if enabled, mz_zip_reader_locate_file() will be called on each file as its validated to ensure the
func finds the file in the central dir (intended for testing) */
MZ_ZIP_FLAG_VALIDATE_HEADERS_ONLY =
0x2000, /* validate the local headers, but don't decompress the entire file and check the crc32 */
MZ_ZIP_FLAG_WRITE_ZIP64 =
0x4000, /* always use the zip64 file format, instead of the original zip file format with automatic switch to
zip64. Use as flags parameter with mz_zip_writer_init*_v2 */
MZ_ZIP_FLAG_WRITE_ALLOW_READING = 0x8000,
MZ_ZIP_FLAG_ASCII_FILENAME = 0x10000,
/*After adding a compressed file, seek back
to local file header and set the correct sizes*/
MZ_ZIP_FLAG_WRITE_HEADER_SET_SIZE = 0x20000,
MZ_ZIP_FLAG_READ_ALLOW_WRITING = 0x40000
} mz_zip_flags;
typedef enum {
MZ_ZIP_TYPE_INVALID = 0,
MZ_ZIP_TYPE_USER,
MZ_ZIP_TYPE_MEMORY,
MZ_ZIP_TYPE_HEAP,
MZ_ZIP_TYPE_FILE,
MZ_ZIP_TYPE_CFILE,
MZ_ZIP_TOTAL_TYPES
} mz_zip_type;
/* miniz error codes. Be sure to update mz_zip_get_error_string() if you add or modify this enum. */
typedef enum {
MZ_ZIP_NO_ERROR = 0,
MZ_ZIP_UNDEFINED_ERROR,
MZ_ZIP_TOO_MANY_FILES,
MZ_ZIP_FILE_TOO_LARGE,
MZ_ZIP_UNSUPPORTED_METHOD,
MZ_ZIP_UNSUPPORTED_ENCRYPTION,
MZ_ZIP_UNSUPPORTED_FEATURE,
MZ_ZIP_FAILED_FINDING_CENTRAL_DIR,
MZ_ZIP_NOT_AN_ARCHIVE,
MZ_ZIP_INVALID_HEADER_OR_CORRUPTED,
MZ_ZIP_UNSUPPORTED_MULTIDISK,
MZ_ZIP_DECOMPRESSION_FAILED,
MZ_ZIP_COMPRESSION_FAILED,
MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE,
MZ_ZIP_CRC_CHECK_FAILED,
MZ_ZIP_UNSUPPORTED_CDIR_SIZE,
MZ_ZIP_ALLOC_FAILED,
MZ_ZIP_FILE_OPEN_FAILED,
MZ_ZIP_FILE_CREATE_FAILED,
MZ_ZIP_FILE_WRITE_FAILED,
MZ_ZIP_FILE_READ_FAILED,
MZ_ZIP_FILE_CLOSE_FAILED,
MZ_ZIP_FILE_SEEK_FAILED,
MZ_ZIP_FILE_STAT_FAILED,
MZ_ZIP_INVALID_PARAMETER,
MZ_ZIP_INVALID_FILENAME,
MZ_ZIP_BUF_TOO_SMALL,
MZ_ZIP_INTERNAL_ERROR,
MZ_ZIP_FILE_NOT_FOUND,
MZ_ZIP_ARCHIVE_TOO_LARGE,
MZ_ZIP_VALIDATION_FAILED,
MZ_ZIP_WRITE_CALLBACK_FAILED,
MZ_ZIP_TOTAL_ERRORS
} mz_zip_error;
typedef struct {
mz_uint64 m_archive_size;
mz_uint64 m_central_directory_file_ofs;
/* We only support up to UINT32_MAX files in zip64 mode. */
mz_uint32 m_total_files;
mz_zip_mode m_zip_mode;
mz_zip_type m_zip_type;
mz_zip_error m_last_error;
mz_uint64 m_file_offset_alignment;
mz_alloc_func m_pAlloc;
mz_free_func m_pFree;
mz_realloc_func m_pRealloc;
void *m_pAlloc_opaque;
mz_file_read_func m_pRead;
mz_file_write_func m_pWrite;
mz_file_needs_keepalive m_pNeeds_keepalive;
void *m_pIO_opaque;
mz_zip_internal_state *m_pState;
} mz_zip_archive;
typedef struct {
mz_zip_archive *pZip;
mz_uint flags;
int status;
mz_uint64 read_buf_size, read_buf_ofs, read_buf_avail, comp_remaining, out_buf_ofs, cur_file_ofs;
mz_zip_archive_file_stat file_stat;
void *pRead_buf;
void *pWrite_buf;
size_t out_blk_remain;
tinfl_decompressor inflator;
#ifdef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS
mz_uint padding;
#else
mz_uint file_crc32;
#endif
} mz_zip_reader_extract_iter_state;
/* -------- ZIP reading */
/* Inits a ZIP archive reader. */
/* These functions read and validate the archive's central directory. */
MINIZ_EXPORT mz_bool mz_zip_reader_init(mz_zip_archive *pZip, mz_uint64 size, mz_uint flags);
MINIZ_EXPORT mz_bool mz_zip_reader_init_mem(mz_zip_archive *pZip, const void *pMem, size_t size, mz_uint flags);
#ifndef MINIZ_NO_STDIO
/* Read a archive from a disk file. */
/* file_start_ofs is the file offset where the archive actually begins, or 0. */
/* actual_archive_size is the true total size of the archive, which may be smaller than the file's actual size on disk.
* If zero the entire file is treated as the archive. */
MINIZ_EXPORT mz_bool mz_zip_reader_init_file(mz_zip_archive *pZip, const char *pFilename, mz_uint32 flags);
MINIZ_EXPORT mz_bool mz_zip_reader_init_file_v2(mz_zip_archive *pZip, const char *pFilename, mz_uint flags,
mz_uint64 file_start_ofs, mz_uint64 archive_size);
/* Read an archive from an already opened FILE, beginning at the current file position. */
/* The archive is assumed to be archive_size bytes long. If archive_size is 0, then the entire rest of the file is
* assumed to contain the archive. */
/* The FILE will NOT be closed when mz_zip_reader_end() is called. */
MINIZ_EXPORT mz_bool mz_zip_reader_init_cfile(mz_zip_archive *pZip, MZ_FILE *pFile, mz_uint64 archive_size,
mz_uint flags);
#endif
/* Ends archive reading, freeing all allocations, and closing the input archive file if mz_zip_reader_init_file() was
* used. */
MINIZ_EXPORT mz_bool mz_zip_reader_end(mz_zip_archive *pZip);
/* -------- ZIP reading or writing */
/* Clears a mz_zip_archive struct to all zeros. */
/* Important: This must be done before passing the struct to any mz_zip functions. */
MINIZ_EXPORT void mz_zip_zero_struct(mz_zip_archive *pZip);
MINIZ_EXPORT mz_zip_mode mz_zip_get_mode(mz_zip_archive *pZip);
MINIZ_EXPORT mz_zip_type mz_zip_get_type(mz_zip_archive *pZip);
/* Returns the total number of files in the archive. */
MINIZ_EXPORT mz_uint mz_zip_reader_get_num_files(mz_zip_archive *pZip);
MINIZ_EXPORT mz_uint64 mz_zip_get_archive_size(mz_zip_archive *pZip);
MINIZ_EXPORT mz_uint64 mz_zip_get_archive_file_start_offset(mz_zip_archive *pZip);
MINIZ_EXPORT MZ_FILE *mz_zip_get_cfile(mz_zip_archive *pZip);
/* Reads n bytes of raw archive data, starting at file offset file_ofs, to pBuf. */
MINIZ_EXPORT size_t mz_zip_read_archive_data(mz_zip_archive *pZip, mz_uint64 file_ofs, void *pBuf, size_t n);
/* All mz_zip funcs set the m_last_error field in the mz_zip_archive struct. These functions retrieve/manipulate this
* field. */
/* Note that the m_last_error functionality is not thread safe. */
MINIZ_EXPORT mz_zip_error mz_zip_set_last_error(mz_zip_archive *pZip, mz_zip_error err_num);
MINIZ_EXPORT mz_zip_error mz_zip_peek_last_error(mz_zip_archive *pZip);
MINIZ_EXPORT mz_zip_error mz_zip_clear_last_error(mz_zip_archive *pZip);
MINIZ_EXPORT mz_zip_error mz_zip_get_last_error(mz_zip_archive *pZip);
MINIZ_EXPORT const char *mz_zip_get_error_string(mz_zip_error mz_err);
/* MZ_TRUE if the archive file entry is a directory entry. */
MINIZ_EXPORT mz_bool mz_zip_reader_is_file_a_directory(mz_zip_archive *pZip, mz_uint file_index);
/* MZ_TRUE if the file is encrypted/strong encrypted. */
MINIZ_EXPORT mz_bool mz_zip_reader_is_file_encrypted(mz_zip_archive *pZip, mz_uint file_index);
/* MZ_TRUE if the compression method is supported, and the file is not encrypted, and the file is not a compressed patch
* file. */
MINIZ_EXPORT mz_bool mz_zip_reader_is_file_supported(mz_zip_archive *pZip, mz_uint file_index);
/* Retrieves the filename of an archive file entry. */
/* Returns the number of bytes written to pFilename, or if filename_buf_size is 0 this function returns the number of
* bytes needed to fully store the filename. */
MINIZ_EXPORT mz_uint mz_zip_reader_get_filename(mz_zip_archive *pZip, mz_uint file_index, char *pFilename,
mz_uint filename_buf_size);
/* Attempts to locates a file in the archive's central directory. */
/* Valid flags: MZ_ZIP_FLAG_CASE_SENSITIVE, MZ_ZIP_FLAG_IGNORE_PATH */
/* Returns -1 if the file cannot be found. */
MINIZ_EXPORT int mz_zip_reader_locate_file(mz_zip_archive *pZip, const char *pName, const char *pComment,
mz_uint flags);
MINIZ_EXPORT mz_bool mz_zip_reader_locate_file_v2(mz_zip_archive *pZip, const char *pName, const char *pComment,
mz_uint flags, mz_uint32 *file_index);
/* Returns detailed information about an archive file entry. */
MINIZ_EXPORT mz_bool mz_zip_reader_file_stat(mz_zip_archive *pZip, mz_uint file_index, mz_zip_archive_file_stat *pStat);
/* MZ_TRUE if the file is in zip64 format. */
/* A file is considered zip64 if it contained a zip64 end of central directory marker, or if it contained any zip64
* extended file information fields in the central directory. */
MINIZ_EXPORT mz_bool mz_zip_is_zip64(mz_zip_archive *pZip);
/* Returns the total central directory size in bytes. */
/* The current max supported size is <= MZ_UINT32_MAX. */
MINIZ_EXPORT size_t mz_zip_get_central_dir_size(mz_zip_archive *pZip);
/* Extracts a archive file to a memory buffer using no memory allocation. */
/* There must be at least enough room on the stack to store the inflator's state (~34KB or so). */
MINIZ_EXPORT mz_bool mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive *pZip, mz_uint file_index, void *pBuf,
size_t buf_size, mz_uint flags, void *pUser_read_buf,
size_t user_read_buf_size);
MINIZ_EXPORT mz_bool mz_zip_reader_extract_file_to_mem_no_alloc(mz_zip_archive *pZip, const char *pFilename, void *pBuf,
size_t buf_size, mz_uint flags, void *pUser_read_buf,
size_t user_read_buf_size);
/* Extracts a archive file to a memory buffer. */
MINIZ_EXPORT mz_bool mz_zip_reader_extract_to_mem(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size,
mz_uint flags);
MINIZ_EXPORT mz_bool mz_zip_reader_extract_file_to_mem(mz_zip_archive *pZip, const char *pFilename, void *pBuf,
size_t buf_size, mz_uint flags);
/* Extracts a archive file to a dynamically allocated heap buffer. */
/* The memory will be allocated via the mz_zip_archive's alloc/realloc functions. */
/* Returns NULL and sets the last error on failure. */
MINIZ_EXPORT void *mz_zip_reader_extract_to_heap(mz_zip_archive *pZip, mz_uint file_index, size_t *pSize,
mz_uint flags);
MINIZ_EXPORT void *mz_zip_reader_extract_file_to_heap(mz_zip_archive *pZip, const char *pFilename, size_t *pSize,
mz_uint flags);
/* Extracts a archive file using a callback function to output the file's data. */
MINIZ_EXPORT mz_bool mz_zip_reader_extract_to_callback(mz_zip_archive *pZip, mz_uint file_index,
mz_file_write_func pCallback, void *pOpaque, mz_uint flags);
MINIZ_EXPORT mz_bool mz_zip_reader_extract_file_to_callback(mz_zip_archive *pZip, const char *pFilename,
mz_file_write_func pCallback, void *pOpaque, mz_uint flags);
/* Extract a file iteratively */
MINIZ_EXPORT mz_zip_reader_extract_iter_state *mz_zip_reader_extract_iter_new(mz_zip_archive *pZip, mz_uint file_index,
mz_uint flags);
MINIZ_EXPORT mz_zip_reader_extract_iter_state *
mz_zip_reader_extract_file_iter_new(mz_zip_archive *pZip, const char *pFilename, mz_uint flags);
MINIZ_EXPORT size_t mz_zip_reader_extract_iter_read(mz_zip_reader_extract_iter_state *pState, void *pvBuf,
size_t buf_size);
MINIZ_EXPORT mz_bool mz_zip_reader_extract_iter_free(mz_zip_reader_extract_iter_state *pState);
#ifndef MINIZ_NO_STDIO
/* Extracts a archive file to a disk file and sets its last accessed and modified times. */
/* This function only extracts files, not archive directory records. */
MINIZ_EXPORT mz_bool mz_zip_reader_extract_to_file(mz_zip_archive *pZip, mz_uint file_index, const char *pDst_filename,
mz_uint flags);
MINIZ_EXPORT mz_bool mz_zip_reader_extract_file_to_file(mz_zip_archive *pZip, const char *pArchive_filename,
const char *pDst_filename, mz_uint flags);
/* Extracts a archive file starting at the current position in the destination FILE stream. */
MINIZ_EXPORT mz_bool mz_zip_reader_extract_to_cfile(mz_zip_archive *pZip, mz_uint file_index, MZ_FILE *File,
mz_uint flags);
MINIZ_EXPORT mz_bool mz_zip_reader_extract_file_to_cfile(mz_zip_archive *pZip, const char *pArchive_filename,
MZ_FILE *pFile, mz_uint flags);
#endif
#if 0
/* TODO */
typedef void *mz_zip_streaming_extract_state_ptr;
mz_zip_streaming_extract_state_ptr mz_zip_streaming_extract_begin(mz_zip_archive *pZip, mz_uint file_index, mz_uint flags);
mz_uint64 mz_zip_streaming_extract_get_size(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState);
mz_uint64 mz_zip_streaming_extract_get_cur_ofs(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState);
mz_bool mz_zip_streaming_extract_seek(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState, mz_uint64 new_ofs);
size_t mz_zip_streaming_extract_read(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState, void *pBuf, size_t buf_size);
mz_bool mz_zip_streaming_extract_end(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState);
#endif
/* This function compares the archive's local headers, the optional local zip64 extended information block, and the
* optional descriptor following the compressed data vs. the data in the central directory. */
/* It also validates that each file can be successfully uncompressed unless the MZ_ZIP_FLAG_VALIDATE_HEADERS_ONLY is
* specified. */
MINIZ_EXPORT mz_bool mz_zip_validate_file(mz_zip_archive *pZip, mz_uint file_index, mz_uint flags);
/* Validates an entire archive by calling mz_zip_validate_file() on each file. */
MINIZ_EXPORT mz_bool mz_zip_validate_archive(mz_zip_archive *pZip, mz_uint flags);
/* Misc utils/helpers, valid for ZIP reading or writing */
MINIZ_EXPORT mz_bool mz_zip_validate_mem_archive(const void *pMem, size_t size, mz_uint flags, mz_zip_error *pErr);
#ifndef MINIZ_NO_STDIO
MINIZ_EXPORT mz_bool mz_zip_validate_file_archive(const char *pFilename, mz_uint flags, mz_zip_error *pErr);
#endif
/* Universal end function - calls either mz_zip_reader_end() or mz_zip_writer_end(). */
MINIZ_EXPORT mz_bool mz_zip_end(mz_zip_archive *pZip);
/* -------- ZIP writing */
#ifndef MINIZ_NO_ARCHIVE_WRITING_APIS
/* Inits a ZIP archive writer. */
/*Set pZip->m_pWrite (and pZip->m_pIO_opaque) before calling mz_zip_writer_init or mz_zip_writer_init_v2*/
/*The output is streamable, i.e. file_ofs in mz_file_write_func always increases only by n*/
MINIZ_EXPORT mz_bool mz_zip_writer_init(mz_zip_archive *pZip, mz_uint64 existing_size);
MINIZ_EXPORT mz_bool mz_zip_writer_init_v2(mz_zip_archive *pZip, mz_uint64 existing_size, mz_uint flags);
MINIZ_EXPORT mz_bool mz_zip_writer_init_heap(mz_zip_archive *pZip, size_t size_to_reserve_at_beginning,
size_t initial_allocation_size);
MINIZ_EXPORT mz_bool mz_zip_writer_init_heap_v2(mz_zip_archive *pZip, size_t size_to_reserve_at_beginning,
size_t initial_allocation_size, mz_uint flags);
#ifndef MINIZ_NO_STDIO
MINIZ_EXPORT mz_bool mz_zip_writer_init_file(mz_zip_archive *pZip, const char *pFilename,
mz_uint64 size_to_reserve_at_beginning);
MINIZ_EXPORT mz_bool mz_zip_writer_init_file_v2(mz_zip_archive *pZip, const char *pFilename,
mz_uint64 size_to_reserve_at_beginning, mz_uint flags);
MINIZ_EXPORT mz_bool mz_zip_writer_init_cfile(mz_zip_archive *pZip, MZ_FILE *pFile, mz_uint flags);
#endif
/* Converts a ZIP archive reader object into a writer object, to allow efficient in-place file appends to occur on an
* existing archive. */
/* For archives opened using mz_zip_reader_init_file, pFilename must be the archive's filename so it can be reopened for
* writing. If the file can't be reopened, mz_zip_reader_end() will be called. */
/* For archives opened using mz_zip_reader_init_mem, the memory block must be growable using the realloc callback (which
* defaults to realloc unless you've overridden it). */
/* Finally, for archives opened using mz_zip_reader_init, the mz_zip_archive's user provided m_pWrite function cannot be
* NULL. */
/* Note: In-place archive modification is not recommended unless you know what you're doing, because if execution stops
* or something goes wrong before */
/* the archive is finalized the file's central directory will be hosed. */
MINIZ_EXPORT mz_bool mz_zip_writer_init_from_reader(mz_zip_archive *pZip, const char *pFilename);
MINIZ_EXPORT mz_bool mz_zip_writer_init_from_reader_v2(mz_zip_archive *pZip, const char *pFilename, mz_uint flags);
/* Adds the contents of a memory buffer to an archive. These functions record the current local time into the archive.
*/
/* To add a directory entry, call this method with an archive name ending in a forwardslash with an empty buffer. */
/* level_and_flags - compression level (0-10, see MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc.) logically OR'd with zero or
* more mz_zip_flags, or just set to MZ_DEFAULT_COMPRESSION. */
MINIZ_EXPORT mz_bool mz_zip_writer_add_mem(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf,
size_t buf_size, mz_uint level_and_flags);
/* Like mz_zip_writer_add_mem(), except you can specify a file comment field, and optionally supply the function with
* already compressed data. */
/* uncomp_size/uncomp_crc32 are only used if the MZ_ZIP_FLAG_COMPRESSED_DATA flag is specified. */
MINIZ_EXPORT mz_bool mz_zip_writer_add_mem_ex(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf,
size_t buf_size, const void *pComment, mz_uint16 comment_size,
mz_uint level_and_flags, mz_uint64 uncomp_size, mz_uint32 uncomp_crc32);
MINIZ_EXPORT mz_bool mz_zip_writer_add_mem_ex_v2(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf,
size_t buf_size, const void *pComment, mz_uint16 comment_size,
mz_uint level_and_flags, mz_uint64 uncomp_size, mz_uint32 uncomp_crc32,
MZ_TIME_T *last_modified, const char *user_extra_data_local,
mz_uint user_extra_data_local_len, const char *user_extra_data_central,
mz_uint user_extra_data_central_len);
/* Adds the contents of a file to an archive. This function also records the disk file's modified time into the archive.
*/
/* File data is supplied via a read callback function. User mz_zip_writer_add_(c)file to add a file directly.*/
MINIZ_EXPORT mz_bool mz_zip_writer_add_read_buf_callback(
mz_zip_archive *pZip, const char *pArchive_name, mz_file_read_func read_callback, void *callback_opaque,
mz_uint64 max_size, const MZ_TIME_T *pFile_time, const void *pComment, mz_uint16 comment_size,
mz_uint level_and_flags, const char *user_extra_data_local, mz_uint user_extra_data_local_len,
const char *user_extra_data_central, mz_uint user_extra_data_central_len);
#ifndef MINIZ_NO_STDIO
/* Adds the contents of a disk file to an archive. This function also records the disk file's modified time into the
* archive. */
/* level_and_flags - compression level (0-10, see MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc.) logically OR'd with zero or
* more mz_zip_flags, or just set to MZ_DEFAULT_COMPRESSION. */
MINIZ_EXPORT mz_bool mz_zip_writer_add_file(mz_zip_archive *pZip, const char *pArchive_name, const char *pSrc_filename,
const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags);
/* Like mz_zip_writer_add_file(), except the file data is read from the specified FILE stream. */
MINIZ_EXPORT mz_bool mz_zip_writer_add_cfile(mz_zip_archive *pZip, const char *pArchive_name, MZ_FILE *pSrc_file,
mz_uint64 max_size, const MZ_TIME_T *pFile_time, const void *pComment,
mz_uint16 comment_size, mz_uint level_and_flags,
const char *user_extra_data_local, mz_uint user_extra_data_local_len,
const char *user_extra_data_central, mz_uint user_extra_data_central_len);
#endif
/* Adds a file to an archive by fully cloning the data from another archive. */
/* This function fully clones the source file's compressed data (no recompression), along with its full filename, extra
* data (it may add or modify the zip64 local header extra data field), and the optional descriptor following the
* compressed data. */
MINIZ_EXPORT mz_bool mz_zip_writer_add_from_zip_reader(mz_zip_archive *pZip, mz_zip_archive *pSource_zip,
mz_uint src_file_index);
/* Finalizes the archive by writing the central directory records followed by the end of central directory record. */
/* After an archive is finalized, the only valid call on the mz_zip_archive struct is mz_zip_writer_end(). */
/* An archive must be manually finalized by calling this function for it to be valid. */
MINIZ_EXPORT mz_bool mz_zip_writer_finalize_archive(mz_zip_archive *pZip);
/* Finalizes a heap archive, returning a pointer to the heap block and its size. */
/* The heap block will be allocated using the mz_zip_archive's alloc/realloc callbacks. */
MINIZ_EXPORT mz_bool mz_zip_writer_finalize_heap_archive(mz_zip_archive *pZip, void **ppBuf, size_t *pSize);
/* Ends archive writing, freeing all allocations, and closing the output file if mz_zip_writer_init_file() was used. */
/* Note for the archive to be valid, it *must* have been finalized before ending (this function will not do it for you).
*/
MINIZ_EXPORT mz_bool mz_zip_writer_end(mz_zip_archive *pZip);
/* -------- Misc. high-level helper functions: */
/* mz_zip_add_mem_to_archive_file_in_place() efficiently (but not atomically) appends a memory blob to a ZIP archive. */
/* Note this is NOT a fully safe operation. If it crashes or dies in some way your archive can be left in a screwed up
* state (without a central directory). */
/* level_and_flags - compression level (0-10, see MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc.) logically OR'd with zero or
* more mz_zip_flags, or just set to MZ_DEFAULT_COMPRESSION. */
/* TODO: Perhaps add an option to leave the existing central dir in place in case the add dies? We could then truncate
* the file (so the old central dir would be at the end) if something goes wrong. */
MINIZ_EXPORT mz_bool mz_zip_add_mem_to_archive_file_in_place(const char *pZip_filename, const char *pArchive_name,
const void *pBuf, size_t buf_size, const void *pComment,
mz_uint16 comment_size, mz_uint level_and_flags);
MINIZ_EXPORT mz_bool mz_zip_add_mem_to_archive_file_in_place_v2(const char *pZip_filename, const char *pArchive_name,
const void *pBuf, size_t buf_size, const void *pComment,
mz_uint16 comment_size, mz_uint level_and_flags,
mz_zip_error *pErr);
#ifndef MINIZ_NO_STDIO
/* Reads a single file from an archive into a heap block. */
/* If pComment is not NULL, only the file with the specified comment will be extracted. */
/* Returns NULL on failure. */
MINIZ_EXPORT void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, const char *pArchive_name,
size_t *pSize, mz_uint flags);
MINIZ_EXPORT void *mz_zip_extract_archive_file_to_heap_v2(const char *pZip_filename, const char *pArchive_name,
const char *pComment, size_t *pSize, mz_uint flags,
mz_zip_error *pErr);
#endif
#endif /* #ifndef MINIZ_NO_ARCHIVE_WRITING_APIS */
#ifdef __cplusplus
}
#endif
#endif /* MINIZ_NO_ARCHIVE_APIS */

1030
clks/third_party/qrcodegen/qrcodegen.c vendored Normal file

File diff suppressed because it is too large Load Diff

363
clks/third_party/qrcodegen/qrcodegen.h vendored Normal file
View File

@@ -0,0 +1,363 @@
/*
* QR Code generator library (C)
*
* Copyright (c) Project Nayuki. (MIT License)
* https://www.nayuki.io/page/qr-code-generator-library
*
* 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.
*/
#pragma once
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
/*
* This library creates QR Code symbols, which is a type of two-dimension barcode.
* Invented by Denso Wave and described in the ISO/IEC 18004 standard.
* A QR Code structure is an immutable square grid of dark and light cells.
* The library provides functions to create a QR Code from text or binary data.
* The library covers the QR Code Model 2 specification, supporting all versions (sizes)
* from 1 to 40, all 4 error correction levels, and 4 character encoding modes.
*
* Ways to create a QR Code object:
* - High level: Take the payload data and call qrcodegen_encodeText() or qrcodegen_encodeBinary().
* - Low level: Custom-make the list of segments and call
* qrcodegen_encodeSegments() or qrcodegen_encodeSegmentsAdvanced().
* (Note that all ways require supplying the desired error correction level and various byte buffers.)
*/
/*---- Enum and struct types----*/
/*
* The error correction level in a QR Code symbol.
*/
enum qrcodegen_Ecc {
// Must be declared in ascending order of error protection
// so that an internal qrcodegen function works properly
qrcodegen_Ecc_LOW = 0, // The QR Code can tolerate about 7% erroneous codewords
qrcodegen_Ecc_MEDIUM, // The QR Code can tolerate about 15% erroneous codewords
qrcodegen_Ecc_QUARTILE, // The QR Code can tolerate about 25% erroneous codewords
qrcodegen_Ecc_HIGH, // The QR Code can tolerate about 30% erroneous codewords
};
/*
* The mask pattern used in a QR Code symbol.
*/
enum qrcodegen_Mask {
// A special value to tell the QR Code encoder to
// automatically select an appropriate mask pattern
qrcodegen_Mask_AUTO = -1,
// The eight actual mask patterns
qrcodegen_Mask_0 = 0,
qrcodegen_Mask_1,
qrcodegen_Mask_2,
qrcodegen_Mask_3,
qrcodegen_Mask_4,
qrcodegen_Mask_5,
qrcodegen_Mask_6,
qrcodegen_Mask_7,
};
/*
* Describes how a segment's data bits are interpreted.
*/
enum qrcodegen_Mode {
qrcodegen_Mode_NUMERIC = 0x1,
qrcodegen_Mode_ALPHANUMERIC = 0x2,
qrcodegen_Mode_BYTE = 0x4,
qrcodegen_Mode_KANJI = 0x8,
qrcodegen_Mode_ECI = 0x7,
};
/*
* A segment of character/binary/control data in a QR Code symbol.
* The mid-level way to create a segment is to take the payload data
* and call a factory function such as qrcodegen_makeNumeric().
* The low-level way to create a segment is to custom-make the bit buffer
* and initialize a qrcodegen_Segment struct with appropriate values.
* Even in the most favorable conditions, a QR Code can only hold 7089 characters of data.
* Any segment longer than this is meaningless for the purpose of generating QR Codes.
* Moreover, the maximum allowed bit length is 32767 because
* the largest QR Code (version 40) has 31329 modules.
*/
struct qrcodegen_Segment {
// The mode indicator of this segment.
enum qrcodegen_Mode mode;
// The length of this segment's unencoded data. Measured in characters for
// numeric/alphanumeric/kanji mode, bytes for byte mode, and 0 for ECI mode.
// Always zero or positive. Not the same as the data's bit length.
int numChars;
// The data bits of this segment, packed in bitwise big endian.
// Can be null if the bit length is zero.
uint8_t *data;
// The number of valid data bits used in the buffer. Requires
// 0 <= bitLength <= 32767, and bitLength <= (capacity of data array) * 8.
// The character count (numChars) must agree with the mode and the bit buffer length.
int bitLength;
};
/*---- Macro constants and functions ----*/
#define qrcodegen_VERSION_MIN 1 // The minimum version number supported in the QR Code Model 2 standard
#define qrcodegen_VERSION_MAX 40 // The maximum version number supported in the QR Code Model 2 standard
// Calculates the number of bytes needed to store any QR Code up to and including the given version number,
// as a compile-time constant. For example, 'uint8_t buffer[qrcodegen_BUFFER_LEN_FOR_VERSION(25)];'
// can store any single QR Code from version 1 to 25 (inclusive). The result fits in an int (or int16).
// Requires qrcodegen_VERSION_MIN <= n <= qrcodegen_VERSION_MAX.
#define qrcodegen_BUFFER_LEN_FOR_VERSION(n) ((((n) * 4 + 17) * ((n) * 4 + 17) + 7) / 8 + 1)
// The worst-case number of bytes needed to store one QR Code, up to and including
// version 40. This value equals 3918, which is just under 4 kilobytes.
// Use this more convenient value to avoid calculating tighter memory bounds for buffers.
#define qrcodegen_BUFFER_LEN_MAX qrcodegen_BUFFER_LEN_FOR_VERSION(qrcodegen_VERSION_MAX)
/*---- Functions (high level) to generate QR Codes ----*/
/*
* Encodes the given text string to a QR Code, returning true if successful.
* If the data is too long to fit in any version in the given range
* at the given ECC level, then false is returned.
*
* The input text must be encoded in UTF-8 and contain no NULs.
* Requires 1 <= minVersion <= maxVersion <= 40.
*
* The smallest possible QR Code version within the given range is automatically
* chosen for the output. Iff boostEcl is true, then the ECC level of the result
* may be higher than the ecl argument if it can be done without increasing the
* version. The mask is either between qrcodegen_Mask_0 to 7 to force that mask, or
* qrcodegen_Mask_AUTO to automatically choose an appropriate mask (which may be slow).
*
* About the arrays, letting len = qrcodegen_BUFFER_LEN_FOR_VERSION(maxVersion):
* - Before calling the function:
* - The array ranges tempBuffer[0 : len] and qrcode[0 : len] must allow
* reading and writing; hence each array must have a length of at least len.
* - The two ranges must not overlap (aliasing).
* - The initial state of both ranges can be uninitialized
* because the function always writes before reading.
* - After the function returns:
* - Both ranges have no guarantee on which elements are initialized and what values are stored.
* - tempBuffer contains no useful data and should be treated as entirely uninitialized.
* - If successful, qrcode can be passed into qrcodegen_getSize() and qrcodegen_getModule().
*
* If successful, the resulting QR Code may use numeric,
* alphanumeric, or byte mode to encode the text.
*
* In the most optimistic case, a QR Code at version 40 with low ECC
* can hold any UTF-8 string up to 2953 bytes, or any alphanumeric string
* up to 4296 characters, or any digit string up to 7089 characters.
* These numbers represent the hard upper limit of the QR Code standard.
*
* Please consult the QR Code specification for information on
* data capacities per version, ECC level, and text encoding mode.
*/
bool qrcodegen_encodeText(const char *text, uint8_t tempBuffer[], uint8_t qrcode[], enum qrcodegen_Ecc ecl,
int minVersion, int maxVersion, enum qrcodegen_Mask mask, bool boostEcl);
/*
* Encodes the given binary data to a QR Code, returning true if successful.
* If the data is too long to fit in any version in the given range
* at the given ECC level, then false is returned.
*
* Requires 1 <= minVersion <= maxVersion <= 40.
*
* The smallest possible QR Code version within the given range is automatically
* chosen for the output. Iff boostEcl is true, then the ECC level of the result
* may be higher than the ecl argument if it can be done without increasing the
* version. The mask is either between qrcodegen_Mask_0 to 7 to force that mask, or
* qrcodegen_Mask_AUTO to automatically choose an appropriate mask (which may be slow).
*
* About the arrays, letting len = qrcodegen_BUFFER_LEN_FOR_VERSION(maxVersion):
* - Before calling the function:
* - The array ranges dataAndTemp[0 : len] and qrcode[0 : len] must allow
* reading and writing; hence each array must have a length of at least len.
* - The two ranges must not overlap (aliasing).
* - The input array range dataAndTemp[0 : dataLen] should normally be
* valid UTF-8 text, but is not required by the QR Code standard.
* - The initial state of dataAndTemp[dataLen : len] and qrcode[0 : len]
* can be uninitialized because the function always writes before reading.
* - After the function returns:
* - Both ranges have no guarantee on which elements are initialized and what values are stored.
* - dataAndTemp contains no useful data and should be treated as entirely uninitialized.
* - If successful, qrcode can be passed into qrcodegen_getSize() and qrcodegen_getModule().
*
* If successful, the resulting QR Code will use byte mode to encode the data.
*
* In the most optimistic case, a QR Code at version 40 with low ECC can hold any byte
* sequence up to length 2953. This is the hard upper limit of the QR Code standard.
*
* Please consult the QR Code specification for information on
* data capacities per version, ECC level, and text encoding mode.
*/
bool qrcodegen_encodeBinary(uint8_t dataAndTemp[], size_t dataLen, uint8_t qrcode[], enum qrcodegen_Ecc ecl,
int minVersion, int maxVersion, enum qrcodegen_Mask mask, bool boostEcl);
/*---- Functions (low level) to generate QR Codes ----*/
/*
* Encodes the given segments to a QR Code, returning true if successful.
* If the data is too long to fit in any version at the given ECC level,
* then false is returned.
*
* The smallest possible QR Code version is automatically chosen for
* the output. The ECC level of the result may be higher than the
* ecl argument if it can be done without increasing the version.
*
* About the byte arrays, letting len = qrcodegen_BUFFER_LEN_FOR_VERSION(qrcodegen_VERSION_MAX):
* - Before calling the function:
* - The array ranges tempBuffer[0 : len] and qrcode[0 : len] must allow
* reading and writing; hence each array must have a length of at least len.
* - The two ranges must not overlap (aliasing).
* - The initial state of both ranges can be uninitialized
* because the function always writes before reading.
* - The input array segs can contain segments whose data buffers overlap with tempBuffer.
* - After the function returns:
* - Both ranges have no guarantee on which elements are initialized and what values are stored.
* - tempBuffer contains no useful data and should be treated as entirely uninitialized.
* - Any segment whose data buffer overlaps with tempBuffer[0 : len]
* must be treated as having invalid values in that array.
* - If successful, qrcode can be passed into qrcodegen_getSize() and qrcodegen_getModule().
*
* Please consult the QR Code specification for information on
* data capacities per version, ECC level, and text encoding mode.
*
* This function allows the user to create a custom sequence of segments that switches
* between modes (such as alphanumeric and byte) to encode text in less space.
* This is a low-level API; the high-level API is qrcodegen_encodeText() and qrcodegen_encodeBinary().
*/
bool qrcodegen_encodeSegments(const struct qrcodegen_Segment segs[], size_t len, enum qrcodegen_Ecc ecl,
uint8_t tempBuffer[], uint8_t qrcode[]);
/*
* Encodes the given segments to a QR Code, returning true if successful.
* If the data is too long to fit in any version in the given range
* at the given ECC level, then false is returned.
*
* Requires 1 <= minVersion <= maxVersion <= 40.
*
* The smallest possible QR Code version within the given range is automatically
* chosen for the output. Iff boostEcl is true, then the ECC level of the result
* may be higher than the ecl argument if it can be done without increasing the
* version. The mask is either between qrcodegen_Mask_0 to 7 to force that mask, or
* qrcodegen_Mask_AUTO to automatically choose an appropriate mask (which may be slow).
*
* About the byte arrays, letting len = qrcodegen_BUFFER_LEN_FOR_VERSION(qrcodegen_VERSION_MAX):
* - Before calling the function:
* - The array ranges tempBuffer[0 : len] and qrcode[0 : len] must allow
* reading and writing; hence each array must have a length of at least len.
* - The two ranges must not overlap (aliasing).
* - The initial state of both ranges can be uninitialized
* because the function always writes before reading.
* - The input array segs can contain segments whose data buffers overlap with tempBuffer.
* - After the function returns:
* - Both ranges have no guarantee on which elements are initialized and what values are stored.
* - tempBuffer contains no useful data and should be treated as entirely uninitialized.
* - Any segment whose data buffer overlaps with tempBuffer[0 : len]
* must be treated as having invalid values in that array.
* - If successful, qrcode can be passed into qrcodegen_getSize() and qrcodegen_getModule().
*
* Please consult the QR Code specification for information on
* data capacities per version, ECC level, and text encoding mode.
*
* This function allows the user to create a custom sequence of segments that switches
* between modes (such as alphanumeric and byte) to encode text in less space.
* This is a low-level API; the high-level API is qrcodegen_encodeText() and qrcodegen_encodeBinary().
*/
bool qrcodegen_encodeSegmentsAdvanced(const struct qrcodegen_Segment segs[], size_t len, enum qrcodegen_Ecc ecl,
int minVersion, int maxVersion, enum qrcodegen_Mask mask, bool boostEcl,
uint8_t tempBuffer[], uint8_t qrcode[]);
/*
* Tests whether the given string can be encoded as a segment in numeric mode.
* A string is encodable iff each character is in the range 0 to 9.
*/
bool qrcodegen_isNumeric(const char *text);
/*
* Tests whether the given string can be encoded as a segment in alphanumeric mode.
* A string is encodable iff each character is in the following set: 0 to 9, A to Z
* (uppercase only), space, dollar, percent, asterisk, plus, hyphen, period, slash, colon.
*/
bool qrcodegen_isAlphanumeric(const char *text);
/*
* Returns the number of bytes (uint8_t) needed for the data buffer of a segment
* containing the given number of characters using the given mode. Notes:
* - Returns SIZE_MAX on failure, i.e. numChars > INT16_MAX or the internal
* calculation of the number of needed bits exceeds INT16_MAX (i.e. 32767).
* - Otherwise, all valid results are in the range [0, ceil(INT16_MAX / 8)], i.e. at most 4096.
* - It is okay for the user to allocate more bytes for the buffer than needed.
* - For byte mode, numChars measures the number of bytes, not Unicode code points.
* - For ECI mode, numChars must be 0, and the worst-case number of bytes is returned.
* An actual ECI segment can have shorter data. For non-ECI modes, the result is exact.
*/
size_t qrcodegen_calcSegmentBufferSize(enum qrcodegen_Mode mode, size_t numChars);
/*
* Returns a segment representing the given binary data encoded in
* byte mode. All input byte arrays are acceptable. Any text string
* can be converted to UTF-8 bytes and encoded as a byte mode segment.
*/
struct qrcodegen_Segment qrcodegen_makeBytes(const uint8_t data[], size_t len, uint8_t buf[]);
/*
* Returns a segment representing the given string of decimal digits encoded in numeric mode.
*/
struct qrcodegen_Segment qrcodegen_makeNumeric(const char *digits, uint8_t buf[]);
/*
* Returns a segment representing the given text string encoded in alphanumeric mode.
* The characters allowed are: 0 to 9, A to Z (uppercase only), space,
* dollar, percent, asterisk, plus, hyphen, period, slash, colon.
*/
struct qrcodegen_Segment qrcodegen_makeAlphanumeric(const char *text, uint8_t buf[]);
/*
* Returns a segment representing an Extended Channel Interpretation
* (ECI) designator with the given assignment value.
*/
struct qrcodegen_Segment qrcodegen_makeEci(long assignVal, uint8_t buf[]);
/*---- Functions to extract raw data from QR Codes ----*/
/*
* Returns the side length of the given QR Code, assuming that encoding succeeded.
* The result is in the range [21, 177]. Note that the length of the array buffer
* is related to the side length - every 'uint8_t qrcode[]' must have length at least
* qrcodegen_BUFFER_LEN_FOR_VERSION(version), which equals ceil(size^2 / 8 + 1).
*/
int qrcodegen_getSize(const uint8_t qrcode[]);
/*
* Returns the color of the module (pixel) at the given coordinates, which is false
* for light or true for dark. The top left corner has the coordinates (x=0, y=0).
* If the given coordinates are out of bounds, then false (light) is returned.
*/
bool qrcodegen_getModule(const uint8_t qrcode[], int x, int y);
#ifdef __cplusplus
}
#endif

View File

@@ -0,0 +1,7 @@
#ifndef CLEONOS_VERSION_H
#define CLEONOS_VERSION_H
#define CLKS_VERSION_STRING "1.0.0-alpha"
#define CLEONOS_VERSION_STRING "1.0.0-alpha"
#endif

View File

@@ -28,7 +28,7 @@ u64 cleonos_syscall(u64 id, u64 arg0, u64 arg1, u64 arg2);
内核分发位置: 内核分发位置:
- `clks/kernel/syscall.c` - `clks/kernel/runtime/syscall.c`
## 2. 全局返回规则 ## 2. 全局返回规则
@@ -61,10 +61,10 @@ u64 cleonos_syscall(u64 id, u64 arg0, u64 arg1, u64 arg2);
## 3. 当前实现中的长度/路径限制 ## 3. 当前实现中的长度/路径限制
以下限制由内核 `clks/kernel/syscall.c` 当前实现决定: 以下限制由内核 `clks/kernel/runtime/syscall.c` 当前实现决定:
- 日志写入 `LOG_WRITE`:最大拷贝 `191` 字节。 - 日志写入 `LOG_WRITE`:最大拷贝 `191` 字节。
- TTY 文本写入 `TTY_WRITE`:最大拷贝 `512` 字节。 - TTY 文本写入 `TTY_WRITE`:最大拷贝 `2048` 字节。
- 文件读取 `FS_READ`:最多读取 `min(file_size, buffer_size)` 字节。 - 文件读取 `FS_READ`:最多读取 `min(file_size, buffer_size)` 字节。
- 文件写入 `FS_WRITE` / `FS_APPEND`:内核按 `65536` 字节分块搬运;这是实现分块大小,不是文件大小上限。 - 文件写入 `FS_WRITE` / `FS_APPEND`:内核按 `65536` 字节分块搬运;这是实现分块大小,不是文件大小上限。
- log journal 行读取缓冲:`256` 字节。 - log journal 行读取缓冲:`256` 字节。
@@ -83,7 +83,7 @@ u64 cleonos_syscall(u64 id, u64 arg0, u64 arg1, u64 arg2);
- `/proc/<pid>`:指定 PID 快照文本 - `/proc/<pid>`:指定 PID 快照文本
- `/proc` 为只读;写入类 syscall 不支持。 - `/proc` 为只读;写入类 syscall 不支持。
## 4. Syscall 列表0~76 ## 4. Syscall 列表0~84
### 0 `CLEONOS_SYSCALL_LOG_WRITE` ### 0 `CLEONOS_SYSCALL_LOG_WRITE`
@@ -604,6 +604,69 @@ u64 cleonos_syscall(u64 id, u64 arg0, u64 arg1, u64 arg2);
- 返回:新 fd失败 `-1` - 返回:新 fd失败 `-1`
- 说明:当前为“按值复制”语义(复制 flags/offset/目标对象)。 - 说明:当前为“按值复制”语义(复制 flags/offset/目标对象)。
### 77 `CLEONOS_SYSCALL_DL_OPEN`
- 参数:
- `arg0`: `const char *path`
- 返回:动态库句柄(`handle`);失败 `-1`
- 说明将用户态动态库ELF加载到当前进程地址空间`DL_SYM` 查询符号。
### 78 `CLEONOS_SYSCALL_DL_CLOSE`
- 参数:
- `arg0`: `u64 handle`
- 返回:成功 `0`,失败 `-1`
- 说明:关闭/释放由 `DL_OPEN` 返回的动态库句柄。
### 79 `CLEONOS_SYSCALL_DL_SYM`
- 参数:
- `arg0`: `u64 handle`
- `arg1`: `const char *symbol`
- 返回:符号地址(`u64`);失败返回 `0`
- 说明:用于查询库导出符号入口地址。
### 80 `CLEONOS_SYSCALL_EXEC_PATHV_IO`
- 参数:
- `arg0`: `const char *path`
- `arg1`: `const char *argv_line`(可为 `0`
- `arg2`: `struct { u64 env_line_ptr; u64 stdin_fd; u64 stdout_fd; u64 stderr_fd; } *req`
- 返回:与 `EXEC_PATHV` 一致(成功返回子进程退出状态,失败 `-1`
- 说明:在 `EXEC_PATHV` 基础上增加 I/O 句柄重定向(用于管道与重定向)。
### 81 `CLEONOS_SYSCALL_FB_INFO`
- 参数:
- `arg0`: `cleonos_fb_info *out_info`
- 返回:成功 `1`,失败 `0`
- 说明:获取 framebuffer 信息(`width/height/pitch/bpp`)。`out_info` 为空或 framebuffer 未就绪时失败。
### 82 `CLEONOS_SYSCALL_FB_BLIT`
- 参数:
- `arg0`: `const cleonos_fb_blit_req *req`
- 返回:成功 `1`,失败 `0`
- 说明:
- 从用户态 `pixels_ptr` 指向的 32bpp 源缓冲拷贝到 framebuffer。
- `src_pitch_bytes=0` 时按 `src_width*4` 推导。
- 当前实现限制:`src_width<=4096``src_height<=4096``scale<=8`,且目标坐标需落在屏幕内。
### 83 `CLEONOS_SYSCALL_FB_CLEAR`
- 参数:
- `arg0`: `u64 rgb`(低 32 位有效)
- 返回:成功 `1`,失败 `0`
- 说明:用纯色清屏。
### 84 `CLEONOS_SYSCALL_KERNEL_VERSION`
- 参数:
- `arg0`: `char *out_version`
- `arg1`: `u64 out_size`
- 返回:实际写入字节数(不含终止符),失败返回 `0`
- 说明:返回 CLKS 内核版本字符串(当前默认 `1.0.0-alpha`),内核会保证输出以 `\0` 结尾。
## 5. 用户态封装函数 ## 5. 用户态封装函数
用户态封装位于: 用户态封装位于:
@@ -629,6 +692,10 @@ u64 cleonos_syscall(u64 id, u64 arg0, u64 arg1, u64 arg2);
- `cleonos_sys_kdbg_sym()` / `cleonos_sys_kdbg_bt()` / `cleonos_sys_kdbg_regs()` - `cleonos_sys_kdbg_sym()` / `cleonos_sys_kdbg_bt()` / `cleonos_sys_kdbg_regs()`
- `cleonos_sys_stats_total()` / `cleonos_sys_stats_id_count()` / `cleonos_sys_stats_recent_window()` / `cleonos_sys_stats_recent_id()` - `cleonos_sys_stats_total()` / `cleonos_sys_stats_id_count()` / `cleonos_sys_stats_recent_window()` / `cleonos_sys_stats_recent_id()`
- `cleonos_sys_fd_open()` / `cleonos_sys_fd_read()` / `cleonos_sys_fd_write()` / `cleonos_sys_fd_close()` / `cleonos_sys_fd_dup()` - `cleonos_sys_fd_open()` / `cleonos_sys_fd_read()` / `cleonos_sys_fd_write()` / `cleonos_sys_fd_close()` / `cleonos_sys_fd_dup()`
- `cleonos_sys_dl_open()` / `cleonos_sys_dl_close()` / `cleonos_sys_dl_sym()`
- `cleonos_sys_exec_pathv_io()`
- `cleonos_sys_fb_info()` / `cleonos_sys_fb_blit()` / `cleonos_sys_fb_clear()`
- `cleonos_sys_kernel_version()`
## 6. 开发注意事项 ## 6. 开发注意事项
@@ -639,6 +706,18 @@ u64 cleonos_syscall(u64 id, u64 arg0, u64 arg1, u64 arg2);
## 7. Wine 兼容说明 ## 7. Wine 兼容说明
- `wine/cleonos_wine_lib/runner.py` 目前以 syscall `0..67` 为主;`68..76`stats/fd需同步适配后才能完整覆盖 - `wine/cleonos_wine_lib/runner.py` 当前已覆盖到 `0..84`(含 `DL_*``FB_*``KERNEL_VERSION`
- `DL_*``77..79`)在 Wine 中为“可运行兼容”实现:
- `DL_OPEN`:加载 guest ELF 到当前 Unicorn 地址空间,返回稳定 `handle`,并做引用计数。
- `DL_SYM`:解析 ELF `SYMTAB/DYNSYM` 并返回 guest 可调用地址。
- `DL_CLOSE`:引用计数归零后释放句柄。
- `DL_*` 兼容限制:未实现完整动态链接器语义(例如完整重定位/依赖库链),但对 CLeonOS 现有用户态库调用场景可工作。
- framebuffer syscall`81..83`)在 Wine 中已实现兼容:
- `FB_INFO` 返回 framebuffer 参数(默认 `1280x800x32`,可用环境变量 `CLEONOS_WINE_FB_WIDTH/HEIGHT` 调整)。
- `FB_BLIT` 实现内核同类参数校验并支持 `scale>=1` 绘制。
- 配合 Wine 参数 `--fb-window` 可将 framebuffer 实时显示到主机窗口pygame 后端);未启用时保持内存缓冲模式。
- `FB_CLEAR` 支持清屏颜色写入。
- `KERNEL_VERSION``84`)在 Wine 中返回内核版本字符串(当前默认 `1.0.0-alpha`)。
- Wine 在运行时崩溃场景下会生成与内核一致格式的“信号编码退出状态”,可通过 `WAITPID` 读取。 - Wine 在运行时崩溃场景下会生成与内核一致格式的“信号编码退出状态”,可通过 `WAITPID` 读取。
- Wine 当前音频 syscall 为占位实现:`AUDIO_AVAILABLE=0``AUDIO_PLAY_TONE=0``AUDIO_STOP=1` - Wine 当前音频 syscall 为占位实现:`AUDIO_AVAILABLE=0``AUDIO_PLAY_TONE=0``AUDIO_STOP=1`
- Wine 版本号策略固定为 `85.0.0-wine``85` = 当前实现 syscall 数量,后续保持不变)。

BIN
ramdisk/1/1.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

BIN
ramdisk/doom1.wad Normal file

Binary file not shown.

View File

@@ -13,7 +13,7 @@ CLeonOS-Wine 现在改为自研运行器:基于 Python + Unicorn直接运
- `wine/cleonos_wine_lib/input_pump.py`:主机键盘输入线程 - `wine/cleonos_wine_lib/input_pump.py`:主机键盘输入线程
- `wine/cleonos_wine_lib/constants.py`:常量与 syscall ID - `wine/cleonos_wine_lib/constants.py`:常量与 syscall ID
- `wine/cleonos_wine_lib/platform.py`Unicorn 导入与平台适配 - `wine/cleonos_wine_lib/platform.py`Unicorn 导入与平台适配
- `wine/requirements.txt`Python 依赖Unicorn - `wine/requirements.txt`Python 依赖Unicorn + pygame
## 安装 ## 安装
@@ -26,6 +26,7 @@ pip install -r wine/requirements.txt
```bash ```bash
python wine/cleonos_wine.py /hello.elf --rootfs build/x86_64/ramdisk_root python wine/cleonos_wine.py /hello.elf --rootfs build/x86_64/ramdisk_root
python wine/cleonos_wine.py /shell/shell.elf --rootfs build/x86_64/ramdisk_root python wine/cleonos_wine.py /shell/shell.elf --rootfs build/x86_64/ramdisk_root
python wine/cleonos_wine.py /shell/qrcode.elf --rootfs build/x86_64/ramdisk_root --fb-window -- --ecc H "hello wine"
``` ```
也支持直接传宿主路径: 也支持直接传宿主路径:
@@ -37,7 +38,7 @@ python wine/cleonos_wine.py build/x86_64/ramdisk_root/shell/shell.elf --rootfs b
## 支持 ## 支持
- ELF64 (x86_64) PT_LOAD 段装载 - ELF64 (x86_64) PT_LOAD 段装载
- CLeonOS `int 0x80` syscall 0..80(含 `FD_*``PROC_*``STATS_*``EXEC_PATHV_IO` - CLeonOS `int 0x80` syscall 0..84(含 `FD_*``DL_*``FB_*``PROC_*``STATS_*``EXEC_PATHV_IO``KERNEL_VERSION`
- TTY 输出与键盘输入队列 - TTY 输出与键盘输入队列
- rootfs 文件/目录访问(`FS_*` - rootfs 文件/目录访问(`FS_*`
- `/temp` 写入限制(`FS_MKDIR/WRITE/APPEND/REMOVE` - `/temp` 写入限制(`FS_MKDIR/WRITE/APPEND/REMOVE`
@@ -48,11 +49,26 @@ python wine/cleonos_wine.py build/x86_64/ramdisk_root/shell/shell.elf --rootfs b
- 进程枚举与快照(`PROC_COUNT/PROC_PID_AT/PROC_SNAPSHOT/PROC_KILL` - 进程枚举与快照(`PROC_COUNT/PROC_PID_AT/PROC_SNAPSHOT/PROC_KILL`
- syscall 统计(`STATS_TOTAL/STATS_ID_COUNT/STATS_RECENT_*` - syscall 统计(`STATS_TOTAL/STATS_ID_COUNT/STATS_RECENT_*`
- 文件描述符(`FD_OPEN/FD_READ/FD_WRITE/FD_CLOSE/FD_DUP` - 文件描述符(`FD_OPEN/FD_READ/FD_WRITE/FD_CLOSE/FD_DUP`
- 动态库兼容加载(`DL_OPEN/DL_CLOSE/DL_SYM`,基于 ELF 符号解析)
- framebuffer 兼容(`FB_INFO/FB_BLIT/FB_CLEAR`,支持内存缓冲与窗口显示)
- 内核版本查询(`KERNEL_VERSION`
- 异常退出状态编码与故障元信息(`PROC_LAST_SIGNAL/PROC_FAULT_*` - 异常退出状态编码与故障元信息(`PROC_LAST_SIGNAL/PROC_FAULT_*`
## 版本策略
- CLeonOS-Wine 版本号固定为:`85.0.0-wine`
- 该值来源于“当前实现 syscall 数量 = 850..84)”,按项目约定后续不再变更
## 参数 ## 参数
- `--no-kbd`:关闭输入线程 - `--no-kbd`:关闭输入线程
- `--fb-window`:启用 framebuffer 窗口显示pygame
- `--fb-scale N`:窗口缩放倍数(默认 `2`
- `--fb-max-fps N`:窗口刷新上限(默认 `60`
- `--fb-hold-ms N`:程序退出后窗口保留毫秒数(默认 `2500`,静态图更容易看清)
- `--argv-line "..."`:直接指定 guest 参数行(等价于 shell 参数字符串)
- `--cwd PATH`:写入命令上下文中的工作目录(默认 `/`
- `--` 之后内容:作为 guest argv 透传(推荐)
- `--max-exec-depth N`:设置 exec 嵌套深度上限 - `--max-exec-depth N`:设置 exec 嵌套深度上限
- `--verbose`:打印更多日志 - `--verbose`:打印更多日志

View File

@@ -1,18 +1,63 @@
from __future__ import annotations from __future__ import annotations
import argparse import argparse
import shlex
import sys import sys
from pathlib import Path
from typing import List
from .constants import DEFAULT_MAX_EXEC_DEPTH from .constants import DEFAULT_MAX_EXEC_DEPTH
from .runner import CLeonOSWineNative, resolve_elf_target, resolve_rootfs from .runner import CLeonOSWineNative, resolve_elf_target, resolve_rootfs
from .state import SharedKernelState from .state import SharedKernelState
def _encode_cstr(text: str, size: int) -> bytes:
if size <= 0:
return b""
data = text.encode("utf-8", errors="replace")
if len(data) >= size:
data = data[: size - 1]
return data + (b"\x00" * (size - len(data)))
def _normalize_guest_cwd(cwd: str) -> str:
value = (cwd or "").strip().replace("\\", "/")
if not value:
return "/"
if not value.startswith("/"):
value = "/" + value
return value
def _write_command_context(rootfs: Path, guest_path: str, guest_args: List[str], cwd: str) -> None:
name = Path(guest_path).name
cmd = name[:-4] if name.lower().endswith(".elf") else name
arg = " ".join(guest_args)
ctx_payload = b"".join(
(
_encode_cstr(cmd, 32),
_encode_cstr(arg, 160),
_encode_cstr(_normalize_guest_cwd(cwd), 192),
)
)
ctx_path = rootfs / "temp" / ".ush_cmd_ctx.bin"
ctx_path.parent.mkdir(parents=True, exist_ok=True)
ctx_path.write_bytes(ctx_payload)
def parse_args() -> argparse.Namespace: def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(description="CLeonOS-Wine: run CLeonOS ELF with Unicorn.") parser = argparse.ArgumentParser(description="CLeonOS-Wine: run CLeonOS ELF with Unicorn.")
parser.add_argument("elf", help="Target ELF path. Supports /guest/path or host file path.") parser.add_argument("elf", help="Target ELF path. Supports /guest/path or host file path.")
parser.add_argument("--rootfs", help="Rootfs directory (default: build/x86_64/ramdisk_root).") parser.add_argument("--rootfs", help="Rootfs directory (default: build/x86_64/ramdisk_root).")
parser.add_argument("--no-kbd", action="store_true", help="Disable host keyboard input pump.") parser.add_argument("--no-kbd", action="store_true", help="Disable host keyboard input pump.")
parser.add_argument("--fb-window", action="store_true", help="Enable host framebuffer window (pygame backend).")
parser.add_argument("--fb-scale", type=int, default=2, help="Framebuffer window scale factor (default: 2).")
parser.add_argument("--fb-max-fps", type=int, default=60, help="Framebuffer present FPS limit (default: 60).")
parser.add_argument("--fb-hold-ms", type=int, default=2500, help="Keep fb window visible after app exits (ms).")
parser.add_argument("--argv-line", default="", help="Guest argv as one line (whitespace-separated).")
parser.add_argument("--cwd", default="/", help="Guest cwd for command-context apps.")
parser.add_argument("guest_args", nargs="*", help="Guest args (for dash-prefixed args use '--').")
parser.add_argument("--max-exec-depth", type=int, default=DEFAULT_MAX_EXEC_DEPTH, help="Nested exec depth guard.") parser.add_argument("--max-exec-depth", type=int, default=DEFAULT_MAX_EXEC_DEPTH, help="Nested exec depth guard.")
parser.add_argument("--verbose", action="store_true", help="Enable verbose runner output.") parser.add_argument("--verbose", action="store_true", help="Enable verbose runner output.")
return parser.parse_args() return parser.parse_args()
@@ -20,6 +65,8 @@ def parse_args() -> argparse.Namespace:
def main() -> int: def main() -> int:
args = parse_args() args = parse_args()
guest_args = list(args.guest_args or [])
argv_items: List[str]
try: try:
rootfs = resolve_rootfs(args.rootfs) rootfs = resolve_rootfs(args.rootfs)
@@ -28,6 +75,24 @@ def main() -> int:
print(f"[WINE][ERROR] {exc}", file=sys.stderr) print(f"[WINE][ERROR] {exc}", file=sys.stderr)
return 2 return 2
if len(guest_args) > 0 and guest_args[0] == "--":
guest_args = guest_args[1:]
if (args.argv_line or "").strip():
try:
guest_args = shlex.split(args.argv_line)
except Exception:
guest_args = (args.argv_line or "").split()
argv_items = [guest_path]
argv_items.extend(guest_args)
if guest_args:
try:
_write_command_context(rootfs, guest_path, guest_args, args.cwd)
except Exception as exc:
print(f"[WINE][WARN] failed to write command context: {exc}", file=sys.stderr)
if args.verbose: if args.verbose:
print("[WINE] backend=unicorn", file=sys.stderr) print("[WINE] backend=unicorn", file=sys.stderr)
print(f"[WINE] rootfs={rootfs}", file=sys.stderr) print(f"[WINE] rootfs={rootfs}", file=sys.stderr)
@@ -44,6 +109,11 @@ def main() -> int:
no_kbd=args.no_kbd, no_kbd=args.no_kbd,
verbose=args.verbose, verbose=args.verbose,
top_level=True, top_level=True,
fb_window=args.fb_window,
fb_scale=max(1, args.fb_scale),
fb_max_fps=max(1, args.fb_max_fps),
fb_hold_ms=max(0, args.fb_hold_ms),
argv_items=argv_items,
) )
ret = runner.run() ret = runner.run()
if ret is None: if ret is None:
@@ -51,4 +121,4 @@ def main() -> int:
if args.verbose: if args.verbose:
print(f"\n[WINE] exit=0x{ret:016X}", file=sys.stderr) print(f"\n[WINE] exit=0x{ret:016X}", file=sys.stderr)
return int(ret & 0xFF) return int(ret & 0xFF)

View File

@@ -7,6 +7,12 @@ MAX_IO_READ = 1 << 20
DEFAULT_MAX_EXEC_DEPTH = 6 DEFAULT_MAX_EXEC_DEPTH = 6
FS_NAME_MAX = 96 FS_NAME_MAX = 96
CLKS_VERSION_STRING = "1.0.0-alpha"
CLEONOS_VERSION_STRING = "1.0.0-alpha"
WINE_IMPLEMENTED_SYSCALL_COUNT = 85
# Frozen policy: this version string must not change in future updates.
CLEONOS_WINE_VERSION_STRING = "85.0.0-wine"
# CLeonOS syscall IDs from cleonos/c/include/cleonos_syscall.h # CLeonOS syscall IDs from cleonos/c/include/cleonos_syscall.h
SYS_LOG_WRITE = 0 SYS_LOG_WRITE = 0
SYS_TIMER_TICKS = 1 SYS_TIMER_TICKS = 1
@@ -89,6 +95,10 @@ SYS_DL_OPEN = 77
SYS_DL_CLOSE = 78 SYS_DL_CLOSE = 78
SYS_DL_SYM = 79 SYS_DL_SYM = 79
SYS_EXEC_PATHV_IO = 80 SYS_EXEC_PATHV_IO = 80
SYS_FB_INFO = 81
SYS_FB_BLIT = 82
SYS_FB_CLEAR = 83
SYS_KERNEL_VERSION = 84
# proc states (from cleonos/c/include/cleonos_syscall.h) # proc states (from cleonos/c/include/cleonos_syscall.h)
PROC_STATE_UNUSED = 0 PROC_STATE_UNUSED = 0

View File

@@ -0,0 +1,143 @@
from __future__ import annotations
import sys
import time
from typing import Optional
from .state import SharedKernelState
CLEONOS_KEY_LEFT = 0x01
CLEONOS_KEY_RIGHT = 0x02
CLEONOS_KEY_UP = 0x03
CLEONOS_KEY_DOWN = 0x04
class FBWindow:
def __init__(self, pygame_mod, width: int, height: int, scale: int, max_fps: int, *, verbose: bool = False) -> None:
self._pygame = pygame_mod
self.width = int(width)
self.height = int(height)
self.scale = max(1, int(scale))
self._verbose = bool(verbose)
self._closed = False
self._last_present_ns = 0
self._frame_interval_ns = int(1_000_000_000 / max_fps) if int(max_fps) > 0 else 0
window_w = self.width * self.scale
window_h = self.height * self.scale
self._pygame.display.set_caption("CLeonOS Wine Framebuffer")
self._screen = self._pygame.display.set_mode((window_w, window_h))
@classmethod
def create(
cls,
width: int,
height: int,
scale: int,
max_fps: int,
*,
verbose: bool = False,
) -> Optional["FBWindow"]:
try:
import pygame # type: ignore
except Exception as exc:
print(f"[WINE][WARN] framebuffer window disabled: pygame import failed ({exc})", file=sys.stderr)
return None
try:
pygame.init()
pygame.display.init()
return cls(pygame, width, height, scale, max_fps, verbose=verbose)
except Exception as exc:
print(f"[WINE][WARN] framebuffer window disabled: unable to init display ({exc})", file=sys.stderr)
try:
pygame.quit()
except Exception:
pass
return None
def close(self) -> None:
if self._closed:
return
self._closed = True
try:
self._pygame.display.quit()
except Exception:
pass
try:
self._pygame.quit()
except Exception:
pass
def is_closed(self) -> bool:
return self._closed
def pump_input(self, state: SharedKernelState) -> None:
if self._closed:
return
try:
events = self._pygame.event.get()
except Exception:
self.close()
return
for event in events:
if event.type == self._pygame.QUIT:
self.close()
continue
if event.type != self._pygame.KEYDOWN:
continue
key = event.key
ch = 0
if key == self._pygame.K_LEFT:
ch = CLEONOS_KEY_LEFT
elif key == self._pygame.K_RIGHT:
ch = CLEONOS_KEY_RIGHT
elif key == self._pygame.K_UP:
ch = CLEONOS_KEY_UP
elif key == self._pygame.K_DOWN:
ch = CLEONOS_KEY_DOWN
elif key in (self._pygame.K_RETURN, self._pygame.K_KP_ENTER):
ch = ord("\n")
elif key == self._pygame.K_BACKSPACE:
ch = 8
elif key == self._pygame.K_ESCAPE:
ch = 27
elif key == self._pygame.K_TAB:
ch = ord("\t")
else:
text = getattr(event, "unicode", "")
if isinstance(text, str) and len(text) == 1:
code = ord(text)
if 32 <= code <= 126:
ch = code
if ch != 0:
state.push_key(ch)
def present(self, pixels_bgra: bytearray, *, force: bool = False) -> bool:
if self._closed:
return False
now_ns = time.monotonic_ns()
if not force and self._frame_interval_ns > 0 and (now_ns - self._last_present_ns) < self._frame_interval_ns:
return False
try:
src = self._pygame.image.frombuffer(pixels_bgra, (self.width, self.height), "BGRA")
if self.scale != 1:
src = self._pygame.transform.scale(src, (self.width * self.scale, self.height * self.scale))
self._screen.blit(src, (0, 0))
self._pygame.display.flip()
self._last_present_ns = now_ns
return True
except Exception:
self.close()
return False

View File

@@ -4,11 +4,12 @@ import os
import struct import struct
import sys import sys
import time import time
from dataclasses import dataclass from dataclasses import dataclass, field
from pathlib import Path from pathlib import Path
from typing import Dict, List, Optional, Tuple from typing import Dict, List, Optional, Tuple
from .constants import ( from .constants import (
CLKS_VERSION_STRING,
DEFAULT_MAX_EXEC_DEPTH, DEFAULT_MAX_EXEC_DEPTH,
FD_INHERIT, FD_INHERIT,
FS_NAME_MAX, FS_NAME_MAX,
@@ -48,6 +49,9 @@ from .constants import (
SYS_FD_OPEN, SYS_FD_OPEN,
SYS_FD_READ, SYS_FD_READ,
SYS_FD_WRITE, SYS_FD_WRITE,
SYS_FB_BLIT,
SYS_FB_CLEAR,
SYS_FB_INFO,
SYS_FS_APPEND, SYS_FS_APPEND,
SYS_FS_CHILD_COUNT, SYS_FS_CHILD_COUNT,
SYS_FS_GET_CHILD_NAME, SYS_FS_GET_CHILD_NAME,
@@ -59,6 +63,7 @@ from .constants import (
SYS_FS_STAT_TYPE, SYS_FS_STAT_TYPE,
SYS_FS_WRITE, SYS_FS_WRITE,
SYS_GETPID, SYS_GETPID,
SYS_KERNEL_VERSION,
SYS_KBD_BUFFERED, SYS_KBD_BUFFERED,
SYS_KBD_DROPPED, SYS_KBD_DROPPED,
SYS_KBD_GET_CHAR, SYS_KBD_GET_CHAR,
@@ -112,6 +117,7 @@ from .constants import (
u64, u64,
u64_neg1, u64_neg1,
) )
from .fb_window import FBWindow
from .input_pump import InputPump from .input_pump import InputPump
from .platform import ( from .platform import (
Uc, Uc,
@@ -165,6 +171,19 @@ class FDEntry:
tty_index: int = 0 tty_index: int = 0
@dataclass
class DLImage:
handle: int
guest_path: str
host_path: str
owner_pid: int
ref_count: int
map_start: int
map_end: int
load_bias: int
symbols: Dict[str, int] = field(default_factory=dict)
EXEC_PATH_MAX = 192 EXEC_PATH_MAX = 192
EXEC_ARG_LINE_MAX = 256 EXEC_ARG_LINE_MAX = 256
EXEC_ENV_LINE_MAX = 512 EXEC_ENV_LINE_MAX = 512
@@ -174,6 +193,14 @@ EXEC_ITEM_MAX = 128
EXEC_STATUS_SIGNAL_FLAG = 1 << 63 EXEC_STATUS_SIGNAL_FLAG = 1 << 63
PROC_PATH_MAX = 192 PROC_PATH_MAX = 192
FD_MAX = 64 FD_MAX = 64
DL_MAX_NAME = 192
DL_MAX_SYMBOL = 128
DL_BASE_START = 0x0000000100000000
DL_BASE_GAP = 0x0000000000100000
FB_DEFAULT_WIDTH = 1280
FB_DEFAULT_HEIGHT = 800
FB_MAX_DIM = 4096
FB_MAX_UPLOAD_BYTES = 64 * 1024 * 1024
class CLeonOSWineNative: class CLeonOSWineNative:
@@ -194,6 +221,10 @@ class CLeonOSWineNative:
argv_items: Optional[List[str]] = None, argv_items: Optional[List[str]] = None,
env_items: Optional[List[str]] = None, env_items: Optional[List[str]] = None,
inherited_fds: Optional[Dict[int, FDEntry]] = None, inherited_fds: Optional[Dict[int, FDEntry]] = None,
fb_window: bool = False,
fb_scale: int = 2,
fb_max_fps: int = 60,
fb_hold_ms: int = 2500,
) -> None: ) -> None:
self.elf_path = elf_path self.elf_path = elf_path
self.rootfs = rootfs self.rootfs = rootfs
@@ -206,6 +237,10 @@ class CLeonOSWineNative:
self.top_level = top_level self.top_level = top_level
self.pid = int(pid) self.pid = int(pid)
self.ppid = int(ppid) self.ppid = int(ppid)
self.fb_window = bool(fb_window)
self.fb_scale = max(1, int(fb_scale))
self.fb_max_fps = max(1, int(fb_max_fps))
self.fb_hold_ms = max(0, int(fb_hold_ms))
self.argv_items = list(argv_items) if argv_items is not None else [] self.argv_items = list(argv_items) if argv_items is not None else []
self.env_items = list(env_items) if env_items is not None else [] self.env_items = list(env_items) if env_items is not None else []
self._exit_requested = False self._exit_requested = False
@@ -222,6 +257,20 @@ class CLeonOSWineNative:
self._tty_index = int(self.state.tty_active) self._tty_index = int(self.state.tty_active)
self._fds: Dict[int, FDEntry] = {} self._fds: Dict[int, FDEntry] = {}
self._fd_inherited = inherited_fds if inherited_fds is not None else {} self._fd_inherited = inherited_fds if inherited_fds is not None else {}
self._dl_images: Dict[int, DLImage] = {}
self._dl_path_to_handle: Dict[str, int] = {}
self._dl_next_handle = 1
self._dl_next_base = DL_BASE_START
self._fb_width = self._bounded_env_int("CLEONOS_WINE_FB_WIDTH", FB_DEFAULT_WIDTH, 64, FB_MAX_DIM)
self._fb_height = self._bounded_env_int("CLEONOS_WINE_FB_HEIGHT", FB_DEFAULT_HEIGHT, 64, FB_MAX_DIM)
self._fb_bpp = 32
self._fb_pitch = self._fb_width * 4
self._fb_pixels = bytearray(self._fb_pitch * self._fb_height)
self._fb_window: Optional[FBWindow] = None
self._fb_window_failed = False
self._fb_dirty = False
self._fb_presented_once = False
default_path = self._normalize_guest_path(self.guest_path_hint or f"/{self.elf_path.name}") default_path = self._normalize_guest_path(self.guest_path_hint or f"/{self.elf_path.name}")
self.argv_items, self.env_items = self._prepare_exec_items(default_path, self.argv_items, self.env_items) self.argv_items, self.env_items = self._prepare_exec_items(default_path, self.argv_items, self.env_items)
@@ -250,6 +299,89 @@ class CLeonOSWineNative:
mode = cls._fd_access_mode(flags) mode = cls._fd_access_mode(flags)
return mode in (O_WRONLY, O_RDWR) return mode in (O_WRONLY, O_RDWR)
@staticmethod
def _bounded_env_int(name: str, default: int, min_value: int, max_value: int) -> int:
raw = os.environ.get(name)
value = default
if raw is not None:
try:
value = int(raw.strip(), 10)
except Exception:
value = default
if value < min_value:
value = min_value
if value > max_value:
value = max_value
return value
def _ensure_fb_window(self) -> None:
if not self.fb_window:
return
if self._fb_window is not None or self._fb_window_failed:
return
self._fb_window = FBWindow.create(
self._fb_width,
self._fb_height,
self.fb_scale,
self.fb_max_fps,
verbose=self.verbose,
)
if self._fb_window is None:
self._fb_window_failed = True
def _fb_poll_window(self) -> None:
self._ensure_fb_window()
if self._fb_window is not None:
self._fb_window.pump_input(self.state)
if self._fb_window.is_closed():
self._fb_window = None
def _fb_present(self, *, force: bool = False) -> None:
self._ensure_fb_window()
if self._fb_window is None:
return
self._fb_window.pump_input(self.state)
did_present = self._fb_window.present(self._fb_pixels, force=force)
if did_present:
self._fb_dirty = False
self._fb_presented_once = True
if self._fb_window.is_closed():
self._fb_window = None
def _fb_mark_dirty(self) -> None:
self._fb_dirty = True
self._fb_present(force=False)
def _fb_hold_after_exit(self) -> None:
end_ns: int
if self._fb_window is None:
return
if self.fb_hold_ms <= 0 or self._fb_presented_once is False:
return
end_ns = time.monotonic_ns() + (self.fb_hold_ms * 1_000_000)
while time.monotonic_ns() < end_ns:
if self._fb_window is None:
return
self._fb_window.pump_input(self.state)
if self._fb_window.is_closed():
self._fb_window = None
return
self._fb_window.present(self._fb_pixels, force=True)
time.sleep(0.016)
def _init_default_fds(self) -> None: def _init_default_fds(self) -> None:
self._fds = { self._fds = {
0: FDEntry(kind="tty", flags=O_RDONLY, offset=0, tty_index=self._tty_index), 0: FDEntry(kind="tty", flags=O_RDONLY, offset=0, tty_index=self._tty_index),
@@ -325,6 +457,8 @@ class CLeonOSWineNative:
self._install_hooks(uc) self._install_hooks(uc)
self._load_segments(uc) self._load_segments(uc)
self._prepare_stack_and_return(uc) self._prepare_stack_and_return(uc)
self._ensure_fb_window()
self._fb_present(force=True)
if self.top_level and not self.no_kbd: if self.top_level and not self.no_kbd:
self._input_pump = InputPump(self.state) self._input_pump = InputPump(self.state)
@@ -346,6 +480,11 @@ class CLeonOSWineNative:
finally: finally:
if self.top_level and self._input_pump is not None: if self.top_level and self._input_pump is not None:
self._input_pump.stop() self._input_pump.stop()
if self._fb_window is not None:
self._fb_hold_after_exit()
if self._fb_window is not None:
self._fb_window.close()
self._fb_window = None
if interrupted: if interrupted:
self.state.mark_exited(self.pid, u64_neg1()) self.state.mark_exited(self.pid, u64_neg1())
@@ -391,6 +530,8 @@ class CLeonOSWineNative:
self._reg_write(uc, UC_X86_REG_RAX, u64(ret)) self._reg_write(uc, UC_X86_REG_RAX, u64(ret))
def _dispatch_syscall(self, uc: Uc, sid: int, arg0: int, arg1: int, arg2: int) -> int: def _dispatch_syscall(self, uc: Uc, sid: int, arg0: int, arg1: int, arg2: int) -> int:
self._fb_poll_window()
if sid == SYS_LOG_WRITE: if sid == SYS_LOG_WRITE:
data = self._read_guest_bytes(uc, arg0, arg1) data = self._read_guest_bytes(uc, arg0, arg1)
text = data.decode("utf-8", errors="replace") text = data.decode("utf-8", errors="replace")
@@ -563,11 +704,19 @@ class CLeonOSWineNative:
if sid == SYS_FD_DUP: if sid == SYS_FD_DUP:
return self._fd_dup(arg0) return self._fd_dup(arg0)
if sid == SYS_DL_OPEN: if sid == SYS_DL_OPEN:
return u64_neg1() return self._dl_open(uc, arg0)
if sid == SYS_DL_CLOSE: if sid == SYS_DL_CLOSE:
return 0 return self._dl_close(arg0)
if sid == SYS_DL_SYM: if sid == SYS_DL_SYM:
return 0 return self._dl_sym(uc, arg0, arg1)
if sid == SYS_FB_INFO:
return self._fb_info(uc, arg0)
if sid == SYS_FB_BLIT:
return self._fb_blit(uc, arg0)
if sid == SYS_FB_CLEAR:
return self._fb_clear(arg0)
if sid == SYS_KERNEL_VERSION:
return self._kernel_version(uc, arg0, arg1)
return u64_neg1() return u64_neg1()
@@ -643,6 +792,12 @@ class CLeonOSWineNative:
return True return True
return False return False
def _range_overlaps_mapped(self, start: int, end: int) -> bool:
for ms, me in self._mapped_ranges:
if start < me and end > ms:
return True
return False
@staticmethod @staticmethod
def _reg_read(uc: Uc, reg: int) -> int: def _reg_read(uc: Uc, reg: int) -> int:
return int(uc.reg_read(reg)) return int(uc.reg_read(reg))
@@ -715,24 +870,23 @@ class CLeonOSWineNative:
return False return False
@staticmethod @staticmethod
def _parse_elf(path: Path) -> ELFImage: def _parse_elf_image_from_blob(data: bytes, *, require_entry: bool) -> ELFImage:
data = path.read_bytes()
if len(data) < 64: if len(data) < 64:
raise RuntimeError(f"ELF too small: {path}") raise RuntimeError("ELF too small")
if data[0:4] != b"\x7fELF": if data[0:4] != b"\x7fELF":
raise RuntimeError(f"invalid ELF magic: {path}") raise RuntimeError("invalid ELF magic")
if data[4] != 2 or data[5] != 1: if data[4] != 2 or data[5] != 1:
raise RuntimeError(f"unsupported ELF class/endianness: {path}") raise RuntimeError("unsupported ELF class/endianness")
entry = struct.unpack_from("<Q", data, 0x18)[0] entry = struct.unpack_from("<Q", data, 0x18)[0]
phoff = struct.unpack_from("<Q", data, 0x20)[0] phoff = struct.unpack_from("<Q", data, 0x20)[0]
phentsize = struct.unpack_from("<H", data, 0x36)[0] phentsize = struct.unpack_from("<H", data, 0x36)[0]
phnum = struct.unpack_from("<H", data, 0x38)[0] phnum = struct.unpack_from("<H", data, 0x38)[0]
if entry == 0: if require_entry and entry == 0:
raise RuntimeError(f"ELF entry is 0: {path}") raise RuntimeError("ELF entry is 0")
if phentsize == 0 or phnum == 0: if phentsize == 0 or phnum == 0:
raise RuntimeError(f"ELF has no program headers: {path}") raise RuntimeError("ELF has no program headers")
segments: List[ELFSegment] = [] segments: List[ELFSegment] = []
for i in range(phnum): for i in range(phnum):
@@ -760,10 +914,18 @@ class CLeonOSWineNative:
segments.append(ELFSegment(vaddr=int(p_vaddr), memsz=int(p_memsz), flags=int(p_flags), data=seg_data)) segments.append(ELFSegment(vaddr=int(p_vaddr), memsz=int(p_memsz), flags=int(p_flags), data=seg_data))
if not segments: if not segments:
raise RuntimeError(f"ELF has no PT_LOAD segments: {path}") raise RuntimeError("ELF has no PT_LOAD segments")
return ELFImage(entry=int(entry), segments=segments) return ELFImage(entry=int(entry), segments=segments)
@staticmethod
def _parse_elf(path: Path) -> ELFImage:
data = path.read_bytes()
try:
return CLeonOSWineNative._parse_elf_image_from_blob(data, require_entry=True)
except RuntimeError as exc:
raise RuntimeError(f"{exc}: {path}") from exc
def _fs_node_count(self) -> int: def _fs_node_count(self) -> int:
count = 1 count = 1
for _root, dirs, files in os.walk(self.rootfs): for _root, dirs, files in os.walk(self.rootfs):
@@ -1087,6 +1249,10 @@ class CLeonOSWineNative:
argv_items=argv_items, argv_items=argv_items,
env_items=env_items, env_items=env_items,
inherited_fds=child_stdio, inherited_fds=child_stdio,
fb_window=self.fb_window,
fb_scale=self.fb_scale,
fb_max_fps=self.fb_max_fps,
fb_hold_ms=self.fb_hold_ms,
) )
child_ret = child.run() child_ret = child.run()
@@ -1445,6 +1611,420 @@ class CLeonOSWineNative:
self._fds[slot] = self._clone_fd_entry(src) self._fds[slot] = self._clone_fd_entry(src)
return slot return slot
def _dl_alloc_handle(self) -> int:
handle = int(u64(self._dl_next_handle))
if handle == 0:
handle = 1
while handle in self._dl_images or handle == 0:
handle = int(u64(handle + 1))
if handle == 0:
handle = 1
self._dl_next_handle = int(u64(handle + 1))
if self._dl_next_handle == 0:
self._dl_next_handle = 1
return handle
def _dl_pick_base(self, min_vaddr: int, max_vaddr: int) -> Tuple[int, int, int]:
old_base = page_floor(min_vaddr)
span = page_ceil(max_vaddr - old_base)
candidate = page_ceil(self._dl_next_base)
retries = 0
if span <= 0:
return 0, 0, 0
while retries < 1024:
start = candidate
end = start + span
if not self._range_overlaps_mapped(start, end):
self._dl_next_base = end + DL_BASE_GAP
return start, end, start - old_base
candidate = end + DL_BASE_GAP
retries += 1
return 0, 0, 0
@staticmethod
def _dl_rebase_non_exec_segment(data: bytes, old_base: int, old_end: int, delta: int) -> bytes:
if not data or delta == 0:
return data
patched = bytearray(data)
limit = len(patched) - (len(patched) % 8)
for off in range(0, limit, 8):
value = struct.unpack_from("<Q", patched, off)[0]
if old_base <= value < old_end:
struct.pack_into("<Q", patched, off, u64(value + delta))
return bytes(patched)
@staticmethod
def _read_elf_cstring(blob: bytes, start: int, end: int) -> str:
if start < 0 or end <= start or start >= len(blob):
return ""
limit = min(end, len(blob))
cur = start
while cur < limit and blob[cur] != 0:
cur += 1
if cur <= start:
return ""
return blob[start:cur].decode("utf-8", errors="ignore")
@classmethod
def _dl_extract_symbols(cls, blob: bytes, load_bias: int) -> Dict[str, int]:
symbols: Dict[str, int] = {}
sections: List[Tuple[int, int, int, int, int, int, int, int, int, int]] = []
if len(blob) < 0x40:
return symbols
try:
shoff = struct.unpack_from("<Q", blob, 0x28)[0]
shentsize = struct.unpack_from("<H", blob, 0x3A)[0]
shnum = struct.unpack_from("<H", blob, 0x3C)[0]
except struct.error:
return symbols
if shoff == 0 or shentsize < 64 or shnum == 0:
return symbols
if shoff + (shentsize * shnum) > len(blob):
return symbols
for idx in range(shnum):
off = shoff + (idx * shentsize)
try:
sh = struct.unpack_from("<IIQQQQIIQQ", blob, off)
except struct.error:
return symbols
sections.append(sh)
for sh in sections:
sh_type = int(sh[1])
sh_offset = int(sh[4])
sh_size = int(sh[5])
sh_link = int(sh[6])
sh_entsize = int(sh[9])
if sh_type not in (2, 11):
continue
if sh_link < 0 or sh_link >= len(sections):
continue
if sh_entsize < 24:
sh_entsize = 24
if sh_offset < 0 or sh_size <= 0 or sh_offset >= len(blob):
continue
sym_end = min(len(blob), sh_offset + sh_size)
if sym_end <= sh_offset:
continue
strtab = sections[sh_link]
str_off = int(strtab[4])
str_size = int(strtab[5])
if str_size <= 0 or str_off < 0 or str_off >= len(blob):
continue
str_end = min(len(blob), str_off + str_size)
count = (sym_end - sh_offset) // sh_entsize
for i in range(count):
ent_off = sh_offset + (i * sh_entsize)
if ent_off + 24 > len(blob):
break
try:
st_name, _st_info, _st_other, st_shndx, st_value, _st_size = struct.unpack_from(
"<IBBHQQ", blob, ent_off
)
except struct.error:
break
if st_name == 0 or st_shndx == 0 or st_value == 0:
continue
name = cls._read_elf_cstring(blob, str_off + st_name, str_end)
if not name:
continue
addr = int(u64(st_value + load_bias))
if addr == 0:
continue
if name not in symbols:
symbols[name] = addr
return symbols
def _dl_open(self, uc: Uc, path_ptr: int) -> int:
guest_path = self._normalize_guest_path(self._read_guest_cstring(uc, path_ptr, DL_MAX_NAME))
cached_handle = self._dl_path_to_handle.get(guest_path)
host_path: Optional[Path]
file_blob: bytes
image: ELFImage
e_type: int
min_vaddr: int
max_vaddr: int
map_start: int
map_end: int
load_bias: int
handle: int
owner_pid: int
if not guest_path.startswith("/") or guest_path == "/":
return u64_neg1()
if len(guest_path.encode("utf-8", errors="replace")) >= DL_MAX_NAME:
return u64_neg1()
if cached_handle is not None:
cached = self._dl_images.get(cached_handle)
if cached is not None:
cached.ref_count += 1
return cached.handle
host_path = self._guest_to_host(guest_path, must_exist=True)
if host_path is None or not host_path.is_file():
return u64_neg1()
try:
file_blob = host_path.read_bytes()
image = self._parse_elf_image_from_blob(file_blob, require_entry=False)
e_type = struct.unpack_from("<H", file_blob, 0x10)[0]
except Exception:
return u64_neg1()
min_vaddr = min(seg.vaddr for seg in image.segments)
max_vaddr = max(seg.vaddr + seg.memsz for seg in image.segments)
if max_vaddr <= min_vaddr:
return u64_neg1()
map_start, map_end, load_bias = self._dl_pick_base(min_vaddr, max_vaddr)
if map_start == 0 or map_end <= map_start:
return u64_neg1()
try:
for seg in image.segments:
seg_start = page_floor(seg.vaddr + load_bias)
seg_end = page_ceil(seg.vaddr + load_bias + seg.memsz)
self._map_region(uc, seg_start, seg_end - seg_start, UC_PROT_ALL)
for seg in image.segments:
payload = seg.data
if e_type == 2 and (seg.flags & 0x1) == 0 and load_bias != 0 and payload:
payload = self._dl_rebase_non_exec_segment(payload, min_vaddr, max_vaddr, load_bias)
if payload:
self._mem_write(uc, seg.vaddr + load_bias, payload)
for seg in image.segments:
seg_start = page_floor(seg.vaddr + load_bias)
seg_end = page_ceil(seg.vaddr + load_bias + seg.memsz)
perms = 0
if seg.flags & 0x4:
perms |= UC_PROT_READ
if seg.flags & 0x2:
perms |= UC_PROT_WRITE
if seg.flags & 0x1:
perms |= UC_PROT_EXEC
if perms == 0:
perms = UC_PROT_READ
try:
uc.mem_protect(seg_start, seg_end - seg_start, perms)
except Exception:
pass
except Exception:
return u64_neg1()
handle = self._dl_alloc_handle()
owner_pid = self.state.get_current_pid()
self._dl_images[handle] = DLImage(
handle=handle,
guest_path=guest_path,
host_path=str(host_path),
owner_pid=owner_pid,
ref_count=1,
map_start=map_start,
map_end=map_end,
load_bias=load_bias,
symbols=self._dl_extract_symbols(file_blob, load_bias),
)
self._dl_path_to_handle[guest_path] = handle
return handle
def _dl_close(self, handle: int) -> int:
key = int(handle)
image = self._dl_images.get(key)
if key == 0 or image is None:
return u64_neg1()
if image.ref_count > 1:
image.ref_count -= 1
return 0
del self._dl_images[key]
if self._dl_path_to_handle.get(image.guest_path) == key:
del self._dl_path_to_handle[image.guest_path]
return 0
def _dl_sym(self, uc: Uc, handle: int, symbol_ptr: int) -> int:
symbol = self._read_guest_cstring(uc, symbol_ptr, DL_MAX_SYMBOL)
image = self._dl_images.get(int(handle))
addr: Optional[int]
if image is None or not symbol:
return 0
addr = image.symbols.get(symbol)
if addr is None and not symbol.startswith("_"):
addr = image.symbols.get(f"_{symbol}")
return int(u64(addr)) if addr is not None else 0
def _kernel_version(self, uc: Uc, out_ptr: int, out_size: int) -> int:
if out_ptr == 0 or out_size <= 0:
return 0
max_copy = int(out_size) - 1
if max_copy < 0:
return 0
payload = CLKS_VERSION_STRING.encode("utf-8", errors="replace")
if len(payload) > max_copy:
payload = payload[:max_copy]
if not self._write_guest_bytes(uc, int(out_ptr), payload + b"\x00"):
return 0
return len(payload)
def _fb_info(self, uc: Uc, out_ptr: int) -> int:
if out_ptr == 0:
return 0
self._ensure_fb_window()
payload = struct.pack(
"<QQQQ",
u64(self._fb_width),
u64(self._fb_height),
u64(self._fb_pitch),
u64(self._fb_bpp),
)
ok = 1 if self._write_guest_bytes(uc, out_ptr, payload) else 0
if ok == 1:
self._fb_present(force=True)
return ok
def _fb_clear(self, rgb: int) -> int:
if len(self._fb_pixels) == 0:
return 0
pixel = struct.pack("<I", int(u64(rgb) & 0xFFFFFFFF))
self._fb_pixels[:] = pixel * (len(self._fb_pixels) // 4)
self._fb_mark_dirty()
return 1
def _fb_blit(self, uc: Uc, req_ptr: int) -> int:
req_blob = self._read_guest_bytes_exact(uc, int(req_ptr), 56)
pixels_ptr: int
src_width: int
src_height: int
src_pitch_bytes: int
dst_x: int
dst_y: int
scale: int
total_src_bytes: int
src_blob: Optional[bytes]
max_src_w: int
max_src_h: int
copy_w: int
copy_h: int
if req_ptr == 0 or req_blob is None or len(req_blob) != 56:
return 0
pixels_ptr, src_width, src_height, src_pitch_bytes, dst_x, dst_y, scale = struct.unpack("<QQQQQQQ", req_blob)
if pixels_ptr == 0 or src_width == 0 or src_height == 0 or scale == 0:
return 0
if src_width > 4096 or src_height > 4096 or scale > 8:
return 0
if src_pitch_bytes == 0:
src_pitch_bytes = src_width * 4
if src_pitch_bytes < (src_width * 4):
return 0
if src_height > (u64_neg1() // src_pitch_bytes):
return 0
if dst_x >= self._fb_width or dst_y >= self._fb_height:
return 0
total_src_bytes = src_pitch_bytes * src_height
if total_src_bytes == 0 or total_src_bytes > FB_MAX_UPLOAD_BYTES:
return 0
src_blob = self._read_guest_bytes_exact(uc, pixels_ptr, total_src_bytes)
if src_blob is None:
return 0
max_src_w = (self._fb_width - dst_x + scale - 1) // scale
max_src_h = (self._fb_height - dst_y + scale - 1) // scale
copy_w = min(src_width, max_src_w)
copy_h = min(src_height, max_src_h)
if copy_w <= 0 or copy_h <= 0:
return 0
if scale == 1:
row_bytes = copy_w * 4
for y in range(copy_h):
src_off = y * src_pitch_bytes
dst_off = ((dst_y + y) * self._fb_width + dst_x) * 4
self._fb_pixels[dst_off : dst_off + row_bytes] = src_blob[src_off : src_off + row_bytes]
else:
draw_row_pixels = min(self._fb_width - dst_x, copy_w * scale)
draw_row_bytes = draw_row_pixels * 4
for y in range(copy_h):
src_row_off = y * src_pitch_bytes
src_row = memoryview(src_blob)[src_row_off : src_row_off + (copy_w * 4)]
expanded = bytearray(copy_w * scale * 4)
write_off = 0
for x in range(copy_w):
pixel = bytes(src_row[x * 4 : (x + 1) * 4])
expanded[write_off : write_off + (scale * 4)] = pixel * scale
write_off += scale * 4
draw_y = dst_y + (y * scale)
repeat_h = min(scale, self._fb_height - draw_y)
row_data = expanded[:draw_row_bytes]
for sy in range(repeat_h):
dst_off = ((draw_y + sy) * self._fb_width + dst_x) * 4
self._fb_pixels[dst_off : dst_off + draw_row_bytes] = row_data
self._fb_mark_dirty()
return 1
@staticmethod @staticmethod
def _truncate_item_text(text: str, max_bytes: int = EXEC_ITEM_MAX) -> str: def _truncate_item_text(text: str, max_bytes: int = EXEC_ITEM_MAX) -> str:
if max_bytes <= 1: if max_bytes <= 1:

View File

@@ -1 +1,2 @@
unicorn>=2.0.1 unicorn>=2.0.1
pygame>=2.5.2