OSDN Git Service

am f41c7e0b: Merge remote-tracking branch \'toybox/master\' into HEAD
[android-x86/external-toybox.git] / toys / other / rev.c
1 /* rev.c - reverse lines of a set of given input files
2  *
3  * Copyright 2012 Elie De Brauwer <eliedebrauwer@gmail.com>
4
5 USE_REV(NEWTOY(rev, NULL, TOYFLAG_USR|TOYFLAG_BIN))
6
7 config REV
8   bool "rev"
9   default y
10   help
11     usage: rev [FILE...]
12
13     Output each line reversed, when no files are given stdin is used.
14 */
15
16 #include "toys.h"
17
18 void do_rev(int fd, char *name)
19 {
20   char *c;
21
22   for (;;) {
23     int len, i;
24
25     if (!(c = get_line(fd))) break;
26     len = strlen(c) - 1;
27     for (i = 0; i <= len/2; i++) {
28       char tmp = c[i];
29
30       c[i] = c[len-i];
31       c[len-i] = tmp;
32     }
33     xputs(c);
34     free(c);
35   }
36 }
37
38 void rev_main(void)
39 {
40   loopfiles(toys.optargs, do_rev);
41 }