On Mon, Jul 10, 2017 at 07:49:10PM +0200, Alexander Bluhm wrote:
> On Sun, Jul 02, 2017 at 04:29:39AM +0200, Klemens Nanni wrote:
> > No functional change or bugfix but queue(3) is the for a reason. That
> > way the code even is a tad clearer to me (and two lines shorter).
> >
> > Feedback/OK?
>
> You do too much in this diff:
> 1. convert list to SLIST
> 2. make fp a global variable
> 3. rename p to fp
> 4. rename struct list to struct file
> 5. replace malloc(sizeof(*p)) with malloc(sizeof(struct file))
> 6. Remove braces from last SLIST_FOREACH loop
>
> 1. is good.
> 2. is bad. Local variables are almost always better and easier
> to maintain. Using global loop variables is especially error
> prone.
> 3.-6. is just personal taste. Unless you more or less own a source
> file, do not touch it. If everyone would change everything to
> his personal taste, our history would be full of useles back and
> forth.
Points taken, thanks for your review/feedback!
> Just do 1, then chances are higher that it gets commited.
Here's the updated diff handling the list->SLIST conversion alone.
Index: tee.c
===================================================================
RCS file: /cvs/src/usr.bin/tee/tee.c,v
retrieving revision 1.11
diff -u -p -r1.11 tee.c
--- tee.c 28 Oct 2016 07:22:59 -0000 1.11
+++ tee.c 10 Jul 2017 18:41:46 -0000
@@ -32,6 +32,7 @@
#include <sys/types.h>
#include <sys/stat.h>
+#include <sys/queue.h>
#include <err.h>
#include <errno.h>
@@ -43,11 +44,11 @@
#include <unistd.h>
struct list {
- struct list *next;
+ SLIST_ENTRY(list) next;
int fd;
char *name;
};
-struct list *head;
+SLIST_HEAD(, list) head;
static void
add(int fd, char *name)
@@ -58,8 +59,7 @@ add(int fd, char *name)
err(1, NULL);
p->fd = fd;
p->name = name;
- p->next = head;
- head = p;
+ SLIST_INSERT_HEAD(&head, p, next);
}
int
@@ -75,6 +75,8 @@ main(int argc, char *argv[])
if (pledge("stdio wpath cpath", NULL) == -1)
err(1, "pledge");
+ SLIST_INIT(&head);
+
append = 0;
while ((ch = getopt(argc, argv, "ai")) != -1) {
switch(ch) {
@@ -109,7 +111,7 @@ main(int argc, char *argv[])
err(1, "pledge");
while ((rval = read(STDIN_FILENO, buf, sizeof(buf))) > 0) {
- for (p = head; p; p = p->next) {
+ SLIST_FOREACH(p, &head, next) {
n = rval;
bp = buf;
do {
@@ -127,7 +129,7 @@ main(int argc, char *argv[])
exitval = 1;
}
- for (p = head; p; p = p->next) {
+ SLIST_FOREACH(p, &head, next) {
if (close(p->fd) == -1) {
warn("%s", p->name);
exitval = 1;