add lib and try to improve ft_printf
This commit is contained in:
parent
ad626f4c54
commit
06c2a30cf1
2
Makefile
2
Makefile
|
@ -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 := .
|
||||||
|
|
|
@ -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
|
||||||
|
|
18
inc/main.h
18
inc/main.h
|
@ -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
1
lib/ft_printf
Submodule
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit b7b7d5aa04fea13f5da4e4ffb00beb4f5724e3cd
|
1
lib/libft
Submodule
1
lib/libft
Submodule
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit a020fd795c3dc0a34a59d2906908202cde3d3ccf
|
32
src/flags.c
32
src/flags.c
|
@ -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);
|
||||||
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue