void freetransfer(struct transfer *transfer)
{
- struct transarg *ta;
-
if(transfer == transfers)
transfers = transfer->next;
if(transfer->next != NULL)
CBCHAINFREE(transfer, trans_p);
CBCHAINFREE(transfer, trans_destroy);
CBCHAINFREE(transfer, trans_filterout);
- while((ta = transfer->args) != NULL)
- {
- transfer->args = ta->next;
- free(ta->rec);
- free(ta->val);
- free(ta);
- }
+ while(transfer->args != NULL)
+ freewcspair(transfer->args, &transfer->args);
if(transfer->filter != -1)
killfilter(transfer);
if(transfer->etimer != NULL)
return(new);
}
-void transferaddarg(struct transfer *transfer, wchar_t *rec, wchar_t *val)
-{
- struct transarg *ta;
-
- ta = smalloc(sizeof(*ta));
- ta->rec = swcsdup(rec);
- ta->val = swcsdup(val);
- ta->next = transfer->args;
- transfer->args = ta;
-}
-
void transferattach(struct transfer *transfer, struct transferiface *iface, void *data)
{
if(transfer->iface != NULL)
char **argv;
size_t argvsize, argvdata;
struct socket *insock, *outsock;
- struct transarg *ta;
+ struct wcspair *ta;
char *rec, *val;
wfilename = transfer->path;
}
for(ta = transfer->args; ta != NULL; ta = ta->next)
{
- if((rec = icwcstombs(ta->rec, NULL)) == NULL)
+ if((rec = icwcstombs(ta->key, NULL)) == NULL)
continue;
if((val = icwcstombs(ta->val, NULL)) == NULL)
continue;