From acd272ee08590c657babfb6abf43aa5d2eea1fed Mon Sep 17 00:00:00 2001 From: = <=> Date: Mon, 27 Apr 2026 08:50:15 +0000 Subject: [PATCH] Created filereader --- blinky/project.json | 15 +++----- textfilereader/.gitignore | 2 ++ textfilereader/LICENSE | 0 textfilereader/README.md | 0 textfilereader/docs/.gitkeep | 0 textfilereader/lib/.gitkeep | 0 textfilereader/project.json | 45 +++++++++++++++++++++++ textfilereader/resources/.gitkeep | 0 textfilereader/scripts/.gitkeep | 0 textfilereader/src/.gitkeep | 0 textfilereader/src/main.c3 | 60 +++++++++++++++++++++++++++++++ textfilereader/test/.gitkeep | 0 12 files changed, 111 insertions(+), 11 deletions(-) create mode 100644 textfilereader/.gitignore create mode 100644 textfilereader/LICENSE create mode 100644 textfilereader/README.md create mode 100644 textfilereader/docs/.gitkeep create mode 100644 textfilereader/lib/.gitkeep create mode 100644 textfilereader/project.json create mode 100644 textfilereader/resources/.gitkeep create mode 100644 textfilereader/scripts/.gitkeep create mode 100644 textfilereader/src/.gitkeep create mode 100644 textfilereader/src/main.c3 create mode 100644 textfilereader/test/.gitkeep diff --git a/blinky/project.json b/blinky/project.json index cd20793..9daef9c 100644 --- a/blinky/project.json +++ b/blinky/project.json @@ -36,17 +36,10 @@ // and overrides of global settings here. }, "atmega328p": { - "type": "executable", - "triple": "avr-atmel-none", - "cpu": "atmega328p", - "linker-flags": [ - "-L/home/coder/bin/avr-toolchain/lib", - "-Tdata=0x800100", - "-mmcu=atmega328p" - ], - "c-include-dirs": [ - "/home/coder/bin/avr-toolchain/include" - ] + "type": "object-files", + "cpu": "atmega328p", + "use-stdlib": false, + "output": "build/blinky.o" } }, // Global settings. diff --git a/textfilereader/.gitignore b/textfilereader/.gitignore new file mode 100644 index 0000000..3c0160d --- /dev/null +++ b/textfilereader/.gitignore @@ -0,0 +1,2 @@ +build/ +out/ diff --git a/textfilereader/LICENSE b/textfilereader/LICENSE new file mode 100644 index 0000000..e69de29 diff --git a/textfilereader/README.md b/textfilereader/README.md new file mode 100644 index 0000000..e69de29 diff --git a/textfilereader/docs/.gitkeep b/textfilereader/docs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/textfilereader/lib/.gitkeep b/textfilereader/lib/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/textfilereader/project.json b/textfilereader/project.json new file mode 100644 index 0000000..eacb8ae --- /dev/null +++ b/textfilereader/project.json @@ -0,0 +1,45 @@ +{ + // Language version of C3. + "langrev": "1", + // Warnings used for all targets. + "warnings": [ "no-unused" ], + // Directories where C3 library files may be found. + "dependency-search-paths": [ "lib" ], + // Libraries to use for all targets. + "dependencies": [ ], + // Authors, optionally with email. + "authors": [ "Khwezi Mngoma " ], + // Version using semantic versioning. + "version": "0.1.0", + // Sources compiled for all targets. + "sources": [ "src/**" ], + // Test sources compiled for all targets. + "test-sources": [ "test/**" ], + // C sources if the project also compiles C sources + // relative to the project file. + // "c-sources": [ "csource/**" ], + // Include directories for C sources relative to the project file. + // "c-include-dirs": [ "csource/include" ], + // Build location, relative to project file. + "build-dir": "build", + // Output location, relative to project file. + "output": "build", + // Architecture and OS target. + // You can use 'c3c --list-targets' to list all valid targets. + // "target": "windows-x64", + // Targets. + "targets": { + "textfilereader": { + // Executable or library. + "type": "executable", + // Additional libraries, sources + // and overrides of global settings here. + } + }, + // Global settings. + // CPU name, used for optimizations in the LLVM backend. + "cpu": "generic", + // Optimization: "O0", "O1", "O2", "O3", "O4", "O5", "Os", "Oz". + "opt": "O0" + // See resources/examples/project_all_settings.json and 'c3c --list-project-properties' to see more properties. +} \ No newline at end of file diff --git a/textfilereader/resources/.gitkeep b/textfilereader/resources/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/textfilereader/scripts/.gitkeep b/textfilereader/scripts/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/textfilereader/src/.gitkeep b/textfilereader/src/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/textfilereader/src/main.c3 b/textfilereader/src/main.c3 new file mode 100644 index 0000000..cad3bf0 --- /dev/null +++ b/textfilereader/src/main.c3 @@ -0,0 +1,60 @@ +module textfilereader; + +import std::io; + +fn String? read_file(String filename) +{ + ulong? size = io::file::get_size(filename); + if (catch err = size) return err~; + + char[] buffer = mem::new_array(char, size); + + File? handle = io::file::open(filename, "r"); + + if (catch err = handle) + { + free(buffer); + + return err~; + } + + defer (void)handle.close(); + + (void)handle.read(buffer); + + return (String)buffer; +} + +fn int main(String[] args) +{ + if (args.len < 2) + { + io::printn("Please specify file"); + + return -1; + } + + String filename = args[1]; + + String? data = read_file(filename); + + if (catch excuse = data) + { + if(excuse == io::FILE_NOT_FOUND) + { + io::printfn("File not found: %s", filename); + } + else + { + io::printfn("Could not read file: %s", excuse); + } + + return -1; + } + + io::printfn("%s", data); + + free(data); + + return 0; +} \ No newline at end of file diff --git a/textfilereader/test/.gitkeep b/textfilereader/test/.gitkeep new file mode 100644 index 0000000..e69de29