philosophers/philo/src/parse_arguments.c

28 lines
885 B
C

#include "philo.h"
int parse_arguments(int argc,char *argv[], t_rules *rules)
{
rules->n_must_eat = -1;
printf("argc: %d\n", argc);
if (argc != 5 && argc != 6)
return (FAILURE);
if (!ph_atoi(argv[1], &rules->n_philos))
return (FAILURE);
if (!ph_atoi(argv[2], &rules->time_to_die))
return (FAILURE);
if (!ph_atoi(argv[3], &rules->time_to_eat))
return (FAILURE);
if (!ph_atoi(argv[4], &rules->time_to_sleep))
return (FAILURE);
if (argc == 6 && !ph_atoi(argv[5], &rules->n_must_eat))
return (FAILURE);
rules->print_lock = malloc(sizeof(pthread_mutex_t));
rules->finished_lock = malloc(sizeof(pthread_mutex_t));
if (!rules->print_lock || !rules->finished_lock)
return (FAILURE);
rules->forks = malloc(rules->n_philos * sizeof(pthread_mutex_t));
if (!rules->forks)
return (FAILURE);
print_rules(rules);
return (SUCCESS);
}