add lib and try to improve ft_printf

This commit is contained in:
Xamora 2024-12-16 19:28:40 +01:00
parent ad626f4c54
commit 06c2a30cf1
7 changed files with 55 additions and 11 deletions

View file

@ -2,7 +2,7 @@ CC := gcc
LD := $(CC) LD := $(CC)
LDFLAGS := LDFLAGS :=
CFLAGS := $(shell cat compile_flags.txt | sed -z "s/\n/ /g") CFLAGS := $(shell cat compile_flags.txt | sed -z "s/\n/ /g")
SRC := $(wildcard src/*.c) SRC := $(wildcard src/*.c lib/**/*.c)
OBJ_DIR := build OBJ_DIR := build
OBJ := $(addprefix $(OBJ_DIR)/, $(patsubst %.c,%.o,$(SRC))) OBJ := $(addprefix $(OBJ_DIR)/, $(patsubst %.c,%.o,$(SRC)))
DIR := . DIR := .

View file

@ -1,6 +1,9 @@
-includeinc/main.h -includeinc/main.h
-includelib/libft/libft.h
-includelib/ft_printf/ft_printf.h
-Wall -Wall
-Wextra -Wextra
-std=c23 -std=c23
-iquoteinc -iquoteinc
-iquotelib
-g -g

View file

@ -1,11 +1,15 @@
#pragma once #pragma once
typedef struct flags { #include <inttypes.h>
bool l;
bool a; typedef struct {
bool R; i64 l;
bool r; i64 a;
bool t; i64 R;
i64 r;
i64 t;
int error[2];
} flags_t; } flags_t;
flags_t get_flags(char **argv); flags_t *get_flags(char **argv);
void display_flags(flags_t flags);

1
lib/ft_printf Submodule

@ -0,0 +1 @@
Subproject commit b7b7d5aa04fea13f5da4e4ffb00beb4f5724e3cd

1
lib/libft Submodule

@ -0,0 +1 @@
Subproject commit a020fd795c3dc0a34a59d2906908202cde3d3ccf

View file

@ -1,6 +1,34 @@
flags_t get_flags(char **argv) { flags_t *get_flags(char **argv) {
flags_t *flags = ft_calloc(1, sizeof(flags_t));
if (flags == nullptr)
return nullptr;
flags->t = 0;
flags->error[0] = -1;
flags_t flags = {false, false, false, false, false}; for (int i = 1; argv[i] != NULL; i++)
if (argv[i][0] == '-')
for (int j = 1; argv[i][j] != '\0'; j++) {
if (argv[i][j] == 'l')
flags->l = 1;
else if (argv[i][j] == 'a')
flags->a = 1;
else if (argv[i][j] == 'R')
flags->R = 1;
else if (argv[i][j] == 'r')
flags->r = 1;
else if (argv[i][j] == 't')
flags->t = 1;
else {
flags->error[0] = i;
flags->error[1] = j;
return flags;
}
}
return flags; return flags;
} }
void display_flags(flags_t flags) {
ft_printf("l: %d; a: %d; R: %d; r: %d; t: %d\n",
flags.l, flags.a, flags.R, flags.r, flags.t);
}

View file

@ -3,6 +3,13 @@ int main(int argc, char **argv) {
if (argc < 2) if (argc < 2)
return 1; return 1;
get_flags(argv); flags_t *flags = get_flags(argv);
if (flags->error[0] != -1) {
ft_printf_fd(2, "ls: invalid line width: \'%s\'",
argv[flags->error[0]][flags->error[1]]);
return 2;
}
display_flags(*flags);
return 0; return 0;
} }