From b2bd5ed662f90f4391a25f9a115b70fa1d8a75f6 Mon Sep 17 00:00:00 2001 From: George Oikonomou Date: Sat, 12 May 2018 16:25:33 +0100 Subject: [PATCH] Tidy-up handling of O_SYNC and O_DIRECT --- tools/serialdump.c | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/tools/serialdump.c b/tools/serialdump.c index 316cc517e..02e3df15e 100644 --- a/tools/serialdump.c +++ b/tools/serialdump.c @@ -41,8 +41,12 @@ #define MODE_SLIP 7 #define MODE_SLIP_HIDE 8 /*---------------------------------------------------------------------------*/ +#ifndef O_SYNC +#define O_SYNC 0 +#endif - +#define OPEN_FLAGS (O_RDWR | O_NOCTTY | O_NDELAY | O_SYNC) +/*---------------------------------------------------------------------------*/ static unsigned char rxbuf[2048]; /*---------------------------------------------------------------------------*/ static int @@ -176,22 +180,13 @@ main(int argc, char **argv) } } } - fprintf(stderr, "connecting to %s (%s)", device, speedname); -#ifndef O_SYNC -#define O_SYNC 0 -#endif -#ifdef O_DIRECT - fd = open(device, O_RDWR | O_NOCTTY | O_NDELAY | O_DIRECT | O_SYNC); - /* Some systems do not support certain parameters (e.g. raspbian) - * Just do some random testing. Not sure whether there is a better way - * of doing this. */ - if(fd < 0 && errno == EINVAL) { - fd = open(device, O_RDWR | O_NOCTTY | O_NDELAY | O_SYNC); } -#else - fd = open(device, O_RDWR | O_NOCTTY | O_NDELAY | O_SYNC); -#endif + + fprintf(stderr, "connecting to %s", device); + + fd = open(device, OPEN_FLAGS); + if(fd < 0) { fprintf(stderr, "\n"); perror("open");