aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn L McGrath <bug1@ihug.co.nz>2004-07-23 06:43:29 +0000
committerGlenn L McGrath <bug1@ihug.co.nz>2004-07-23 06:43:29 +0000
commitefc6bf63651496ad5a87aa8b902615e4949c0e3e (patch)
treefa4f1776402e700ed915f9b2363099c42bda8e84
parentc0dd26f68d3b7956beed6f32088f73356fe2aa16 (diff)
downloadbusybox-w32-efc6bf63651496ad5a87aa8b902615e4949c0e3e.tar.gz
busybox-w32-efc6bf63651496ad5a87aa8b902615e4949c0e3e.tar.bz2
busybox-w32-efc6bf63651496ad5a87aa8b902615e4949c0e3e.zip
Patch from Felipe Kellermann, fix endless loop when first > last and
increment > 0.
-rw-r--r--coreutils/seq.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/coreutils/seq.c b/coreutils/seq.c
index 8a2a80c14..8006be83d 100644
--- a/coreutils/seq.c
+++ b/coreutils/seq.c
@@ -1,4 +1,7 @@
1/* vi: set sw=4 ts=4: */
1/* 2/*
3 * seq implementation for busybox
4 *
2 * This program is free software; you can redistribute it and/or modify 5 * This program is free software; you can redistribute it and/or modify
3 * it under the terms of version 2 of the GNU General Public License as 6 * it under the terms of version 2 of the GNU General Public License as
4 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
@@ -27,18 +30,22 @@ extern int seq_main(int argc, char **argv)
27 if (argc == 4) { 30 if (argc == 4) {
28 first = atof(argv[1]); 31 first = atof(argv[1]);
29 increment = atof(argv[2]); 32 increment = atof(argv[2]);
30 } 33 } else if (argc == 3) {
31 else if (argc == 3) {
32 first = atof(argv[1]); 34 first = atof(argv[1]);
33 } 35 } else if (argc != 2) {
34 else if (argc != 2) {
35 bb_show_usage(); 36 bb_show_usage();
36 } 37 }
37 last = atof(argv[argc - 1]); 38 last = atof(argv[argc - 1]);
38 39
39 for (i = first; ((first <= last) ? (i <= last): (i >= last));i += increment) { 40 /* You should note that this is pos-5.0.91 semantics, -- FK. */
41 if ((first > last) && (increment > 0)) {
42 return EXIT_SUCCESS;
43 }
44
45 for (i = first; ((first <= last) ? (i <= last) : (i >= last));
46 i += increment) {
40 printf("%g\n", i); 47 printf("%g\n", i);
41 } 48 }
42 49
43 return(EXIT_SUCCESS); 50 return EXIT_SUCCESS;
44} 51}