From 5c870a547dcbeb337d2b18428b2e3a931d8795e3 Mon Sep 17 00:00:00 2001
From: Bjoern Esswein <bjoern.esswein@gmail.com>
Date: Tue, 18 Feb 2020 23:46:06 +0100
Subject: [PATCH] added sscanf

---
 Readme.md    |  8 ++++----
 Zettel.html  |  8 ++++----
 fopen.c      |  2 +-
 jbuffer.c    |  2 +-
 listFiles.c  |  2 +-
 sscanf.c     | 16 ++++++++++++++++
 threadpool.c |  2 +-
 7 files changed, 28 insertions(+), 12 deletions(-)
 create mode 100644 sscanf.c

diff --git a/Readme.md b/Readme.md
index 45e8c21..7441a06 100644
--- a/Readme.md
+++ b/Readme.md
@@ -251,7 +251,7 @@ static void sigchldHandler(int sig) {
 <!-- include (threadpool.c lang=c) -->
 ```c
 # include "die.h"
-# include "errno.h"
+# include <errno.h>
 # include <pthread.h>
 # include "jbuffer.h"
 
@@ -349,7 +349,7 @@ BNDBUF *bbCreate(size_t size) {
 
 void bbDestroy(BNDBUF *bb) {
     if(bb == NULL) return;
-    free(bb->buff);//each does noting if NULL
+    free(bb->buff);//each does nothing if NULL
     semDestroy(bb->freeSpaceSem);
     semDestroy(bb->usedSpaceSem);
     free(bb);
@@ -387,7 +387,7 @@ int bbGet(BNDBUF *bb) {
 
 int main() {
     FILE* file = fopen("../fopen.c", "w");
-    if ( file == NULL ) die("Fehler bei der Anpassung der Standardeingabe");
+    if ( file == NULL ) die("fopen");
 
     //do stuff
 
@@ -409,7 +409,7 @@ int main() {
 
 # define BASEDIR "."
 
-int filter(const struct dirent *dir) {
+static int filter(const struct dirent *dir) {
     if(dir->d_name[0] == '.') {
         return 0;//filter out .files
     }
diff --git a/Zettel.html b/Zettel.html
index 5388d8a..682b85a 100644
--- a/Zettel.html
+++ b/Zettel.html
@@ -236,7 +236,7 @@ accept</p>
 <h3>pthread</h3>
 <p>&lt;!-- include (threadpool.c lang=c) --&gt;</p>
 <pre><code class="hljs language-c"><span class="hljs-meta"># <span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">"die.h"</span></span>
-<span class="hljs-meta"># <span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">"errno.h"</span></span>
+<span class="hljs-meta"># <span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;errno.h&gt;</span></span>
 <span class="hljs-meta"># <span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;pthread.h&gt;</span></span>
 <span class="hljs-meta"># <span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">"jbuffer.h"</span></span>
 
@@ -330,7 +330,7 @@ accept</p>
 
 <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">bbDestroy</span><span class="hljs-params">(BNDBUF *bb)</span> </span>{
     <span class="hljs-keyword">if</span>(bb == <span class="hljs-literal">NULL</span>) <span class="hljs-keyword">return</span>;
-    <span class="hljs-built_in">free</span>(bb-&gt;buff);<span class="hljs-comment">//each does noting if NULL</span>
+    <span class="hljs-built_in">free</span>(bb-&gt;buff);<span class="hljs-comment">//each does nothing if NULL</span>
     semDestroy(bb-&gt;freeSpaceSem);
     semDestroy(bb-&gt;usedSpaceSem);
     <span class="hljs-built_in">free</span>(bb);
@@ -365,7 +365,7 @@ accept</p>
 
 <span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
     FILE* file = fopen(<span class="hljs-string">"../fopen.c"</span>, <span class="hljs-string">"w"</span>);
-    <span class="hljs-keyword">if</span> ( file == <span class="hljs-literal">NULL</span> ) die(<span class="hljs-string">"Fehler bei der Anpassung der Standardeingabe"</span>);
+    <span class="hljs-keyword">if</span> ( file == <span class="hljs-literal">NULL</span> ) die(<span class="hljs-string">"fopen"</span>);
 
     <span class="hljs-comment">//do stuff</span>
 
@@ -384,7 +384,7 @@ accept</p>
 
 <span class="hljs-meta"># <span class="hljs-meta-keyword">define</span> BASEDIR <span class="hljs-meta-string">"."</span></span>
 
-<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">filter</span><span class="hljs-params">(<span class="hljs-keyword">const</span> struct dirent *dir)</span> </span>{
+<span class="hljs-function"><span class="hljs-keyword">static</span> <span class="hljs-keyword">int</span> <span class="hljs-title">filter</span><span class="hljs-params">(<span class="hljs-keyword">const</span> struct dirent *dir)</span> </span>{
     <span class="hljs-keyword">if</span>(dir-&gt;d_name[<span class="hljs-number">0</span>] == <span class="hljs-string">'.'</span>) {
         <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<span class="hljs-comment">//filter out .files</span>
     }
diff --git a/fopen.c b/fopen.c
index 374da72..24371c6 100644
--- a/fopen.c
+++ b/fopen.c
@@ -3,7 +3,7 @@
 
 int main() {
     FILE* file = fopen("../fopen.c", "w");
-    if ( file == NULL ) die("Fehler bei der Anpassung der Standardeingabe");
+    if ( file == NULL ) die("fopen");
 
     //do stuff
 
diff --git a/jbuffer.c b/jbuffer.c
index be8c1bd..cfc06aa 100644
--- a/jbuffer.c
+++ b/jbuffer.c
@@ -45,7 +45,7 @@ BNDBUF *bbCreate(size_t size) {
 
 void bbDestroy(BNDBUF *bb) {
     if(bb == NULL) return;
-    free(bb->buff);//each does noting if NULL
+    free(bb->buff);//each does nothing if NULL
     semDestroy(bb->freeSpaceSem);
     semDestroy(bb->usedSpaceSem);
     free(bb);
diff --git a/listFiles.c b/listFiles.c
index 8309cd8..1959777 100644
--- a/listFiles.c
+++ b/listFiles.c
@@ -7,7 +7,7 @@
 
 #define BASEDIR "."
 
-int filter(const struct dirent *dir) {
+static int filter(const struct dirent *dir) {
     if(dir->d_name[0] == '.') {
         return 0;//filter out .files
     }
diff --git a/sscanf.c b/sscanf.c
new file mode 100644
index 0000000..855058f
--- /dev/null
+++ b/sscanf.c
@@ -0,0 +1,16 @@
+//#include "die.h"
+#include <stdio.h>
+
+int main() {
+    char *str = "GET http://www.fau.de/index.php?v=123 HTTP/1.1\r\n\r\n";
+
+    char host[100];
+    char path[100];
+    char var[2];
+    int version;
+    
+    int res = sscanf(str, "GET http://%99[^/]%99[^?]?%1s=%5d HTTP/1.%*[0-1]\r\n\r\n", host, path, var, &version);
+    if(res != 4) printf("err:%d\n", res);
+
+    printf("Host:%s\nPath:%s\n%s:%d\n", host, path, var, version);
+}
\ No newline at end of file
diff --git a/threadpool.c b/threadpool.c
index edc3562..af60bc3 100644
--- a/threadpool.c
+++ b/threadpool.c
@@ -1,5 +1,5 @@
 #include "die.h"
-#include "errno.h"
+#include <errno.h>
 #include <pthread.h>
 #include "jbuffer.h"
 
-- 
GitLab