From: fredrik Date: Sun, 6 Nov 2005 00:16:04 +0000 (+0000) Subject: Enable passing of args to fnetnodes. X-Git-Tag: 0.1~100 X-Git-Url: http://dolda2000.com/gitweb/?p=doldaconnect.git;a=commitdiff_plain;h=efc05613724470915c842b3217ec0625dc8147a7 Enable passing of args to fnetnodes. git-svn-id: svn+ssh://svn.dolda2000.com/srv/svn/repos/src/doldaconnect@479 959494ce-11ee-0310-bf91-de5d638817bd --- diff --git a/daemon/filenet.c b/daemon/filenet.c index 0380ce4..80d9baf 100644 --- a/daemon/filenet.c +++ b/daemon/filenet.c @@ -439,10 +439,11 @@ struct fnet *findfnet(wchar_t *name) return(fnet); } -struct fnetnode *fnetinitconnect(wchar_t *name, char *addr) +struct fnetnode *fnetinitconnect(wchar_t *name, char *addr, struct wcspair *args) { struct fnet *fnet; struct fnetnode *fn; + struct wcspair *arg; if((fnet = findfnet(name)) == NULL) { @@ -450,7 +451,13 @@ struct fnetnode *fnetinitconnect(wchar_t *name, char *addr) return(NULL); } fn = newfn(fnet); + for(arg = fn->args; arg != NULL; arg = arg->next) + { + if(!wcscmp(arg->key, L"nick")) + fnetsetnick(fn, arg->val); + } getfnetnode(fn); + fn->args = args; if(netresolve(addr, (void (*)(struct sockaddr *, int, void *))resolvecb, fn) < 0) return(NULL); return(fn); diff --git a/daemon/filenet.h b/daemon/filenet.h index 476aadb..f0cb777 100644 --- a/daemon/filenet.h +++ b/daemon/filenet.h @@ -118,7 +118,7 @@ void fnetsetname(struct fnetnode *fn, wchar_t *newname); void fnetsetstate(struct fnetnode *fn, int newstate); int fnetsetnick(struct fnetnode *fn, wchar_t *newnick); struct fnet *findfnet(wchar_t *name); -struct fnetnode *fnetinitconnect(wchar_t *name, char *addr); +struct fnetnode *fnetinitconnect(wchar_t *name, char *addr, struct wcspair *args); void linkfnetnode(struct fnetnode *fn); void unlinkfnetnode(struct fnetnode *fn); void getfnetnode(struct fnetnode *fn); diff --git a/daemon/fnet-dc.c b/daemon/fnet-dc.c index 0009d54..ed10928 100644 --- a/daemon/fnet-dc.c +++ b/daemon/fnet-dc.c @@ -996,7 +996,7 @@ static void cmd_forcemove(struct socket *sk, struct fnetnode *fn, char *cmd, cha } else { freeargs = 0; } - if((newfn = fnetinitconnect(L"dc", args)) != NULL) + if((newfn = fnetinitconnect(L"dc", args, NULL)) != NULL) { linkfnetnode(newfn); putfnetnode(newfn); diff --git a/daemon/ui.c b/daemon/ui.c index 7d74fb6..94241e7 100644 --- a/daemon/ui.c +++ b/daemon/ui.c @@ -558,6 +558,7 @@ static void cmd_fnetconnect(struct socket *sk, struct uidata *data, int argc, wc char *buf; int err; struct fnetnode *fn; + struct wcspair *args; haveargs(3); havepriv(PERM_FNETCTL); @@ -566,7 +567,10 @@ static void cmd_fnetconnect(struct socket *sk, struct uidata *data, int argc, wc sq(sk, 0, L"504", L"Could not convert data to locale charset", NULL); return; } - fn = fnetinitconnect(argv[1], buf); + args = NULL; + for(i = 3; i < argc - 1; i += 2) + newwcspair(argv[i], argv[i + 1], &args); + fn = fnetinitconnect(argv[1], buf, args); err = errno; free(buf); if(fn == NULL) @@ -577,11 +581,6 @@ static void cmd_fnetconnect(struct socket *sk, struct uidata *data, int argc, wc sq(sk, 0, L"509", L"Could not parse the address", L"%%s", strerror(err), NULL); return; } - for(i = 3; i < argc - 1; i += 2) - { - if(!wcscmp(argv[i], L"nick")) - fnetsetnick(fn, argv[i + 1]); - } linkfnetnode(fn); fnetsetname(fn, argv[2]); putfnetnode(fn);