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)