Updated with new dc_connect.
[doldaconnect.git] / clients / gnome-trans-applet / conduit-dclib.c
index afc90c3..2089f7f 100644 (file)
@@ -273,14 +273,11 @@ static int init(struct conduit *conduit)
 static int connect(struct conduit *conduit)
 {
     struct data *data;
-    char *host;
     
     data = conduit->cdata;
     if(inuse != NULL)
        return(-1);
-    if((host = getenv("DCSERVER")) == NULL)
-       host = "localhost";
-    if((data->fd = dc_connect(host, -1)) < 0)
+    if((data->fd = dc_connect(NULL)) < 0)
        return(-1);
     data->gdkread = gdk_input_add(data->fd, GDK_INPUT_READ, (void (*)(gpointer, int, GdkInputCondition))dcfdcb, conduit);
     updatewrite(conduit);
@@ -304,11 +301,31 @@ static void destroy(struct conduit *conduit)
     free(data);
 }
 
+static int cancel(struct conduit *conduit, struct transfer *transfer)
+{
+    struct data *data;
+    struct dtdata *dtd;
+    struct dc_transfer *dt;
+    
+    data = conduit->cdata;
+    for(dt = dc_transfers; dt != NULL; dt = dt->next)
+    {
+       if(((dtd = dt->udata) != NULL) && (dtd->ct == transfer))
+       {
+           dc_queuecmd(NULL, NULL, L"cancel", L"%%i", dt->id, NULL);
+           return(0);
+       }
+    }
+    errno = -ESRCH;
+    return(-1);
+}
+
 static struct conduitiface st_conduit_dclib =
 {
     .init = init,
     .connect = connect,
     .destroy = destroy,
+    .cancel = cancel,
 };
 
 struct conduitiface *conduit_dclib = &st_conduit_dclib;