Browse Source

Simplify client_next/prev

Martin Duquesnoy 12 years ago
parent
commit
84a9519cbf
1 changed files with 6 additions and 10 deletions
  1. 6 10
      wmfs2/src/client.c

+ 6 - 10
wmfs2/src/client.c

@@ -92,24 +92,20 @@ client_configure(struct client *c)
 struct client*
 client_next(struct client *c)
 {
-     struct client *next;
+     struct client *next = SLIST_NEXT(c, tnext);
 
-     if(!(next = SLIST_NEXT(c, tnext)))
-          next = SLIST_FIRST(&c->tag->clients);
-
-     return next;
+     return (next ? next : SLIST_FIRST(&c->tag->clients));
 }
 
 struct client*
 client_prev(struct client *c)
 {
-     struct client *cc;
+     struct client *nc, *cc = SLIST_FIRST(&c->tag->clients);
 
-     SLIST_FOREACH(cc, &c->tag->clients, tnext)
-          if(SLIST_NEXT(cc, tnext) == c || !SLIST_NEXT(cc, tnext))
-               return cc;
+     while((nc = SLIST_NEXT(cc, tnext)) && nc != c)
+          cc = nc;
 
-     return SLIST_FIRST(&c->tag->clients);
+     return cc;
 }
 
 struct client*