openafs-void-star-pointers-20071031
[openafs.git] / src / cmd / test / itest.c
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  * 
5  * This software has been released under the terms of the IBM Public
6  * License.  For details, see the LICENSE file in the top-level source
7  * directory or online at http://www.openafs.org/dl/license10.html
8  */
9
10 #include <afsconfig.h>
11 #include <afs/param.h>
12
13 RCSID
14     ("$Header$");
15
16 #include "cmd.h"
17 #include <stdio.h>
18 #include <com_err.h>
19
20 static int
21 cproc1(struct cmd_syndesc *as, void *arock)
22 {
23     printf("in the apple command\n");
24     return 0;
25 }
26
27 static int
28 cproc2(struct cmd_syndesc *as, void *arock)
29 {
30     register struct cmd_item *ti;
31     printf("in the pear command\n");
32     printf("number is %s\n", as->parms[0].items->data);
33     if (as->parms[1].items)
34         printf("running unauthenticated\n");
35     for (ti = as->parms[2].items; ti; ti = ti->next) {
36         printf("spotspos %s\n", ti->data);
37     }
38     if (as->parms[8].items)
39         printf("cell name %s\n", as->parms[8].items->data);
40     return 0;
41 }
42
43 static int
44 cproc3(struct cmd_syndesc *as, void *arock)
45 {
46     exit(0);
47 }
48
49 int
50 main(int argc, char **argv)
51 {
52     register struct cmd_syndesc *ts;
53     char tline[1000];
54     long tc;
55     char *tp;
56     long code;
57     char *tv[100];
58
59     initialize_CMD_error_table();
60
61     ts = cmd_CreateSyntax("apple", cproc1, NULL, "describe apple");
62
63     ts = cmd_CreateSyntax("pear", cproc2, NULL, "describe pear");
64     cmd_AddParm(ts, "-num", CMD_LIST, 0, "number of pears");
65     cmd_AddParm(ts, "-noauth", CMD_FLAG, CMD_OPTIONAL, "don't authenticate");
66     cmd_AddParm(ts, "-spotpos", CMD_LIST, CMD_OPTIONAL | CMD_EXPANDS, 0);
67     cmd_Seek(ts, 8);
68     cmd_AddParm(ts, "-cell", CMD_SINGLE, CMD_OPTIONAL, "cell name");
69     cmd_CreateAlias(ts, "alias");
70
71     ts = cmd_CreateSyntax("quit", cproc3, 0, "quit");
72
73     while (1) {
74         printf("> ");
75         tp = gets(tline);
76         if (tp == NULL)
77             break;
78         code = cmd_ParseLine(tline, tv, &tc, 100);
79         if (code) {
80             printf("itest: parsing failure: %s\n", afs_error_message(code));
81             exit(1);
82         }
83         code = cmd_Dispatch(tc, tv);
84         cmd_FreeArgv(tv);
85         if (code) {
86             printf("itest: execution failed: %s\n", afs_error_message(code));
87         }
88     }
89     return 0;
90 }