Mercurial > gftp.yaz
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;) |