diff options
| author | bug1 <bug1@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2004-07-23 06:43:29 +0000 |
|---|---|---|
| committer | bug1 <bug1@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2004-07-23 06:43:29 +0000 |
| commit | f385a6f75dcd2817d4db9f700749205e009a5240 (patch) | |
| tree | fa4f1776402e700ed915f9b2363099c42bda8e84 /coreutils | |
| parent | ac89b1090f78b26ea006b931b1eea51cfe40ec98 (diff) | |
| download | busybox-w32-f385a6f75dcd2817d4db9f700749205e009a5240.tar.gz busybox-w32-f385a6f75dcd2817d4db9f700749205e009a5240.tar.bz2 busybox-w32-f385a6f75dcd2817d4db9f700749205e009a5240.zip | |
Patch from Felipe Kellermann, fix endless loop when first > last and
increment > 0.
git-svn-id: svn://busybox.net/trunk/busybox@9010 69ca8d6d-28ef-0310-b511-8ec308f3f277
Diffstat (limited to 'coreutils')
| -rw-r--r-- | coreutils/seq.c | 19 |
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 | } |
