From 3a9241add947cb6d24b5de7a8927517426a78795 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Sat, 25 Aug 2012 14:25:22 -0500 Subject: Move commands into "posix", "lsb", and "other" menus/directories. --- toys/comm.c | 85 ------------------------------------------------------------- 1 file changed, 85 deletions(-) delete mode 100644 toys/comm.c (limited to 'toys/comm.c') diff --git a/toys/comm.c b/toys/comm.c deleted file mode 100644 index 1c2267ac..00000000 --- a/toys/comm.c +++ /dev/null @@ -1,85 +0,0 @@ -/* vi: set sw=4 ts=4: - * - * comm.c - select or reject lines common to two files - * - * Copyright 2012 Ilya Kuzmich - * - * See http://pubs.opengroup.org/onlinepubs/009695399/utilities/comm.html - -// <# and ># take single digit, so 321 define flags -USE_COMM(NEWTOY(comm, "<2>2321", TOYFLAG_USR|TOYFLAG_BIN)) - -config COMM - bool "comm" - default y - help - usage: comm [-123] FILE1 FILE2 - - Reads FILE1 and FILE2, which should be ordered, and produces three text - columns as output: lines only in FILE1; lines only in FILE2; and lines - in both files. Filename "-" is a synonym for stdin. - - -1 suppress the output column of lines unique to FILE1 - -2 suppress the output column of lines unique to FILE2 - -3 suppress the output column of lines duplicated in FILE1 and FILE2 -*/ - -#include "toys.h" - -#define FLAG_1 1 -#define FLAG_2 2 -#define FLAG_3 4 - -static void writeline(const char *line, int col) -{ - if (col == 0 && toys.optflags & FLAG_1) return; - else if (col == 1) { - if (toys.optflags & FLAG_2) return; - if (!(toys.optflags & FLAG_1)) putchar('\t'); - } else if (col == 2) { - if (toys.optflags & FLAG_3) return; - if (!(toys.optflags & FLAG_1)) putchar('\t'); - if (!(toys.optflags & FLAG_2)) putchar('\t'); - } - puts(line); -} - -void comm_main(void) -{ - int file[2]; - char *line[2]; - int i; - - if (toys.optflags == 7) return; - - for (i = 0; i < 2; i++) { - file[i] = strcmp("-", toys.optargs[i]) ? xopen(toys.optargs[i], O_RDONLY) : 0; - line[i] = get_line(file[i]); - } - - while (line[0] && line[1]) { - int order = strcmp(line[0], line[1]); - - if (order == 0) { - writeline(line[0], 2); - for (i = 0; i < 2; i++) { - free(line[i]); - line[i] = get_line(file[i]); - } - } else { - i = order < 0 ? 0 : 1; - writeline(line[i], i); - free(line[i]); - line[i] = get_line(file[i]); - } - } - - /* print rest of the longer file */ - for (i = line[0] ? 0 : 1; line[i];) { - writeline(line[i], i); - free(line[i]); - line[i] = get_line(file[i]); - } - - if (CFG_TOYBOX_FREE) for (i = 0; i < 2; i--) xclose(file[i]); -} -- cgit v1.2.3