blob: cfa352eb817f2bca9b8178381dc9d7c9539b243c [file] [log] [blame]
/* 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);
}
}