commit 22bf3c985bf9864041978fe0096beab3dc70132c Author: gandc Date: Fri Feb 14 23:50:25 2025 +0300 Initial commit diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c551966 --- /dev/null +++ b/Makefile @@ -0,0 +1,20 @@ +CC = gcc +CFLAGS = -Wall +BUILDDIR = .build/ +TARGET = $(BUILDDIR)program +SRCS = src/ +OBJS=$(patsubst $(SRCS)%.c, $(BUILDDIR)%.o, $(wildcard $(SRCS)*.c)) + +all: checkbuild $(TARGET) + +$(TARGET): $(OBJS) + $(CC) $(CFLAGS) -o $(TARGET) $(OBJS) + +$(BUILDDIR)%.o: $(SRCS)%.c + $(CC) $(CFLAGS) -c $< -o $@ + +checkbuild: + ./checkbuild.sh + +clean: + rm -rf $(BUILDDIR)* diff --git a/checkbuild.sh b/checkbuild.sh new file mode 100644 index 0000000..9558228 --- /dev/null +++ b/checkbuild.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +if [ ! -d ".build" ]; then + mkdir -p ./.build +fi diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..1abaea3 --- /dev/null +++ b/src/main.c @@ -0,0 +1,42 @@ +#include +#include + +int main(int argc, char *argv[]) +{ + FILE* fp; + void filecopy(FILE *, FILE *); + char *prog = argv[0]; + + if (argc == 1) { + filecopy(stdin, stdout); + } + else { + while (--argc > 0) { + if ((fp = fopen(*++argv, "r")) == NULL) { + fprintf(stderr, "%s: can't open %s\n", prog, *argv); + exit(1); + } + else { + filecopy(fp, stdout); + fclose(fp); + } + } + + } + + if (ferror(stdout)) { + fprintf(stderr, "%s: error writing stdout\n", prog); + exit(2); + } + + exit(0); +} + +void filecopy(FILE *ifp, FILE *ofp) +{ + int c; + + while ((c = getc(ifp)) != EOF) { + putc(c, ofp); + } +} \ No newline at end of file