Need to cd into user/utest to do proper make clean
[akaros.git] / tests / srv.c
1 /* Copyright (c) 2014 The Regents of the University of California
2  * Barret Rhoden <brho@cs.berkeley.edu>
3  * See LICENSE for details.
4  *
5  * srv DIALSTRING SRVNAME
6  *
7  * Opens DIALSTRING and drops its chan in #s at SRVNAME */
8
9 #include <stdlib.h>
10 #include <stdio.h>
11 #include <string.h>
12 #include <unistd.h>
13 #include <assert.h>
14 #include <net.h>
15
16 #include <sys/types.h>
17 #include <sys/stat.h>
18 #include <fcntl.h>
19
20 int main(int argc, char *argv[])
21 {
22         char *dialstring, *srvname;
23         int dfd, srvfd, ret;
24
25         #define buf_len 128
26         char buf[buf_len];
27
28         if (argc != 3) {
29                 printf("Usage: %s DIALSTRING SRVNAME\n", argv[0]);
30                 exit(-1);
31         }
32         dialstring = argv[1];
33         srvname = argv[2];
34
35         dfd = dial(dialstring, 0, 0, 0);
36         if (dfd < 0) {
37                 perror("Unable to dial!");
38                 exit(-1);
39         }
40         ret = snprintf(buf, buf_len, "#s/%s", srvname);
41         if (snprintf_overflow(ret, buf, buf_len)) {
42                 printf("srvname too long\n");
43                 exit(-1);
44         }
45         srvfd = open(buf, O_RDWR | O_EXCL | O_CREAT, 0666);
46         if (srvfd < 0) {
47                 perror("Can't create srvvile");
48                 close(dfd);
49                 exit(-1);
50         }
51         ret = snprintf(buf, buf_len, "%d", dfd);
52         ret = write(srvfd, buf, ret);
53         if (ret < 0) {
54                 perror("Failed to post fd");
55                 close(dfd);
56                 exit(-1);
57         }
58 }