aboutsummaryrefslogtreecommitdiff
path: root/philo_one/src
diff options
context:
space:
mode:
Diffstat (limited to 'philo_one/src')
-rw-r--r--philo_one/src/args.c32
-rw-r--r--philo_one/src/helper.c99
-rw-r--r--philo_one/src/io.c34
-rw-r--r--philo_one/src/philo_one.h50
4 files changed, 31 insertions, 184 deletions
diff --git a/philo_one/src/args.c b/philo_one/src/args.c
deleted file mode 100644
index b7277dd..0000000
--- a/philo_one/src/args.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* ************************************************************************** */
-/* */
-/* ::: :::::::: */
-/* args.c :+: :+: :+: */
-/* +:+ +:+ +:+ */
-/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
-/* +#+#+#+#+#+ +#+ */
-/* Created: 2020/02/08 23:12:55 by cacharle #+# #+# */
-/* Updated: 2020/09/29 11:08:06 by cacharle ### ########.fr */
-/* */
-/* ************************************************************************** */
-
-#include "philo_one.h"
-
-bool parse_args(t_philo_conf *philo_args, int argc, char **argv)
-{
- if (argc != 5 && argc != 6)
- return h_err(false, "Usage: %s philosophers_num death_timeout eat_timeout sleep_timeout [meal_num]", argv[0]);
- if ((philo_args->philo_num = h_atou_strict(argv[1])) == -1
- || (philo_args->timeout_death = h_atou_strict(argv[2])) == -1
- || (philo_args->timeout_eat = h_atou_strict(argv[3])) == -1
- || (philo_args->timeout_sleep = h_atou_strict(argv[4])) == -1)
- return (false);
- if (argc == 6)
- {
- if ((philo_args->meal_num = h_atou_strict(argv[5])) == -1)
- return (false);
- }
- else
- philo_args->meal_num = 1;
- return (true);
-}
diff --git a/philo_one/src/helper.c b/philo_one/src/helper.c
deleted file mode 100644
index fa4c7ff..0000000
--- a/philo_one/src/helper.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/* ************************************************************************** */
-/* */
-/* ::: :::::::: */
-/* helper.c :+: :+: :+: */
-/* +:+ +:+ +:+ */
-/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
-/* +#+#+#+#+#+ +#+ */
-/* Created: 2020/02/08 23:22:49 by cacharle #+# #+# */
-/* Updated: 2020/09/29 14:15:50 by cacharle ### ########.fr */
-/* */
-/* ************************************************************************** */
-
-#include "philo_one.h"
-
-static int h_strlen(char *s)
-{
- int counter;
-
- counter = 0;
- while (s[counter])
- counter++;
- return (counter);
-}
-
-long int h_atou_strict(char *s)
-{
- long int num;
- char *origin;
-
- origin = s;
- if (*s < '0' || *s > '9')
- return (h_err(-1, "Error: %s: is not a number", origin));
- num = 0;
- while (*s >= '0' && *s <= '9')
- {
- num *= 10;
- if (num > UINT_MAX)
- return (h_err(-1, "Error: %s: is too big", origin));
- num += *s - '0';
- if (num > UINT_MAX)
- return (h_err(-1, "Error: %s: is too big", origin));
- s++;
- }
- if (*s != '\0')
- return (h_err(-1, "Error: %s: is not a number", origin));
- return (num);
-}
-
-void h_putnbr(unsigned long int num)
-{
- if (num > 9)
- h_putnbr(num / 10);
- h_putchar(num % 10 + '0');
-}
-
-void h_putchar(char c)
-{
- write(STDOUT_FILENO, &c, 1);
-}
-
-void h_putstr(char *s)
-{
- write(STDOUT_FILENO, s, h_strlen(s));
-}
-
-int h_err(int ret, const char *format, ...)
-{
- char *str;
- va_list ap;
-
- va_start(ap, format);
- while (*format != '\0')
- {
- if (format[0] == '%' && format[1] == 's')
- {
- str = va_arg(ap, char*);
- if (str != NULL)
- write(STDERR_FILENO, str, h_strlen(str));
- format += 2;
- }
- else
- {
- write(STDERR_FILENO, format, 1);
- format++;
- }
- }
- va_end(ap);
- write(STDERR_FILENO, "\n", 1);
- return (ret);
-}
-
-t_time h_time_now(void)
-{
- struct timeval tv;
-
- if (gettimeofday(&tv, NULL) == -1)
- return (-1);
- return (tv.tv_sec * 1000 + tv.tv_usec / 1000);
-}
diff --git a/philo_one/src/io.c b/philo_one/src/io.c
index 96a8f07..6fb6424 100644
--- a/philo_one/src/io.c
+++ b/philo_one/src/io.c
@@ -6,28 +6,28 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/02/14 21:37:50 by cacharle #+# #+# */
-/* Updated: 2020/09/29 14:55:21 by cacharle ### ########.fr */
+/* Updated: 2020/09/30 07:49:22 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
#include "philo_one.h"
-static void philo_put(int id, t_philo_event event)
-{
- h_putnbr(h_time_now());
- h_putchar(' ');
- h_putnbr(id);
- if (event == EVENT_FORK)
- h_putstr(" has taken fork\n");
- else if (event == EVENT_EAT)
- h_putstr(" is eating\n");
- else if (event == EVENT_SLEEP)
- h_putstr(" is sleeping\n");
- else if (event == EVENT_THINK)
- h_putstr(" is thinking\n");
- else if (event == EVENT_DIE)
- h_putstr(" died\n");
-}
+/* static void philo_put(int id, t_philo_event event) */
+/* { */
+/* h_putnbr(h_time_now()); */
+/* h_putchar(' '); */
+/* h_putnbr(id); */
+/* if (event == EVENT_FORK) */
+/* h_putstr(" has taken fork\n"); */
+/* else if (event == EVENT_EAT) */
+/* h_putstr(" is eating\n"); */
+/* else if (event == EVENT_SLEEP) */
+/* h_putstr(" is sleeping\n"); */
+/* else if (event == EVENT_THINK) */
+/* h_putstr(" is thinking\n"); */
+/* else if (event == EVENT_DIE) */
+/* h_putstr(" died\n"); */
+/* } */
void io_eat(t_routine_arg *arg)
{
diff --git a/philo_one/src/philo_one.h b/philo_one/src/philo_one.h
index e92fdcd..2c04316 100644
--- a/philo_one/src/philo_one.h
+++ b/philo_one/src/philo_one.h
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/11/24 06:11:16 by cacharle #+# #+# */
-/* Updated: 2020/09/29 14:15:47 by cacharle ### ########.fr */
+/* Updated: 2020/09/30 07:48:36 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -21,24 +21,22 @@
# include <limits.h>
# include <stdarg.h>
-typedef long int t_time;
+# include "common.h"
-typedef enum
-{
- EVENT_FORK,
- EVENT_EAT,
- EVENT_SLEEP,
- EVENT_THINK,
- EVENT_DIE
-} t_philo_event;
+// typedef long int t_time;
+
+// typedef enum
+// {
+// EVENT_FORK,
+// EVENT_EAT,
+// EVENT_SLEEP,
+// EVENT_THINK,
+// EVENT_DIE
+// } t_philo_event;
typedef struct
{
- int philo_num;
- t_time timeout_death;
- t_time timeout_eat;
- t_time timeout_sleep;
- int meal_num;
+ t_philo_args args;
bool all_alive;
pthread_mutex_t mutex_stdout;
pthread_mutex_t mutex_all_alive;
@@ -82,7 +80,7 @@ bool philos_start(
t_philo *philos,
t_routine_arg *routine_args,
int num);
-void philos_join(t_philo *philos, int num);
+void philos_detach(t_philo *philos, int num);
/*
** routine.c
@@ -100,24 +98,4 @@ void io_think(t_routine_arg *arg);
void io_sleep(t_routine_arg *arg);
void io_die(t_routine_arg *arg);
-/*
-** common.c
-*/
-
-bool parse_args(
- t_philo_conf *philo_args,
- int argc,
- char **argv);
-
-/*
-** helper.c
-*/
-
-long int h_atou_strict(char *s);
-void h_putnbr(unsigned long num);
-void h_putchar(char c);
-void h_putstr(char *s);
-int h_err(int ret, const char *format, ...);
-t_time h_time_now(void);
-
#endif