Mercurial > pidgin
comparison src/ft.c @ 4517:a2b2cce63fb8
[gaim-migrate @ 4795]
Some changes to handle unknown file sizes better.
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Tue, 04 Feb 2003 17:56:17 +0000 |
parents | 7521e29658bc |
children | a6be92358df3 |
comparison
equal
deleted
inserted
replaced
4516:2ad2f5caeb81 | 4517:a2b2cce63fb8 |
---|---|
236 gaim_xfer_get_progress(const struct gaim_xfer *xfer) | 236 gaim_xfer_get_progress(const struct gaim_xfer *xfer) |
237 { | 237 { |
238 if (xfer == NULL) | 238 if (xfer == NULL) |
239 return 0.0; | 239 return 0.0; |
240 | 240 |
241 if (gaim_xfer_get_size(xfer) == 0) | |
242 return 0.0; | |
243 | |
241 return ((double)gaim_xfer_get_bytes_sent(xfer) / | 244 return ((double)gaim_xfer_get_bytes_sent(xfer) / |
242 (double)gaim_xfer_get_size(xfer)); | 245 (double)gaim_xfer_get_size(xfer)); |
243 } | 246 } |
244 | 247 |
245 const char * | 248 const char * |
303 } | 306 } |
304 | 307 |
305 void | 308 void |
306 gaim_xfer_set_size(struct gaim_xfer *xfer, size_t size) | 309 gaim_xfer_set_size(struct gaim_xfer *xfer, size_t size) |
307 { | 310 { |
308 if (xfer == NULL || size == 0) | 311 if (xfer == NULL) |
309 return; | 312 return; |
310 | 313 |
311 xfer->size = size; | 314 xfer->size = size; |
312 } | 315 } |
313 | 316 |
398 size_t s, r; | 401 size_t s, r; |
399 | 402 |
400 if (xfer == NULL || buffer == NULL) | 403 if (xfer == NULL || buffer == NULL) |
401 return 0; | 404 return 0; |
402 | 405 |
403 s = MIN(gaim_xfer_get_bytes_remaining(xfer), 4096); | 406 if (gaim_xfer_get_size(xfer) == 0) |
407 s = 4096; | |
408 else | |
409 s = MIN(gaim_xfer_get_bytes_remaining(xfer), 4096); | |
404 | 410 |
405 if (xfer->ops.read != NULL) | 411 if (xfer->ops.read != NULL) |
406 r = xfer->ops.read(buffer, xfer); | 412 r = xfer->ops.read(buffer, xfer); |
407 else { | 413 else { |
408 *buffer = g_malloc0(s); | 414 *buffer = g_malloc0(s); |
475 ui_ops = gaim_xfer_get_ui_ops(xfer); | 481 ui_ops = gaim_xfer_get_ui_ops(xfer); |
476 | 482 |
477 if (ui_ops != NULL && ui_ops->update_progress != NULL) | 483 if (ui_ops != NULL && ui_ops->update_progress != NULL) |
478 ui_ops->update_progress(xfer, gaim_xfer_get_progress(xfer)); | 484 ui_ops->update_progress(xfer, gaim_xfer_get_progress(xfer)); |
479 | 485 |
480 if (xfer->bytes_remaining == 0) | 486 if (r == 0) |
481 gaim_xfer_end(xfer); | 487 gaim_xfer_end(xfer); |
482 } | 488 } |
483 | 489 |
484 static void | 490 static void |
485 begin_transfer(struct gaim_xfer *xfer, GaimInputCondition cond) | 491 begin_transfer(struct gaim_xfer *xfer, GaimInputCondition cond) |