use ssize_t for read() and write(), style - sob - simple output bar
(HTM) git clone git://git.codemadness.org/sob
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit fee669cbaa9c842d18ed53838ea84b05335e40bc
(DIR) parent bdbc1fb6cd9b3396216dce195cb939aeecb0a29e
(HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Sat, 25 Oct 2014 10:22:27 +0000
use ssize_t for read() and write(), style
Diffstat:
M sob.c | 151 +++++++++++++++----------------
1 file changed, 75 insertions(+), 76 deletions(-)
---
(DIR) diff --git a/sob.c b/sob.c
@@ -30,70 +30,70 @@ struct line {
size_t collen; /* total length (in columns) */
};
-static void cb_pipe_insert(const char *, size_t, size_t);
-static void cb_pipe_replaceword(const char *, size_t, size_t);
-
-static void line_clear(void);
-static void line_copywordcursor(char *, size_t);
-static void line_cursor_begin(void);
-static void line_cursor_end(void);
-static void line_cursor_move(size_t);
-static void line_cursor_next(void);
-static void line_cursor_prev(void);
-static void line_cursor_wordprev(void);
-static void line_cursor_wordnext(void);
-static void line_delcharprev(void);
-static void line_delcharnext(void);
-static void line_deltoend(void);
-static void line_delwordprev(void);
-static void line_delwordcursor(void);
-static void line_draw(void);
-static void line_exit(void);
-static void line_getwordpos(size_t, size_t, size_t *, size_t *, size_t *,
- size_t *);
-static void line_getwordposprev(size_t, size_t, size_t *, size_t *);
-static void line_getwordposnext(size_t, size_t, size_t *, size_t *);
-static void line_inserttext(const char *);
-static void line_newline(void);
-static void line_out(void);
-static void line_prompt(void);
-static int line_promptlen(void);
-static int line_pipeto(char **);
-static int line_wordpipeto(char **);
-
-static int pipe_read(int, int, char *,
+static void cb_pipe_insert(const char *, size_t, size_t);
+static void cb_pipe_replaceword(const char *, size_t, size_t);
+
+static void line_clear(void);
+static void line_copywordcursor(char *, size_t);
+static void line_cursor_begin(void);
+static void line_cursor_end(void);
+static void line_cursor_move(size_t);
+static void line_cursor_next(void);
+static void line_cursor_prev(void);
+static void line_cursor_wordprev(void);
+static void line_cursor_wordnext(void);
+static void line_delcharprev(void);
+static void line_delcharnext(void);
+static void line_deltoend(void);
+static void line_delwordprev(void);
+static void line_delwordcursor(void);
+static void line_draw(void);
+static void line_exit(void);
+static void line_getwordpos(size_t, size_t, size_t *, size_t *, size_t *,
+ size_t *);
+static void line_getwordposprev(size_t, size_t, size_t *, size_t *);
+static void line_getwordposnext(size_t, size_t, size_t *, size_t *);
+static void line_inserttext(const char *);
+static void line_newline(void);
+static void line_out(void);
+static void line_prompt(void);
+static int line_promptlen(void);
+static int line_pipeto(char **);
+static int line_wordpipeto(char **);
+
+static int pipe_read(int, int, char *,
+ void (*)(const char *, size_t, size_t));
+static int pipe_cmd(char *[], char *,
void (*)(const char *, size_t, size_t));
-static int pipe_cmd(char *[], char *,
- void (*)(const char *, size_t, size_t));
-
-static void clear(void);
-static void gettermsize(void);
-static void handleinput(const unsigned char *, size_t);
-static void initialinput(void);
-static void resize(void);
-static int run(void);
-static void setup(void);
-static void sighandler(int);
-static void usage(void);
-
-static int readfd(int, char *, size_t);
-static int writefd(int, char *, size_t);
-
-static size_t colw(const char *, size_t);
-static int nonspace(int c);
-static size_t utf8len(const char *);
-static size_t utfprevn(const char *, size_t, size_t);
-static size_t utfnextn(const char *, size_t, size_t);
-static void utfuntilchar(size_t *, size_t *, int (*)(int), int);
-
-static struct termios ttystate, ttysave;
-
-static struct line line;
-static size_t dirtylen; /* dirty length (in columns) */
-static int cols, rows;
-static int isrunning = 1;
-static FILE * outfp = NULL;
-static FILE * lineoutfp = NULL;
+
+static void clear(void);
+static void gettermsize(void);
+static void handleinput(const unsigned char *, size_t);
+static void initialinput(void);
+static void resize(void);
+static int run(void);
+static void setup(void);
+static void sighandler(int);
+static void usage(void);
+
+static ssize_t readfd(int, char *, size_t);
+static ssize_t writefd(int, char *, size_t);
+
+static size_t colw(const char *, size_t);
+static int nonspace(int c);
+static size_t utf8len(const char *);
+static size_t utfprevn(const char *, size_t, size_t);
+static size_t utfnextn(const char *, size_t, size_t);
+static void utfuntilchar(size_t *, size_t *, int (*)(int), int);
+
+static struct termios ttystate, ttysave;
+
+static struct line line;
+static size_t dirtylen; /* dirty length (in columns) */
+static int cols, rows;
+static int isrunning = 1;
+static FILE * outfp = NULL;
+static FILE * lineoutfp = NULL;
#include "config.h"
@@ -548,10 +548,9 @@ line_copywordcursor(char *buf, size_t bufsiz)
buf[len] = '\0';
}
-static int
+static ssize_t
readfd(int fd, char *buf, size_t len) {
- size_t i = 0;
- ssize_t r;
+ ssize_t r, i = 0;
while(len > 0) {
if((r = read(fd, &buf[i], len)) == -1) {
@@ -563,16 +562,15 @@ readfd(int fd, char *buf, size_t len) {
} else if(r == 0) {
return i;
}
- i += (size_t)r;
- len -= (size_t)r;
+ i += r;
+ len -= r;
}
return i;
}
-static int
+static ssize_t
writefd(int fd, char *buf, size_t len) {
- size_t i = 0;
- ssize_t w;
+ ssize_t w, i = 0;
while(len > 0) {
if((w = write(fd, &buf[i], len)) == -1) {
@@ -584,8 +582,8 @@ writefd(int fd, char *buf, size_t len) {
} else if(w == 0) {
return i;
}
- i += (size_t)w;
- len -= (size_t)w;
+ i += w;
+ len -= w;
}
return i;
}
@@ -598,7 +596,8 @@ pipe_read(int fd_in, int fd_out, char *writestr,
struct timeval tv;
fd_set fdr, fdw;
size_t total = 0;
- int r, w, maxfd, status = -1, haswritten = 0;
+ ssize_t r;
+ int maxfd, status = -1, haswritten = 0;
for(;;) {
FD_ZERO(&fdr);
@@ -630,13 +629,13 @@ pipe_read(int fd_in, int fd_out, char *writestr,
}
if(f) {
buf[r] = '\0';
- total += r;
+ total += (size_t)r;
f(buf, r, total);
}
}
}
if(FD_ISSET(fd_out, &fdw)) {
- if((w = writefd(fd_out, writestr, strlen(writestr))) == -1)
+ if(writefd(fd_out, writestr, strlen(writestr)) == -1)
goto fini;
close(fd_out); /* sends EOF */
fd_out = -1;