summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorGravatar Antti K2014-07-29 17:37:34 +0200
committerGravatar Antti K2014-07-29 20:35:36 +0200
commite2bcf8ba1be6e78c850621e4d908bc3f25fae2a7 (patch)
tree0e4a5ff9110c55cc1472c49fccc5dd3a492e8770
parent66d5bb2c84cd9f92eb146a8496bda4c9c9b0f0ce (diff)
downloadxkbcat-e2bcf8ba1be6e78c850621e4d908bc3f25fae2a7.tar.gz
xkbcat-e2bcf8ba1be6e78c850621e4d908bc3f25fae2a7.zip
Use nanosleep instead of usleep
`usleep` is removed from POSIX C11.
-rwxr-xr-xcompile2
-rw-r--r--xkbcat.c14
2 files changed, 11 insertions, 5 deletions
diff --git a/compile b/compile
index 16df9d3..4b8f85e 100755
--- a/compile
+++ b/compile
@@ -1 +1 @@
-clang --std=c11 -Wall -o xkbcat -lX11 xkbcat.c
+clang --std=gnu11 -Wall -o xkbcat -lX11 xkbcat.c
diff --git a/xkbcat.c b/xkbcat.c
index 9a14a65..45fec2a 100644
--- a/xkbcat.c
+++ b/xkbcat.c
@@ -20,6 +20,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
+#include <time.h>
char *DEFAULT_DISPLAY = ":0";
const int DEFAULT_DELAY = 10000;
@@ -50,10 +51,10 @@ int main(int argc, char *argv[]) {
buf1[32], buf2[32],
*keys,
*saved;
- int i, delay = DEFAULT_DELAY;
+ int delay = DEFAULT_DELAY;
/* get args */
- for (i=1; i<argc; i++) {
+ for (int i = 1; i < argc; i++) {
if (!strcmp(argv[i], "-help")) usage();
else if (!strcmp(argv[i], "-display")) {
i++;
@@ -79,10 +80,15 @@ int main(int argc, char *argv[]) {
saved = buf1; keys=buf2;
XQueryKeymap(disp, saved);
+ struct timespec sleepTime = {
+ .tv_sec = 0,
+ .tv_nsec = delay * 1000
+ };
+
while (1) {
/* find changed keys */
XQueryKeymap(disp, keys);
- for (i=0; i<32*8; i++) {
+ for (int i = 0; i < 32*8; i++) {
if (BIT(keys, i) != BIT(saved, i)) {
register char *str;
str = (char *)KeyCodeToStr(i, BIT(keys, i));
@@ -96,7 +102,7 @@ int main(int argc, char *argv[]) {
saved = keys;
keys = char_ptr;
- usleep(delay);
+ nanosleep(&sleepTime, NULL);
}
}