Merge branch 'master' of git.dolda2000.com:/srv/git/r/doldaconnect
[doldaconnect.git] / clients / gui-shell / dsh.c
index 332e0df..1922aaf 100644 (file)
@@ -48,12 +48,14 @@ struct trinfo {
     int ostate;
     int opos, spos, speed;
     time_t lastprog;
+    int warned;
     double sprog;
 };
 
 void updatewrite(void);
 
 int remote = 0;
+char *server;
 GtkStatusIcon *tray;
 pid_t dpid = 0, dcpid = 0;
 int connected = 0;
@@ -287,11 +289,14 @@ void updatetrinfo(void)
            if(tri->opos != tr->curpos) {
                tri->opos = tr->curpos;
                tri->lastprog = now;
+               tri->warned = 0;
            }
-#ifdef NOTIFY
-           if((tr->state = DC_TRNS_MAIN) && (now - tri->lastprog > 600)) {
-               if(dcpid == 0)
+#ifdef HAVE_NOTIFY
+           if((tr->state = DC_TRNS_MAIN) && (now - tri->lastprog > 600) && !tri->warned) {
+               if(dcpid == 0) {
                    notify(&trnote, "transfer.error", _("Transfer stalled"), _("The transfer of %ls from %ls has not made progress for 10 minutes"), getfilename(tr->path), tr->peernick);
+                   tri->warned = 1;
+               }
            }
 #endif
            if((tr->state == DC_TRNS_MAIN) && (dnow - tri->sprog > 10)) {
@@ -378,7 +383,7 @@ void updatewrite(void)
 
 void connectdc(void)
 {
-    if((dcfd = dc_connect(remote?NULL:dc_srv_local)) < 0) {
+    if((dcfd = dc_connect(server)) < 0) {
        msgbox(GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Could not connect to server: %s"), strerror(errno));
        exit(1);
     }
@@ -543,14 +548,20 @@ int main(int argc, char **argv)
     textdomain(PACKAGE);
     signal(SIGCHLD, sighandler);
     dc_init();
+    server = dc_srv_local;
     gtk_init(&argc, &argv);
 #ifdef HAVE_NOTIFY
     notify_init("Dolda Connect");
 #endif
-    while((c = getopt(argc, argv, "rh")) != -1) {
+    while((c = getopt(argc, argv, "rhs:")) != -1) {
        switch(c) {
        case 'r':
            remote = 1;
+           server = NULL;
+           break;
+       case 's':
+           remote = 1;
+           server = optarg;
            break;
        case 'h':
            printf("usage: doldacond-shell [-hr]\n");