Added foundations for command interface and cleaned up
[olsrd.git] / src / olsr_switch / ohs_cmd.c
1
2 /*
3  * The olsr.org Optimized Link-State Routing daemon(olsrd)
4  * Copyright (c) 2005, Andreas T√łnnesen(andreto@olsr.org)
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without 
8  * modification, are permitted provided that the following conditions 
9  * are met:
10  *
11  * * Redistributions of source code must retain the above copyright 
12  *   notice, this list of conditions and the following disclaimer.
13  * * Redistributions in binary form must reproduce the above copyright 
14  *   notice, this list of conditions and the following disclaimer in 
15  *   the documentation and/or other materials provided with the 
16  *   distribution.
17  * * Neither the name of olsr.org, olsrd nor the names of its 
18  *   contributors may be used to endorse or promote products derived 
19  *   from this software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
22  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
23  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
24  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
25  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
26  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
27  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
28  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
29  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
31  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
32  * POSSIBILITY OF SUCH DAMAGE.
33  *
34  * Visit http://www.olsr.org for more information.
35  *
36  * If you find this software useful feel free to make a donation
37  * to the project. For more information see the website or contact
38  * the copyright holders.
39  *
40  * $Id: ohs_cmd.c,v 1.1 2005/05/30 19:17:20 kattemat Exp $
41  */
42
43 #include "olsr_host_switch.h"
44 #include "commands.h"
45 #include <string.h>
46
47 int
48 ohs_cmd_help(FILE *handle)
49 {
50   int i;
51
52   printf("Olsrd host switch version %s\n", OHS_VERSION);
53   printf("Available commands:\n");
54
55   for(i = 0; ohs_commands[i].cmd; i++)
56     {
57       if(ohs_commands[i].helptext_brief)
58         printf("%s - %s\n", 
59                ohs_commands[i].cmd,
60                ohs_commands[i].helptext_brief);
61     }
62   return i;
63 }
64
65 int
66 ohs_cmd_exit(FILE *handle)
67 {
68
69   printf("Exitting... bye-bye!\n");
70
71 #ifdef WIN32
72   SignalHandler(0);
73 #else
74   ohs_close(0);
75 #endif
76
77   return 0;
78 }
79
80 int
81 ohs_parse_command(FILE *handle)
82 {
83   char input_data[100];
84   int i;
85
86   fscanf(handle, "%s", input_data);
87
88   printf("ohs_parse_command: %s\n", input_data);
89   for(i = 0; ohs_commands[i].cmd; i++)
90     {
91       if(!strcmp(input_data, ohs_commands[i].cmd))
92         {
93           if(ohs_commands[i].cmd_cb)
94             {
95               ohs_commands[i].cmd_cb(handle);
96             }
97           else
98             {
99               printf("No action registered on cmd %s!\n", input_data);
100             }
101           break;
102         }
103     }
104   
105   if(!ohs_commands[i].cmd)
106     {
107       printf("%s: no such cmd!\n", input_data);
108     }
109
110   i = 0;
111   /* Drain */
112   while(fgetc(handle) != '\n')
113     {
114       i++;
115     }
116
117   return i;
118 }