Deleted Added
full compact
convtbl.c (164671) convtbl.c (164672)
1/*
2 * Copyright (c) 2003, Trent Nelson, <trent@arpa.com>.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 11 unchanged lines hidden (view full) ---

20 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 * SUCH DAMAGE.
27 *
1/*
2 * Copyright (c) 2003, Trent Nelson, <trent@arpa.com>.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 11 unchanged lines hidden (view full) ---

20 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 * SUCH DAMAGE.
27 *
28 * $FreeBSD: head/usr.bin/systat/convtbl.c 164671 2006-11-27 15:26:26Z yar $
28 * $FreeBSD: head/usr.bin/systat/convtbl.c 164672 2006-11-27 16:14:32Z yar $
29 */
30
31#include <sys/types.h>
29 */
30
31#include <sys/types.h>
32#include <unistd.h>
32#include <stdlib.h>
33#include <string.h>
33#include "convtbl.h"
34
35struct convtbl convtbl[] = {
34#include "convtbl.h"
35
36struct convtbl convtbl[] = {
36 /* mul, scale, str */
37 [SC_BYTE] = { BYTE, BYTES, "bytes" },
38 [SC_KILOBYTE] = { BYTE, KILO, "KB" },
39 [SC_MEGABYTE] = { BYTE, MEGA, "MB" },
40 [SC_GIGABYTE] = { BYTE, GIGA, "GB" },
37 /* mul, scale, str, name */
38 [SC_BYTE] = { BYTE, BYTES, "B", "byte" },
39 [SC_KILOBYTE] = { BYTE, KILO, "KB", "kbyte" },
40 [SC_MEGABYTE] = { BYTE, MEGA, "MB", "mbyte" },
41 [SC_GIGABYTE] = { BYTE, GIGA, "GB", "gbyte" },
41
42
42 [SC_BIT] = { BIT, BITS, "b" },
43 [SC_KILOBIT] = { BIT, KILO, "Kb" },
44 [SC_MEGABIT] = { BIT, MEGA, "Mb" },
45 [SC_GIGABIT] = { BIT, GIGA, "Gb" },
43 [SC_BIT] = { BIT, BITS, "b", "bit" },
44 [SC_KILOBIT] = { BIT, KILO, "Kb", "kbit" },
45 [SC_MEGABIT] = { BIT, MEGA, "Mb", "mbit" },
46 [SC_GIGABIT] = { BIT, GIGA, "Gb", "gbit" },
46
47
47 [SC_AUTO] = { 0, 0, "" }
48 [SC_AUTO] = { 0, 0, "", "auto" }
48};
49
49};
50
50
51static
52struct convtbl *
53get_tbl_ptr(const uintmax_t size, const int scale)
54{
55 uintmax_t tmp;
56 int idx;
57
58 /* If our index is out of range, default to auto-scaling. */

--- 26 unchanged lines hidden (view full) ---

85const char *
86get_string(const uintmax_t size, const int scale)
87{
88 struct convtbl *tp;
89
90 tp = get_tbl_ptr(size, scale);
91 return (tp->str);
92}
51static
52struct convtbl *
53get_tbl_ptr(const uintmax_t size, const int scale)
54{
55 uintmax_t tmp;
56 int idx;
57
58 /* If our index is out of range, default to auto-scaling. */

--- 26 unchanged lines hidden (view full) ---

85const char *
86get_string(const uintmax_t size, const int scale)
87{
88 struct convtbl *tp;
89
90 tp = get_tbl_ptr(size, scale);
91 return (tp->str);
92}
93
94int
95get_scale(const char *name)
96{
97 int i;
98
99 for (i = 0; i <= SC_AUTO; i++)
100 if (strcmp(convtbl[i].name, name) == 0)
101 return (i);
102 return (-1);
103}
104
105const char *
106get_helplist()
107{
108 int i;
109 size_t len;
110 static char *buf;
111
112 if (buf == NULL) {
113 len = 0;
114 for (i = 0; i <= SC_AUTO; i++)
115 len += strlen(convtbl[i].name) + 2;
116 if ((buf = malloc(len)) != NULL) {
117 buf[0] = '\0';
118 for (i = 0; i <= SC_AUTO; i++) {
119 strcat(buf, convtbl[i].name);
120 if (i < SC_AUTO)
121 strcat(buf, ", ");
122 }
123 } else
124 return ("");
125 }
126 return (buf);
127}