Statistics
| Branch: | Revision:

root / cmd.h @ 39ac8455

History | View | Annotate | Download (2 kB)

1 e3aff4f6 aliguori
/*
2 e3aff4f6 aliguori
 * Copyright (c) 2000-2005 Silicon Graphics, Inc.
3 e3aff4f6 aliguori
 * All Rights Reserved.
4 e3aff4f6 aliguori
 *
5 e3aff4f6 aliguori
 * This program is free software; you can redistribute it and/or
6 e3aff4f6 aliguori
 * modify it under the terms of the GNU General Public License as
7 e3aff4f6 aliguori
 * published by the Free Software Foundation.
8 e3aff4f6 aliguori
 *
9 e3aff4f6 aliguori
 * This program is distributed in the hope that it would be useful,
10 e3aff4f6 aliguori
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 e3aff4f6 aliguori
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 e3aff4f6 aliguori
 * GNU General Public License for more details.
13 e3aff4f6 aliguori
 *
14 e3aff4f6 aliguori
 * You should have received a copy of the GNU General Public License
15 8167ee88 Blue Swirl
 * along with this program; if not, see <http://www.gnu.org/licenses/>.
16 e3aff4f6 aliguori
 */
17 e3aff4f6 aliguori
#ifndef __COMMAND_H__
18 e3aff4f6 aliguori
#define __COMMAND_H__
19 e3aff4f6 aliguori
20 e3aff4f6 aliguori
#define CMD_FLAG_GLOBAL        ((int)0x80000000)        /* don't iterate "args" */
21 e3aff4f6 aliguori
22 e3aff4f6 aliguori
typedef int (*cfunc_t)(int argc, char **argv);
23 e3aff4f6 aliguori
typedef void (*helpfunc_t)(void);
24 e3aff4f6 aliguori
25 e3aff4f6 aliguori
typedef struct cmdinfo {
26 e3aff4f6 aliguori
        const char        *name;
27 e3aff4f6 aliguori
        const char        *altname;
28 e3aff4f6 aliguori
        cfunc_t                cfunc;
29 e3aff4f6 aliguori
        int                argmin;
30 e3aff4f6 aliguori
        int                argmax;
31 e3aff4f6 aliguori
        int                canpush;
32 e3aff4f6 aliguori
        int                flags;
33 e3aff4f6 aliguori
        const char        *args;
34 e3aff4f6 aliguori
        const char        *oneline;
35 e3aff4f6 aliguori
        helpfunc_t      help;
36 e3aff4f6 aliguori
} cmdinfo_t;
37 e3aff4f6 aliguori
38 e3aff4f6 aliguori
extern cmdinfo_t        *cmdtab;
39 e3aff4f6 aliguori
extern int                ncmds;
40 e3aff4f6 aliguori
41 64b85a8f Blue Swirl
void help_init(void);
42 64b85a8f Blue Swirl
void quit_init(void);
43 e3aff4f6 aliguori
44 e3aff4f6 aliguori
typedef int (*argsfunc_t)(int index);
45 e3aff4f6 aliguori
typedef int (*checkfunc_t)(const cmdinfo_t *ci);
46 e3aff4f6 aliguori
47 64b85a8f Blue Swirl
void add_command(const cmdinfo_t *ci);
48 64b85a8f Blue Swirl
void add_user_command(char *optarg);
49 64b85a8f Blue Swirl
void add_args_command(argsfunc_t af);
50 64b85a8f Blue Swirl
void add_check_command(checkfunc_t cf);
51 e3aff4f6 aliguori
52 64b85a8f Blue Swirl
const cmdinfo_t *find_command(const char *cmd);
53 e3aff4f6 aliguori
54 64b85a8f Blue Swirl
void command_loop(void);
55 64b85a8f Blue Swirl
int command_usage(const cmdinfo_t *ci);
56 64b85a8f Blue Swirl
int command(const cmdinfo_t *ci, int argc, char **argv);
57 e3aff4f6 aliguori
58 e3aff4f6 aliguori
/* from input.h */
59 64b85a8f Blue Swirl
char **breakline(char *input, int *count);
60 64b85a8f Blue Swirl
void doneline(char *input, char **vec);
61 64b85a8f Blue Swirl
char *fetchline(void);
62 e3aff4f6 aliguori
63 64b85a8f Blue Swirl
long long cvtnum(char *s);
64 64b85a8f Blue Swirl
void cvtstr(double value, char *str, size_t sz);
65 e3aff4f6 aliguori
66 64b85a8f Blue Swirl
struct timeval tsub(struct timeval t1, struct timeval t2);
67 64b85a8f Blue Swirl
double tdiv(double value, struct timeval tv);
68 e3aff4f6 aliguori
69 e3aff4f6 aliguori
enum {
70 e3aff4f6 aliguori
        DEFAULT_TIME                = 0x0,
71 e3aff4f6 aliguori
        TERSE_FIXED_TIME        = 0x1,
72 e3aff4f6 aliguori
        VERBOSE_FIXED_TIME        = 0x2
73 e3aff4f6 aliguori
};
74 e3aff4f6 aliguori
75 64b85a8f Blue Swirl
void timestr(struct timeval *tv, char *str, size_t sz, int flags);
76 e3aff4f6 aliguori
77 856ae5c3 blueswir1
extern char *progname;
78 856ae5c3 blueswir1
79 e3aff4f6 aliguori
#endif        /* __COMMAND_H__ */