From 73a20f355102b715e1ce5f5d268539ee932de708 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Thu, 23 Feb 2006 19:54:48 +0000 Subject: "sed 2 -2 10" was very unhappy. Made the thing bigger fixing it, fiddled a bit to get the size back down as much as I could... --- coreutils/seq.c | 53 ++++++++++++++++++++++------------------------------- 1 file changed, 22 insertions(+), 31 deletions(-) (limited to 'coreutils/seq.c') diff --git a/coreutils/seq.c b/coreutils/seq.c index 8006be83d..51e3add81 100644 --- a/coreutils/seq.c +++ b/coreutils/seq.c @@ -2,18 +2,9 @@ /* * seq implementation for busybox * - * This program is free software; you can redistribute it and/or modify - * it under the terms of version 2 of the GNU General Public License as - * published by the Free Software Foundation. + * Copyright (C) 2004, Glenn McGrath * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Library General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * Licensed under the GPL v2, see the file LICENSE in this tarball. */ #include @@ -22,29 +13,29 @@ extern int seq_main(int argc, char **argv) { - double last; - double first = 1; - double increment = 1; - double i; - - if (argc == 4) { - first = atof(argv[1]); - increment = atof(argv[2]); - } else if (argc == 3) { - first = atof(argv[1]); - } else if (argc != 2) { - bb_show_usage(); + double last, first, increment, i; + + first = increment = 1; + switch (argc) { + case 4: + increment=atof(argv[2]); + case 3: + first=atof(argv[1]); + case 2: + last=atof(argv[argc -1]); + break; + default: + bb_show_usage(); } - last = atof(argv[argc - 1]); /* You should note that this is pos-5.0.91 semantics, -- FK. */ - if ((first > last) && (increment > 0)) { - return EXIT_SUCCESS; - } - - for (i = first; ((first <= last) ? (i <= last) : (i >= last)); - i += increment) { - printf("%g\n", i); + if (first < last ? increment > 0 : increment < 0) { + for (i = first; + (first < last) ? (i <= last) : (i >= last); + i += increment) + { + printf("%g\n", i); + } } return EXIT_SUCCESS; -- cgit v1.2.3