#include "print_module.h"
#include <stdio.h>
#include <time.h>
int print_char(char ch) { return putchar(ch); }
void print_log(int (*print)(char), char *message) {
time_t current_time = time(NULL);
struct tm *local_time = localtime(¤t_time);
char buffer[9];
if (local_time != NULL) {
strftime(buffer, sizeof(buffer), "%H:%M:%S", local_time);
print_string(print, Log_prefix);
print_string(print, " ");
print_string(print, buffer);
print_string(print, " ");
print_string(print, message);
}
}
void print_string(int (*print)(char), const char *string) {
for (int i = 0; string[i] != '\0'; i++) {
print(string[i]);
}
}
#ifndef PRINT_MODULE_H
#define PRINT_MODULE_H
#define Module_load_success_message "Output stream module load: success\n"
#define Log_prefix "[LOG]"
void print_log(int (*print)(char), char *message);
int print_char(char ch);
void print_string(int (*print)(char), const char *string);
#endif
#include <stdio.h>
#include "print_module.h"
int main(void) {
print_log(print_char, Module_load_success_message);
return 0;
}
CC = gcc
CFLAGS = -Wall -Wextra -Werror -std=c11
BUILD_DIR = ../build
.PHONY: all clean rebuild door_struct list_test stack_test print_module
all: door_struct list_test stack_test print_module
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
door_struct: $(BUILD_DIR)
$(CC) $(CFLAGS) dmanager_module.c -o $(BUILD_DIR)/Quest_1
list_test: $(BUILD_DIR)
$(CC) $(CFLAGS) list.c list_test.c -o $(BUILD_DIR)/Quest_2
stack_test: $(BUILD_DIR)
$(CC) $(CFLAGS) stack.c stack_test.c -o $(BUILD_DIR)/Quest_3
print_module: $(BUILD_DIR)
$(CC) $(CFLAGS) print_module.c main_module_entry_point.c -o $(BUILD_DIR)/Quest_4
clean:
rm -rf $(BUILD_DIR)
rebuild: clean all