Enable passing of args to fnetnodes.
authorfredrik <fredrik@959494ce-11ee-0310-bf91-de5d638817bd>
Sun, 6 Nov 2005 00:16:04 +0000 (00:16 +0000)
committerfredrik <fredrik@959494ce-11ee-0310-bf91-de5d638817bd>
Sun, 6 Nov 2005 00:16:04 +0000 (00:16 +0000)
git-svn-id: svn+ssh://svn.dolda2000.com/srv/svn/repos/src/doldaconnect@479 959494ce-11ee-0310-bf91-de5d638817bd

daemon/filenet.c
daemon/filenet.h
daemon/fnet-dc.c
daemon/ui.c

index 0380ce4..80d9baf 100644 (file)
@@ -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);
index 476aadb..f0cb777 100644 (file)
@@ -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);
index 0009d54..ed10928 100644 (file)
@@ -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);
index 7d74fb6..94241e7 100644 (file)
@@ -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);