From ec6031962c5b6fca5e40d0a41e1f5011fbfca81e Mon Sep 17 00:00:00 2001
From: Arnaud Lefebvre <arnaud.lefebvre@student.uclouvain.be>
Date: Tue, 12 May 2020 10:35:21 +0200
Subject: [PATCH] Replace main.c

---
 Code_With_Threads/main.c | 58 +++++++++++++++++++++++++---------------
 1 file changed, 37 insertions(+), 21 deletions(-)

diff --git a/Code_With_Threads/main.c b/Code_With_Threads/main.c
index f76746a..1d1380c 100644
--- a/Code_With_Threads/main.c
+++ b/Code_With_Threads/main.c
@@ -28,31 +28,39 @@ void *reading() {
     }
 
     int number = 0;
-    while (fscanf(file_in, "%ls", &number) != EOF) {
+    while (fscanf(file_in, "%d", &number) != EOF) {
         sem_wait(&(buffer_1->free));
         pthread_mutex_lock(&(buffer_1->mutex));
         put_node_t(buffer_1->numbers, number);
-        number_lines++;
         pthread_mutex_unlock(&(buffer_1->mutex));
         sem_post(&(buffer_1->full));
     }
+
+    return EXIT_SUCCESS;
 }
 
 
 void *calculating() {
-    sem_wait(&(buffer_1->free));
+    sem_wait(&(buffer_1->full));
     pthread_mutex_lock(&(buffer_1->mutex));
     int number = get_node_t(buffer_1->numbers);
+    //printf("nomber = %d\n", number);
     pthread_mutex_unlock(&(buffer_1->mutex));
-    sem_post(&(buffer_1->full));
+    sem_post(&(buffer_1->free));
 
     list_t *list_prime = prime_list(number);
+    //printf("%d, number\n", get_node_t(list_prime));
+    //printf("%d, divider\n", get_node_t(list_prime));
+    //printf("%d, divider2\n", get_node_t(list_prime));
 
     sem_wait(&(buffer_2->free));
     pthread_mutex_lock(&(buffer_2->mutex));
     put_node_lst(buffer_2->prime_numbers, list_prime);
     pthread_mutex_unlock(&(buffer_2->mutex));
     sem_post(&(buffer_2->full));
+
+    //clear_list_t(list_prime);
+    return EXIT_SUCCESS;
 }
 
 void *writing() {
@@ -64,21 +72,26 @@ void *writing() {
         printf("file_out opened with succes.\n");
     }
 
+    number_lines = count_lines(f_in);
     while(number_lines != 0) {
         number_lines--;
 
-        sem_wait(&(buffer_2->free));
+        sem_wait(&(buffer_2->full));
         pthread_mutex_lock(&(buffer_2->mutex));
         list_t *removed = get_node_lst(buffer_2->prime_numbers);
         pthread_mutex_unlock(&(buffer_2->mutex));
-        sem_post(&(buffer_2->full));
+        sem_post(&(buffer_2->free));
 
-        for (int i = 0; i < removed->length; i++) {
-            fprintf(file_out, "%d ", get_at_index(removed, i));
+        //fprintf(file_out, "%d : ", removed->length);
+        int length = removed->length;
+        for (int i = 0; i < length; i++) {
+            fprintf(file_out, "%d ", get_node_t(removed));
         }
-        fprintf(file_out, "\n");
+        clear_list_t(removed);
         free(removed);
+        fprintf(file_out, "\n");
     }
+    return EXIT_SUCCESS;
 }
 
 int main(int argc, char *argv[]) {
@@ -97,20 +110,23 @@ int main(int argc, char *argv[]) {
         f_out = argv[optind + 1];
     }
     
+    
     buffer_1 = init_buffer_1(nthreads);
     if (!buffer_1) {
+//        free(buffer_1);
         printf("Error with buffer_1.\n");
         return -1;
     }
 
     buffer_2 = init_buffer_2(nthreads);
     if (!buffer_2) {
+//        free(buffer_2);
         printf("Error with buffer_2.\n");
         return -1;
     }
 
     pthread_t read;
-    pthread_t calc[nthreads+2];
+    pthread_t calc[nthreads];
     pthread_t write;
 
     if (pthread_create(&read, NULL, &reading, NULL) != 0) {
@@ -119,7 +135,7 @@ int main(int argc, char *argv[]) {
     }
 
     for (int i = 0; i < nthreads; i++) {
-        if (pthread_create(&calc[i], NULL, calculating, NULL) != 0) {
+        if (pthread_create(&calc[i], NULL, &calculating, NULL) != 0) {
             printf("Error with creating calculating thread.\n");
             return -1;
         }
@@ -135,9 +151,9 @@ int main(int argc, char *argv[]) {
         return -1;
     }
 
-    pthread_mutex_lock(&(buffer_1->mutex));
-    buffer_1->is_running = false;
-    pthread_mutex_unlock(&(buffer_1->mutex));
+//    pthread_mutex_lock(&(buffer_1->mutex));
+//    buffer_1->is_running = false;
+//    pthread_mutex_unlock(&(buffer_1->mutex));
 
     for (int i = 0; i < nthreads; i++) {
         if (pthread_join(calc[i], NULL) != 0) {
@@ -151,15 +167,15 @@ int main(int argc, char *argv[]) {
         return -1;
     }
 
-    if (fclose(file_in) == -1) {
-        printf("Error with close file_in.\n");
-    }
 
-    if (fclose(file_out) == -1) {
-        printf("Error with close file_out.\n");
-    }
+    fclose(file_in);
+    fclose(file_out);
+    printf("Files close.\n");
 
-    printf("File closed.\n");
+    clear_list_t(buffer_1->numbers);
+    free(buffer_1->numbers);
+    clear_list_lst(buffer_2->prime_numbers);
+    free(buffer_2->prime_numbers);
 
     free(buffer_1);
     free(buffer_2);
-- 
GitLab