From bb09376ce56dba72cc3f8e2f402c2bf21a8676f0 Mon Sep 17 00:00:00 2001 From: Jan Date: Fri, 15 May 2026 16:56:26 +0200 Subject: [PATCH] Add head command to read lines from a file --- src/userland/cli/head.c | 54 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/userland/cli/head.c diff --git a/src/userland/cli/head.c b/src/userland/cli/head.c new file mode 100644 index 0000000..ec67f99 --- /dev/null +++ b/src/userland/cli/head.c @@ -0,0 +1,54 @@ +// Copyright (c) 2026 janevers (https://github.com/janevers-sys) +// This software is released under the GNU General Public License v3.0. See LICENSE file for details. +// This header needs to maintain in any file it is present in, as per the GPL license terms. +#include +#include +#include + +int main(int argc, char *argv[]) { + if (argc == 2) { + if(strcmp(argv[1], "--help")) { + printf("-This command reads from the front of the file\n"); + printf("-Use: tail [-n] [-number of lines] [file]\n"); + return 0; + } + //print everything + FILE *fp = fopen(argv[1], "r"); + if (fp == NULL) { + printf("File not found\n"); + return 1; + } + char buf[1024]; + while (fgets(buf, sizeof(buf), fp)) { + printf("%s", buf); + } + fclose(fp); + return 0; + } + + if (argc == 4 && strcmp(argv[1], "-n") == 0) { + int lines = atoi(argv[2]); + if (lines <= 0) { + printf("Number of lines must be positive\n"); + return 1; + } + + FILE *fp = fopen(argv[3], "r"); + if (fp == NULL) { + printf("File not found\n"); + return 1; + } + + char buf[1024]; + while (lines > 0 && fgets(buf, sizeof(buf), fp)) { + printf("%s", buf); + lines--; + } + + fclose(fp); + return 0; + } + + printf("Wrong flag, --help for more info\n"); + return 1; +}