| /* Copyright (c) 2014 The Regents of the University of California |
| * Barret Rhoden <brho@cs.berkeley.edu> |
| * See LICENSE for details. |
| * |
| * srv DIALSTRING SRVNAME |
| * |
| * Opens DIALSTRING and drops its chan in #s at SRVNAME */ |
| |
| #include <stdlib.h> |
| #include <stdio.h> |
| #include <string.h> |
| #include <unistd.h> |
| #include <assert.h> |
| #include <parlib/net.h> |
| #include <iplib/iplib.h> |
| |
| #include <sys/types.h> |
| #include <sys/stat.h> |
| #include <fcntl.h> |
| |
| int main(int argc, char *argv[]) |
| { |
| char *dialstring, *srvname; |
| int dfd, srvfd, ret; |
| |
| #define buf_len 128 |
| char buf[buf_len]; |
| |
| if (argc != 3) { |
| printf("Usage: %s DIALSTRING SRVNAME\n", argv[0]); |
| exit(-1); |
| } |
| dialstring = argv[1]; |
| srvname = argv[2]; |
| |
| dfd = dial9(dialstring, 0, 0, 0, 0); |
| if (dfd < 0) { |
| perror("Unable to dial!"); |
| exit(-1); |
| } |
| ret = snprintf(buf, buf_len, "#srv/%s", srvname); |
| if (snprintf_error(ret, buf_len)) { |
| printf("srvname too long\n"); |
| exit(-1); |
| } |
| srvfd = open(buf, O_RDWR | O_EXCL | O_CREAT, 0666); |
| if (srvfd < 0) { |
| perror("Can't create srvvile"); |
| close(dfd); |
| exit(-1); |
| } |
| ret = snprintf(buf, buf_len, "%d", dfd); |
| ret = write(srvfd, buf, ret); |
| if (ret < 0) { |
| perror("Failed to post fd"); |
| close(dfd); |
| exit(-1); |
| } |
| } |