Implement list-devices and list-partitions.
[libguestfs.git] / daemon / stubs.c
1 /* libguestfs generated file
2  * WARNING: THIS FILE IS GENERATED BY 'src/generator.ml'.
3  * ANY CHANGES YOU MAKE TO THIS FILE WILL BE LOST.
4  *
5  * Copyright (C) 2009 Red Hat Inc.
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License along
18  * with this program; if not, write to the Free Software Foundation, Inc.,
19  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20  */
21
22 #include <rpc/types.h>
23 #include <rpc/xdr.h>
24 #include "daemon.h"
25 #include "../src/guestfs_protocol.h"
26 #include "actions.h"
27
28 static void mount_stub (XDR *xdr_in)
29 {
30   int r;
31   struct guestfs_mount_args args;
32   const char *device;
33   const char *mountpoint;
34
35   memset (&args, 0, sizeof args);
36
37   if (!xdr_guestfs_mount_args (xdr_in, &args)) {
38     reply_with_error ("mount: daemon failed to decode procedure arguments");
39     return;
40   }
41   device = args.device;
42   mountpoint = args.mountpoint;
43
44   r = do_mount (device, mountpoint);
45   if (r == -1)
46     /* do_mount has already called reply_with_error, so just return */
47     return;
48
49   reply (NULL, NULL);
50 }
51
52 static void sync_stub (XDR *xdr_in)
53 {
54   int r;
55
56   r = do_sync ();
57   if (r == -1)
58     /* do_sync has already called reply_with_error, so just return */
59     return;
60
61   reply (NULL, NULL);
62 }
63
64 static void touch_stub (XDR *xdr_in)
65 {
66   int r;
67   struct guestfs_touch_args args;
68   const char *path;
69
70   memset (&args, 0, sizeof args);
71
72   if (!xdr_guestfs_touch_args (xdr_in, &args)) {
73     reply_with_error ("touch: daemon failed to decode procedure arguments");
74     return;
75   }
76   path = args.path;
77
78   r = do_touch (path);
79   if (r == -1)
80     /* do_touch has already called reply_with_error, so just return */
81     return;
82
83   reply (NULL, NULL);
84 }
85
86 static void cat_stub (XDR *xdr_in)
87 {
88   char *r;
89   struct guestfs_cat_args args;
90   const char *path;
91
92   memset (&args, 0, sizeof args);
93
94   if (!xdr_guestfs_cat_args (xdr_in, &args)) {
95     reply_with_error ("cat: daemon failed to decode procedure arguments");
96     return;
97   }
98   path = args.path;
99
100   r = do_cat (path);
101   if (r == NULL)
102     /* do_cat has already called reply_with_error, so just return */
103     return;
104
105   struct guestfs_cat_ret ret;
106   ret.content = r;
107   reply ((xdrproc_t) &xdr_guestfs_cat_ret, (char *) &ret);
108   free (r);
109 }
110
111 static void ll_stub (XDR *xdr_in)
112 {
113   char *r;
114   struct guestfs_ll_args args;
115   const char *directory;
116
117   memset (&args, 0, sizeof args);
118
119   if (!xdr_guestfs_ll_args (xdr_in, &args)) {
120     reply_with_error ("ll: daemon failed to decode procedure arguments");
121     return;
122   }
123   directory = args.directory;
124
125   r = do_ll (directory);
126   if (r == NULL)
127     /* do_ll has already called reply_with_error, so just return */
128     return;
129
130   struct guestfs_ll_ret ret;
131   ret.listing = r;
132   reply ((xdrproc_t) &xdr_guestfs_ll_ret, (char *) &ret);
133   free (r);
134 }
135
136 static void ls_stub (XDR *xdr_in)
137 {
138   char **r;
139   struct guestfs_ls_args args;
140   const char *directory;
141
142   memset (&args, 0, sizeof args);
143
144   if (!xdr_guestfs_ls_args (xdr_in, &args)) {
145     reply_with_error ("ls: daemon failed to decode procedure arguments");
146     return;
147   }
148   directory = args.directory;
149
150   r = do_ls (directory);
151   if (r == NULL)
152     /* do_ls has already called reply_with_error, so just return */
153     return;
154
155   struct guestfs_ls_ret ret;
156   ret.listing.listing_len = count_strings (r);
157   ret.listing.listing_val = r;
158   reply ((xdrproc_t) &xdr_guestfs_ls_ret, (char *) &ret);
159   free_strings (r);
160 }
161
162 static void list_devices_stub (XDR *xdr_in)
163 {
164   char **r;
165
166   r = do_list_devices ();
167   if (r == NULL)
168     /* do_list_devices has already called reply_with_error, so just return */
169     return;
170
171   struct guestfs_list_devices_ret ret;
172   ret.devices.devices_len = count_strings (r);
173   ret.devices.devices_val = r;
174   reply ((xdrproc_t) &xdr_guestfs_list_devices_ret, (char *) &ret);
175   free_strings (r);
176 }
177
178 static void list_partitions_stub (XDR *xdr_in)
179 {
180   char **r;
181
182   r = do_list_partitions ();
183   if (r == NULL)
184     /* do_list_partitions has already called reply_with_error, so just return */
185     return;
186
187   struct guestfs_list_partitions_ret ret;
188   ret.partitions.partitions_len = count_strings (r);
189   ret.partitions.partitions_val = r;
190   reply ((xdrproc_t) &xdr_guestfs_list_partitions_ret, (char *) &ret);
191   free_strings (r);
192 }
193
194 void dispatch_incoming_message (XDR *xdr_in)
195 {
196   switch (proc_nr) {
197     case GUESTFS_PROC_MOUNT:
198       mount_stub (xdr_in);
199       break;
200     case GUESTFS_PROC_SYNC:
201       sync_stub (xdr_in);
202       break;
203     case GUESTFS_PROC_TOUCH:
204       touch_stub (xdr_in);
205       break;
206     case GUESTFS_PROC_CAT:
207       cat_stub (xdr_in);
208       break;
209     case GUESTFS_PROC_LL:
210       ll_stub (xdr_in);
211       break;
212     case GUESTFS_PROC_LS:
213       ls_stub (xdr_in);
214       break;
215     case GUESTFS_PROC_LIST_DEVICES:
216       list_devices_stub (xdr_in);
217       break;
218     case GUESTFS_PROC_LIST_PARTITIONS:
219       list_partitions_stub (xdr_in);
220       break;
221     default:
222       reply_with_error ("dispatch_incoming_message: unknown procedure number %d", proc_nr);
223   }
224 }