Fix "seq 1 1".
[oweals/busybox.git] / coreutils / seq.c
1 /* vi: set sw=4 ts=4: */
2 /*
3  * seq implementation for busybox
4  *
5  * Copyright (C) 2004, Glenn McGrath
6  *
7  * Licensed under the GPL v2, see the file LICENSE in this tarball.
8  */
9
10 #include <stdio.h>
11 #include <stdlib.h>
12 #include "busybox.h"
13
14 int seq_main(int argc, char **argv)
15 {
16         double last, first, increment, i;
17         
18         first = increment = 1;
19         switch (argc) {
20                 case 4:
21                         increment=atof(argv[2]);
22                 case 3:
23                         first=atof(argv[1]);
24                 case 2:
25                         last=atof(argv[argc -1]);
26                         break;
27                 default:
28                         bb_show_usage();
29         }
30
31         /* You should note that this is pos-5.0.91 semantics, -- FK. */
32         if (first <= last ? increment > 0 : increment < 0) {
33                 for (i = first;
34                          (first <= last) ? (i <= last) : (i >= last);
35                          i += increment)
36                 {
37                                 printf("%g\n", i);
38                 }
39         }
40
41         return EXIT_SUCCESS;
42 }