comparison src/gtk/transfer.c @ 56:a12bcbc2fce4

2002-11-11 Brian Masney <masneyb@gftp.org> * src/gtk/dnd.c - fixes to DnD code * src/gtk/gftp-gtk.[ch] - added main_thread_id variable * src/gtk/misc-gtk.c (ftp_log) - don't check the user_data to see if we're in a child thread, instead compare the value of pthread_self() with main_thread_id * src/gtk/chmod_dialog.c src/gtk/delete_dialog.c src/gtk/menu-items.c src/gtk/mkdir_dialog.c src/gtk/rename_dialog.c src/gtk/transfer.c - don't set user_data to 0x1 if we're in a child thread * lib/gftp.h src/gtk/misc-gtk.c src/text/gftp-text.c - make r_getservbyname() available even if HAVE_GERADDRINFO is defined * lib/misc.c (make_ssh_exec_args) - if port is zero, lookup the default port for the ssh service * lib/protocols.c (gftp_connect_server) - if the port is zero, store the default port for that protocol there * src/gtk/transfer.c - added function update_window_transfer_bytes(). Be able to update the directory download progress in window1 now * lib/config_file.c lib/misc.c lib/protocols.c lib/ssh.c lib/sshv2.c src/text/gftp-text.c - use g_strdup() instead of g_strconcat() where needed
author masneyb
date Mon, 11 Nov 2002 23:16:12 +0000
parents 0fec02fb9e54
children c01d91c10f6c
comparison
equal deleted inserted replaced
55:518c3872d198 56:a12bcbc2fce4
77 gftp_request * request; 77 gftp_request * request;
78 gftp_file * fle; 78 gftp_file * fle;
79 GList * files; 79 GList * files;
80 80
81 request = data; 81 request = data;
82 request->user_data = (void *) 0x1;
83 82
84 if (request->use_threads) 83 if (request->use_threads)
85 { 84 {
86 sj = sigsetjmp (jmp_environment, 1); 85 sj = sigsetjmp (jmp_environment, 1);
87 use_jmp_environment = 1; 86 use_jmp_environment = 1;
95 if (gftp_list_files (request) != 0 || !GFTP_IS_CONNECTED (request)) 94 if (gftp_list_files (request) != 0 || !GFTP_IS_CONNECTED (request))
96 { 95 {
97 if (request->use_threads) 96 if (request->use_threads)
98 use_jmp_environment = 0; 97 use_jmp_environment = 0;
99 98
100 request->user_data = NULL;
101 request->stopable = 0; 99 request->stopable = 0;
102 if (request->wakeup_main_thread[1] > 0) 100 if (request->wakeup_main_thread[1] > 0)
103 write (request->wakeup_main_thread[1], " ", 1); 101 write (request->wakeup_main_thread[1], " ", 1);
104 return (NULL); 102 return (NULL);
105 } 103 }
126 if (!GFTP_IS_CONNECTED (request)) 124 if (!GFTP_IS_CONNECTED (request))
127 { 125 {
128 if (request->use_threads) 126 if (request->use_threads)
129 use_jmp_environment = 0; 127 use_jmp_environment = 0;
130 128
131 request->user_data = NULL;
132 request->stopable = 0; 129 request->stopable = 0;
133 if (request->wakeup_main_thread[1] > 0) 130 if (request->wakeup_main_thread[1] > 0)
134 write (request->wakeup_main_thread[1], " ", 1); 131 write (request->wakeup_main_thread[1], " ", 1);
135 return (NULL); 132 return (NULL);
136 } 133 }
150 fle->isdir = 1; 147 fle->isdir = 1;
151 files = g_list_prepend (files, fle); 148 files = g_list_prepend (files, fle);
152 } 149 }
153 } 150 }
154 151
155 request->user_data = NULL;
156 if (request->use_threads) 152 if (request->use_threads)
157 use_jmp_environment = 0; 153 use_jmp_environment = 0;
158 154
159 request->stopable = 0; 155 request->stopable = 0;
160 if (request->wakeup_main_thread[1] > 0) 156 if (request->wakeup_main_thread[1] > 0)
243 static int conn_num; 239 static int conn_num;
244 gftp_request * request; 240 gftp_request * request;
245 int ret, sj; 241 int ret, sj;
246 242
247 request = data; 243 request = data;
248 request->user_data = (void *) 0x1;
249 244
250 conn_num = 0; 245 conn_num = 0;
251 if (request->use_threads) 246 if (request->use_threads)
252 { 247 {
253 sj = sigsetjmp (jmp_environment, 1); 248 sj = sigsetjmp (jmp_environment, 1);
284 } 279 }
285 280
286 if (request->use_threads) 281 if (request->use_threads)
287 use_jmp_environment = 0; 282 use_jmp_environment = 0;
288 283
289 request->user_data = NULL;
290 request->stopable = 0; 284 request->stopable = 0;
291 if (request->wakeup_main_thread[1] > 0) 285 if (request->wakeup_main_thread[1] > 0)
292 write (request->wakeup_main_thread[1], " ", 1); 286 write (request->wakeup_main_thread[1], " ", 1);
293 return ((void *) ret); 287 return ((void *) ret);
294 } 288 }
512 { 506 {
513 gftp_transfer * transfer; 507 gftp_transfer * transfer;
514 int success, sj; 508 int success, sj;
515 509
516 transfer = data; 510 transfer = data;
517 transfer->fromreq->user_data = (void *) 0x01;
518 if (transfer->toreq)
519 transfer->toreq->user_data = (void *) 0x01;
520 511
521 if (transfer->fromreq->use_threads || 512 if (transfer->fromreq->use_threads ||
522 (transfer->toreq && transfer->toreq->use_threads)) 513 (transfer->toreq && transfer->toreq->use_threads))
523 { 514 {
524 sj = sigsetjmp (jmp_environment, 1); 515 sj = sigsetjmp (jmp_environment, 1);
542 533
543 if (transfer->fromreq->use_threads || 534 if (transfer->fromreq->use_threads ||
544 (transfer->toreq && transfer->toreq->use_threads)) 535 (transfer->toreq && transfer->toreq->use_threads))
545 use_jmp_environment = 0; 536 use_jmp_environment = 0;
546 537
547 transfer->fromreq->user_data = NULL;
548 if (transfer->toreq)
549 transfer->toreq->user_data = NULL;
550 transfer->fromreq->stopable = 0; 538 transfer->fromreq->stopable = 0;
551 return ((void *) success); 539 return ((void *) success);
552 } 540 }
553 541
554 542
751 ssize_t num_read; 739 ssize_t num_read;
752 int i, mode; 740 int i, mode;
753 741
754 pthread_detach (pthread_self ()); 742 pthread_detach (pthread_self ());
755 transfer = data; 743 transfer = data;
756 transfer->fromreq->user_data = (void *) 0x1;
757 transfer->toreq->user_data = (void *) 0x1;
758 transfer->curfle = transfer->files; 744 transfer->curfle = transfer->files;
759 gettimeofday (&transfer->starttime, NULL); 745 gettimeofday (&transfer->starttime, NULL);
760 memcpy (&transfer->lasttime, &transfer->starttime, 746 memcpy (&transfer->lasttime, &transfer->starttime,
761 sizeof (transfer->lasttime)); 747 sizeof (transfer->lasttime));
762 while (transfer->curfle != NULL) 748 while (transfer->curfle != NULL)
977 transfer->cancel = 0; 963 transfer->cancel = 0;
978 transfer->fromreq->cancel = 0; 964 transfer->fromreq->cancel = 0;
979 transfer->toreq->cancel = 0; 965 transfer->toreq->cancel = 0;
980 } 966 }
981 transfer->done = 1; 967 transfer->done = 1;
982 transfer->fromreq->user_data = NULL;
983 transfer->toreq->user_data = NULL;
984 return (NULL); 968 return (NULL);
985 } 969 }
986 970
987 971
988 void 972 void
1421 GList * templist; 1405 GList * templist;
1422 1406
1423 tdata = node->data; 1407 tdata = node->data;
1424 if (tdata->started) 1408 if (tdata->started)
1425 { 1409 {
1426 fromreq = ((gftp_window_data *) tdata->fromwdata)->request; 1410 fromreq = tdata->fromwdata != NULL ? ((gftp_window_data *) tdata->fromwdata)->request : NULL;
1427 if (!tdata->fromreq->stopable && tdata->fromwdata && 1411 if (!tdata->fromreq->stopable && tdata->fromwdata &&
1428 ((fromreq->sockfd == NULL && fromreq->cached) || 1412 ((fromreq->sockfd == NULL && fromreq->cached) ||
1429 fromreq->always_connected) && tdata->fromreq->sockfd != NULL && 1413 fromreq->always_connected) && tdata->fromreq->sockfd != NULL &&
1430 compare_request (tdata->fromreq, fromreq, 0)) 1414 compare_request (tdata->fromreq, fromreq, 0))
1431 { 1415 {
1579 1563
1580 if (*dlstr != '\0') 1564 if (*dlstr != '\0')
1581 gtk_ctree_node_set_text (GTK_CTREE (dlwdw), tempfle->node, 1, dlstr); 1565 gtk_ctree_node_set_text (GTK_CTREE (dlwdw), tempfle->node, 1, dlstr);
1582 } 1566 }
1583 1567
1568 static void
1569 update_window_transfer_bytes (gftp_window_data * wdata)
1570 {
1571 char *tempstr, *temp1str;
1572
1573 if (wdata->request->gotbytes == -1)
1574 {
1575 update_window_info ();
1576 wdata->request->gotbytes = 0;
1577 }
1578 else
1579 {
1580 tempstr = insert_commas (wdata->request->gotbytes, NULL, 0);
1581 temp1str = g_strdup_printf (_("Retrieving file names...%s bytes"),
1582 tempstr);
1583 gtk_label_set (GTK_LABEL (wdata->hoststxt), temp1str);
1584 g_free (tempstr);
1585 g_free (temp1str);
1586 }
1587 }
1588
1584 1589
1585 gint 1590 gint
1586 update_downloads (gpointer data) 1591 update_downloads (gpointer data)
1587 { 1592 {
1588 char tempstr[50], temp1str[127];
1589 GList * templist, * next; 1593 GList * templist, * next;
1590 gftp_transfer * tdata; 1594 gftp_transfer * tdata;
1591 1595
1592 if (file_transfer_logs != NULL) 1596 if (file_transfer_logs != NULL)
1593 display_cached_logs (); 1597 display_cached_logs ();
1594 1598
1599 if (window1.request->gotbytes != 0)
1600 update_window_transfer_bytes (&window1);
1595 if (window2.request->gotbytes != 0) 1601 if (window2.request->gotbytes != 0)
1596 { 1602 update_window_transfer_bytes (&window2);
1597 if (window2.request->gotbytes == -1)
1598 {
1599 update_window_info ();
1600 window2.request->gotbytes = 0;
1601 }
1602 else
1603 {
1604 insert_commas (window2.request->gotbytes, tempstr, sizeof (tempstr));
1605 g_snprintf (temp1str, sizeof (temp1str),
1606 _("Retrieving file names...%s bytes"), tempstr);
1607 gtk_label_set (GTK_LABEL (window2.hoststxt), temp1str);
1608 }
1609 }
1610 1603
1611 if (viewedit_process_done) 1604 if (viewedit_process_done)
1612 check_done_process (); 1605 check_done_process ();
1613 1606
1614 for (templist = file_transfers; templist != NULL;) 1607 for (templist = file_transfers; templist != NULL;)