From 4f3a2daddfbdac1c6c55d2f0d0da36822ef17a4c Mon Sep 17 00:00:00 2001 From: Alessandro Mauri Date: Mon, 13 Apr 2020 23:53:19 +0200 Subject: [PATCH] changed fopen to open --- .gitignore | 1 + .macrod.c.swp | Bin 12288 -> 12288 bytes macrod.c | 28 +++++++++++++++++++++------- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index f47cb20..15a9e6c 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ *.out +*.swp diff --git a/.macrod.c.swp b/.macrod.c.swp index 84a3fb69f299e64fbafc10ee82b851b6b560e512..d1b5c36474d044fe768fcd6068a7ef164ceca85f 100644 GIT binary patch delta 1118 zcmZ|MU2GIp6u|M@rC>*j1(DWJ6HXVl-L2aWv|tRi$VY2Zf!#oh(U`d1ow>^nOlLPc zvn^0J+nA7$kQnF?;RO(5G%=u(eel%~zBDw!#0Pz&*>(p{VHP|8LMBk03=JdGCo@|04`cz{pwF+Re(H~|}3Ok*>CTBFn>T*YNv zz!6NK7hQM;>+z^v)ztlVrS9Q6X5b=&c063I)DkY@J)FTLdLW44uP2rI8TW7niNxQ^-RYhoD{dDhA zYlr0)eI3u+2^k%gfo*l``Akc@G7Kj#@p4XjM#FEC-OnY&DtdwARrCnoh>uEHXKm&s zCHy)W?MyV{zVDpUnLx_95sG1$W_UX}Tr=oOzogPr<2xlNI6iAtTw5x>7GJyC3gSZv z$yEZG5WDF01#;Xg&Pf6NW@DLtIYMfw=(>(~wE1pK2#PY7bppm^$x7aFwb;H@c1i&O zKIXJloY7M5;hZNWPq1-fRv1*qT%nO3-gGUL%b`j4Qx5s)2Qsc zGV=ESPTl&SsbZQkH9k4DljTzB)ZPQ>efyQs+}*DKIPgx3QSlr0$Ftmut>q>Eq|ZgNVZltaWj(uDoA8`j`Ulxb`riNm delta 765 zcmX}pTS(Jk7{~Evxt0IvoTr&(<-hS4T+Y-AGDJF{hOxOI>~K*{Yiq0N#xkO0Y()fh zCvR6tnHJgMY77dzh#DPkx+}siwW5m-HY$ZO1C z3b$|#`>+$aQjyPCz&kv}6FkO4JisvgXuyY6B3V4gO(YS67u&JS4i<5Dkn1`wU<@a5 z2nVnqKJ=ilwB4vh4VEn;zp;covKT=lN-XJVONp8>>ej~tW9QeZaF!IV%bLsv%)D^rWP(D?UMS6Zz9?XIR*{NX63%$)JdTopVKiJlEK2V*Y1yIb$| z^<`eTj+<6!nwo6cT75ngjs*1Pjln=X9*q}TD&!tgj@BKHV65EogmMm?y0 oy6bA%oo?M3ce=Vn>+ARQ>YIYG%w+3jlj>-zRikZd)kItL4~#^ar2qf` diff --git a/macrod.c b/macrod.c index f88853f..d2ee133 100644 --- a/macrod.c +++ b/macrod.c @@ -3,9 +3,12 @@ #include /* Standard errors */ #include -/* Directory control */ +/* Directory and file control */ #include +#include +#include #include +#include #ifdef __linux__ #include @@ -24,18 +27,29 @@ int pressBufferRemove (struct pressed_buffer*, unsigned short); int main (void) // remember getopt() to automaically parse options { - FILE *fp; - fp = fopen("/dev/input/event0", "r"); - if (fp == NULL) { + int fd; + fd = open("/dev/input/event0", O_RDONLY); // TEST: O_NONBLOCK + if (!fd) { fputs(strerror(errno), stderr); exit(errno); } + //int f2 = open("/dev/input/event3", O_RDONLY); + //struct input_event ev; + struct input_event event; struct pressed_buffer pb = {NULL, 0}; // Pressed keys buffer - while (!ferror(fp)) { - fread(&event, sizeof(struct input_event), 1, fp); + while (1) { + /* Use polling poll(2) to wait por a file dscriptor to become ready for reading. + * NOTE: this could use select(2) but I don't know how */ + + //fread(&event, sizeof(struct input_event), 1, fp); + + ssize_t rb; + rb = read(fd, &event, sizeof(struct input_event)); + if (rb != sizeof(struct input_event)) continue; + if (event.type == EV_KEY) { switch (event.value) { @@ -54,7 +68,7 @@ int main (void) // remember getopt() to automaically parse options } } - if (fclose(fp) == EOF) { + if (close(fd) == -1) { fputs(strerror(errno), stderr); exit(errno); }