configuration fixes
[btb/d2x.git] / main / cmd.c
1 #include <conf.h>
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <string.h>
5 #include <ctype.h>
6
7 #include "pstypes.h"
8 #include "cmd.h"
9 #include "console.h"
10 #include "error.h"
11
12 /* ======
13  * cmd_parse - Parse an input string
14  * ======
15  */
16 void cmd_parse(char *input)
17 {
18         char buffer[CMD_MAX_LENGTH];
19         char *tokens[CMD_MAX_TOKENS];
20         int num_tokens;
21         int i, l;
22
23         Assert(input != NULL);
24         
25         /* Strip leading spaces */
26         for (i=0; isspace(input[i]); i++) ;
27         strncpy( buffer, &input[i], CMD_MAX_LENGTH );
28
29         printf("lead strip \"%s\"\n",buffer);
30         l = strlen(buffer);
31         /* If command is empty, give up */
32         if (l==0) return;
33
34         /* Strip trailing spaces */
35         for (i=l-1; i>0 && isspace(buffer[i]); i--) ;
36         buffer[i+1] = 0;
37         printf("trail strip \"%s\"\n",buffer);
38
39         /* Split into tokens */
40         l = strlen(buffer);
41         num_tokens = 1;
42
43         tokens[0] = buffer;
44         for (i=1; i<l; i++) {
45                 if (isspace(buffer[i])) {
46                         buffer[i] = 0;
47                         while (isspace(buffer[i+1]) && (i+1 < l)) i++;
48                         tokens[num_tokens++] = &buffer[i+1];
49                 }
50         }
51
52         /* Check for matching commands */
53
54         /* Otherwise */
55         printf("n_tokens = %d\n", num_tokens);
56         if (num_tokens>1) {
57                 printf("setting %s %s\n",tokens[0], tokens[1]);
58           cvar_set(tokens[0], tokens[1]);
59         } else {
60           con_printf(CON_NORMAL, "%s: %f\n", tokens[0], cvar(tokens[0]));
61         }
62 }