← cproj

new update

8359e53198483b26d9dda29fe85752522d7dc3a3 · ovidiucs · Oct 13, 2019 23:25

+26 −20 · 3 files changed

  • graph/sockets/Makefile +1 −1
  • graph/sockets/http_server.c +6 −8
  • graph/sockets/s.h +19 −11
diff --git a/graph/sockets/Makefile b/graph/sockets/Makefile
index 3765a77..1330ad4 100644
--- a/graph/sockets/Makefile
+++ b/graph/sockets/Makefile
@@ -42,7 +42,7 @@ CFLAGS = -g \
 -Wstrict-prototypes \
 -Wswitch-default \
 -Wunreachable-code \
--Wunused-macros \
+ # -Wunused-macros \
 
 
 # Targets.
diff --git a/graph/sockets/http_server.c b/graph/sockets/http_server.c
index 080a74a..eedb970 100644
--- a/graph/sockets/http_server.c
+++ b/graph/sockets/http_server.c
@@ -70,17 +70,15 @@ void handleRequest(int fd) {
     };
     String line;
 
-    buffer = chop_line(buffer, &line);
+    buffer = trim_end(chop_line(&buffer));
 
     fprintf (stderr, "* Size of buffer is: %zd bytes\n",buffer.len);
     while (buffer.len != 0 && line.len != 0) {
-        char newline = '\n';
-        char bar = '|';
-        write(STDOUT_FILENO,&bar,1);
-        write(STDOUT_FILENO,line.data,line.len);
-        write(STDOUT_FILENO,&bar,1);
-        write(STDOUT_FILENO,&newline,1);
-        buffer = chop_line(buffer, &line);
+        putchar('|');
+          fwrite(line.data,1,line.len,stdout);
+        putchar('|');
+        putchar('\n');
+        line = trim(chop_line(buffer, &line));
     }
 
 }
diff --git a/graph/sockets/s.h b/graph/sockets/s.h
index 8ba8325..361c4c9 100644
--- a/graph/sockets/s.h
+++ b/graph/sockets/s.h
@@ -1,29 +1,37 @@
 #ifndef S_H_
 #define S_H_
+#include <ctype.h>
 
-typedef struct __attribute__((packed)) {
+typedef struct {
     uint64_t len;
     char *data;
 } String;
  
 static inline
-String chop_line(String input, String *line) {
+String chop_line(String *input) {
     uint64_t i = 0;
-    while (i < input.len &&  input.data[i] != '\n'){
+    while (i < input->len &&  input->data[i] != '\n'){
         ++i;
     }
-    line->data = input.data;
-    line->len = i;
+    String line;
+    line.data = input->data;
+    line.len = i;
 
-    if (i == input.len) {
-        input.data += input.len;
-        input.len = 0;
+    if (i == input->len) {
+        input->data += input->len;
+        input->len = 0;
     } else {
-        input.data += i + 1;
-        input.len -= i + 1;
+        input->data += i + 1;
+        input->len -= i + 1;
     }
 
-     return input;
+     return *input;
+}
+String trim_end(String s){
+    while (s->len && isspace(s->data[s->len -1])) {
+        s->len--;
+    }
+    return s;
 }
 
 #endif // S_H_
\ No newline at end of file