--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_utils.h :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2025/01/17 11:57:44 by dkaiser #+# #+# */
+/* Updated: 2025/01/17 12:00:11 by dkaiser ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#ifndef FT_UTILS_H
+#define FT_UTILS_H
+
+/*
+** Prints error message and returns EXIT_FAILURE
+*/
+int ft_err(const char *str);
+
+/*
+** Returns integer value from str
+*/
+int ft_atoi(const char *str);
+
+#endif
--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* philo.h :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2025/01/17 10:23:19 by dkaiser #+# #+# */
+/* Updated: 2025/01/17 12:01:01 by dkaiser ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#ifndef PHILO_H
+# define PHILO_H
+
+# include <unistd.h>
+# include <stdlib.h>
+# include <stdio.h>
+# include <pthread.h>
+# include <sys/time.h>
+# include "ft_utils.h"
+
+# define ERR_USAGE "Usage: <nbr_of_philos> <ttd> <tte> <tts> [times_must_eat]"
+
+typedef struct s_phdata
+{
+ int nbr_of_philos;
+ int time_to_die;
+ int time_to_eat;
+ int time_to_sleep;
+ int times_must_eat;
+} t_phdata;
+
+#endif
--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_utils.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2025/01/17 11:57:11 by dkaiser #+# #+# */
+/* Updated: 2025/01/17 11:59:28 by dkaiser ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "ft_utils.h"
+
+int ft_err(const char *str)
+{
+ printf("\e[31m[ERROR] %s\e[0m\n", str);
+ return (EXIT_FAILURE);
+}
+
+int ft_atoi(const char *str)
+{
+ int result;
+ int i;
+ int posneg;
+
+ posneg = 1;
+ result = 0;
+ i = 0;
+ while ((str[i] >= '\t' && str[i] <= '\r') || str[i] == ' ')
+ {
+ i++;
+ }
+ if (str[i] == '-')
+ {
+ posneg = -1;
+ i++;
+ }
+ else if (str[i] == '+')
+ i++;
+ while (str[i] >= '0' && str[i] <= '9')
+ {
+ result = 10 * result + str[i] - '0';
+ i++;
+ }
+ return (result * posneg);
+}
/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/01/14 17:13:30 by dkaiser #+# #+# */
-/* Updated: 2025/01/14 17:14:12 by dkaiser ### ########.fr */
+/* Updated: 2025/01/17 11:53:53 by dkaiser ### ########.fr */
/* */
/* ************************************************************************** */
#include "philo.h"
+int ft_err(char *str)
+{
+ printf("\e[31m[ERROR] %s\e[0m\n", str);
+ return (EXIT_FAILURE);
+}
+
int main(int argc, char *argv[])
{
- return 0;
+ t_phdata data;
+ int result;
+
+ if (argc != 5 && argc != 6)
+ return(ft_err(ERR_USAGE));
+ result = load_data(&data, argc, argv);
+ if (result != EXIT_SUCCESS)
+ return (result);
+ return (EXIT_SUCCESS);
}