+#include <stdio.h>
+
+/* static */
+
+static Client *
+minclient()
+{
+ Client *c, *min;
+
+ if((clients && clients->isfloat) || arrange == dofloat)
+ return clients; /* don't touch floating order */
+ for(min = c = clients; c; c = c->next)
+ if(c->weight < min->weight)
+ min = c;
+ return min;
+}
+
+static void
+reorder()
+{
+ Client *c, *newclients, *tail;
+
+ newclients = tail = NULL;
+ while((c = minclient())) {
+ detach(c);
+ if(tail) {
+ c->prev = tail;
+ tail->next = c;
+ tail = c;
+ }
+ else
+ tail = newclients = c;
+ }
+ clients = newclients;
+}
+
+static Client *
+nexttiled(Client *c)
+{
+ for(c = getnext(c); c && c->isfloat; c = getnext(c->next));
+ return c;
+}