/* tac.c - output lines in reverse order * * Copyright 2012 Rob Landley USE_TAC(NEWTOY(tac, NULL, TOYFLAG_USR|TOYFLAG_BIN)) config TAC bool "tac" default y help usage: tac [FILE...] Output lines in reverse order. */ #define FOR_tac #include "toys.h" GLOBALS( struct double_list *dl; ) static void do_tac(char **pline, long len) { if (pline) { dlist_add(&TT.dl, *pline); *pline = 0; } else while (TT.dl) { struct double_list *dl = dlist_lpop(&TT.dl); xprintf("%s", dl->data); free(dl->data); free(dl); } } void tac_main(void) { loopfiles_lines(toys.optargs, do_tac); }