11de7b4b8SPedro F. Giffuni /*-
21de7b4b8SPedro F. Giffuni * SPDX-License-Identifier: BSD-3-Clause
31de7b4b8SPedro F. Giffuni *
4b59ba7dfSPoul-Henning Kamp * Copyright (c) 2003, Trent Nelson, <trent@arpa.com>.
5b59ba7dfSPoul-Henning Kamp * All rights reserved.
6b59ba7dfSPoul-Henning Kamp *
7b59ba7dfSPoul-Henning Kamp * Redistribution and use in source and binary forms, with or without
8b59ba7dfSPoul-Henning Kamp * modification, are permitted provided that the following conditions
9b59ba7dfSPoul-Henning Kamp * are met:
10b59ba7dfSPoul-Henning Kamp * 1. Redistributions of source code must retain the above copyright
11b59ba7dfSPoul-Henning Kamp * notice, this list of conditions and the following disclaimer.
12b59ba7dfSPoul-Henning Kamp * 2. Redistributions in binary form must reproduce the above copyright
13b59ba7dfSPoul-Henning Kamp * notice, this list of conditions and the following disclaimer in the
14b59ba7dfSPoul-Henning Kamp * documentation and/or other materials provided with the distribution.
15b59ba7dfSPoul-Henning Kamp * 3. The name of the author may not be used to endorse or promote products
16b59ba7dfSPoul-Henning Kamp * derived from this software without specific prior written permission.
17b59ba7dfSPoul-Henning Kamp *
18b59ba7dfSPoul-Henning Kamp * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
19b59ba7dfSPoul-Henning Kamp * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20b59ba7dfSPoul-Henning Kamp * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21b59ba7dfSPoul-Henning Kamp * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
22b59ba7dfSPoul-Henning Kamp * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23b59ba7dfSPoul-Henning Kamp * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24b59ba7dfSPoul-Henning Kamp * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25b59ba7dfSPoul-Henning Kamp * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26b59ba7dfSPoul-Henning Kamp * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27b59ba7dfSPoul-Henning Kamp * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28b59ba7dfSPoul-Henning Kamp * SUCH DAMAGE.
29b59ba7dfSPoul-Henning Kamp */
30b59ba7dfSPoul-Henning Kamp
31b0214723SAlexander V. Chernikov #include <sys/types.h>
32b0214723SAlexander V. Chernikov
33b59ba7dfSPoul-Henning Kamp #include "systat.h"
34b59ba7dfSPoul-Henning Kamp #include "extern.h"
35b59ba7dfSPoul-Henning Kamp #include "convtbl.h"
36b59ba7dfSPoul-Henning Kamp
37b0214723SAlexander V. Chernikov #include <stdlib.h>
38b0214723SAlexander V. Chernikov #include <string.h>
39b0214723SAlexander V. Chernikov
40b59ba7dfSPoul-Henning Kamp int curscale = SC_AUTO;
41b0214723SAlexander V. Chernikov char *matchline = NULL;
42b0214723SAlexander V. Chernikov int showpps = 0;
43b0214723SAlexander V. Chernikov int needsort = 0;
44b59ba7dfSPoul-Henning Kamp
45b59ba7dfSPoul-Henning Kamp int
ifcmd(const char * cmd,const char * args)46b59ba7dfSPoul-Henning Kamp ifcmd(const char *cmd, const char *args)
47b59ba7dfSPoul-Henning Kamp {
48aee371e3SYaroslav Tykhiy int scale;
49f3014885SYaroslav Tykhiy
5033dc5491SDavid Malone if (prefix(cmd, "scale")) {
51aee371e3SYaroslav Tykhiy if ((scale = get_scale(args)) != -1)
52aee371e3SYaroslav Tykhiy curscale = scale;
53b59ba7dfSPoul-Henning Kamp else {
54b59ba7dfSPoul-Henning Kamp move(CMDLINE, 0);
55b59ba7dfSPoul-Henning Kamp clrtoeol();
56aee371e3SYaroslav Tykhiy addstr("what scale? ");
57aee371e3SYaroslav Tykhiy addstr(get_helplist());
58b59ba7dfSPoul-Henning Kamp }
59b0214723SAlexander V. Chernikov } else if (prefix(cmd, "match")) {
60b0214723SAlexander V. Chernikov if (args != NULL && *args != '\0' && memcmp(args, "*", 2) != 0) {
61b0214723SAlexander V. Chernikov /* We got a valid match line */
62297c1ec1SAlexander V. Chernikov if (matchline != NULL)
63b0214723SAlexander V. Chernikov free(matchline);
64b0214723SAlexander V. Chernikov needsort = 1;
65b0214723SAlexander V. Chernikov matchline = strdup(args);
66b0214723SAlexander V. Chernikov } else {
67b0214723SAlexander V. Chernikov /* Empty or * pattern, turn filtering off */
68297c1ec1SAlexander V. Chernikov if (matchline != NULL)
69b0214723SAlexander V. Chernikov free(matchline);
70b0214723SAlexander V. Chernikov needsort = 1;
71b0214723SAlexander V. Chernikov matchline = NULL;
72b0214723SAlexander V. Chernikov }
73b0214723SAlexander V. Chernikov } else if (prefix(cmd, "pps"))
74b0214723SAlexander V. Chernikov showpps = !showpps;
75*4b9ac8a0SMichael Reifenberger else
76*4b9ac8a0SMichael Reifenberger return (0);
77b0214723SAlexander V. Chernikov
78f3014885SYaroslav Tykhiy return (1);
79b59ba7dfSPoul-Henning Kamp }
80