Changeset 609 for libcaca/trunk/caca
- Timestamp:
- Mar 14, 2006, 11:05:34 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/caca/driver_network.c
r605 r609 86 86 char prefix[sizeof(INIT_PREFIX)]; 87 87 88 char *buffer; 89 int size; 88 struct cucul_buffer *ex; 90 89 91 90 int client_count; … … 170 169 } 171 170 172 kk->drv.p->buffer = NULL; 173 kk->drv.p->size = 0; 171 kk->drv.p->ex = NULL; 174 172 175 173 /* Ignore SIGPIPE */ … … 192 190 } 193 191 192 if(kk->drv.p->ex) 193 cucul_free(kk->drv.p->ex); 194 194 195 /* Restore SIGPIPE handler */ 195 196 signal(SIGPIPE, kk->drv.p->sigpipe_handler); … … 220 221 int i; 221 222 223 /* Free the previous export buffer, if any */ 224 if(kk->drv.p->ex) 225 { 226 cucul_free(kk->drv.p->ex); 227 kk->drv.p->ex = NULL; 228 } 229 222 230 /* Get ANSI representation of the image and skip the end-of buffer 223 231 * linefeed ("\r\n\0", 3 bytes) */ 224 kk->drv.p-> buffer = cucul_get_ansi(kk->qq, 0, &kk->drv.p->size);225 kk->drv.p-> size -= 3;232 kk->drv.p->ex = cucul_export(kk->qq, CUCUL_FORMAT_ANSI); 233 kk->drv.p->ex->size -= 3; 226 234 227 235 for(i = 0; i < kk->drv.p->client_count; i++) … … 371 379 372 380 /* No error, there's just nothing to send yet */ 373 if(!kk->drv.p-> buffer)381 if(!kk->drv.p->ex) 374 382 return 0; 375 383 … … 396 404 c->start += ret; 397 405 398 if(c->stop - c->start + strlen(ANSI_PREFIX) + kk->drv.p-> size406 if(c->stop - c->start + strlen(ANSI_PREFIX) + kk->drv.p->ex->size 399 407 > OUTBUFFER) 400 408 { … … 407 415 408 416 /* Need to move? */ 409 if(c->stop + strlen(ANSI_PREFIX) + kk->drv.p-> size > OUTBUFFER)417 if(c->stop + strlen(ANSI_PREFIX) + kk->drv.p->ex->size > OUTBUFFER) 410 418 { 411 419 memmove(c->outbuf, c->outbuf + c->start, c->stop - c->start); … … 416 424 memcpy(c->outbuf + c->stop, ANSI_PREFIX, strlen(ANSI_PREFIX)); 417 425 c->stop += strlen(ANSI_PREFIX); 418 memcpy(c->outbuf + c->stop, kk->drv.p-> buffer, kk->drv.p->size);419 c->stop += kk->drv.p-> size;426 memcpy(c->outbuf + c->stop, kk->drv.p->ex->buffer, kk->drv.p->ex->size); 427 c->stop += kk->drv.p->ex->size; 420 428 421 429 return 0; … … 437 445 if(ret < (ssize_t)strlen(ANSI_PREFIX)) 438 446 { 439 if(strlen(ANSI_PREFIX) + kk->drv.p-> size > OUTBUFFER)447 if(strlen(ANSI_PREFIX) + kk->drv.p->ex->size > OUTBUFFER) 440 448 { 441 449 /* Overflow! Empty buffer and start again */ … … 448 456 memcpy(c->outbuf, ANSI_PREFIX, strlen(ANSI_PREFIX) - ret); 449 457 c->stop = strlen(ANSI_PREFIX) - ret; 450 memcpy(c->outbuf + c->stop, kk->drv.p-> buffer, kk->drv.p->size);451 c->stop += kk->drv.p-> size;458 memcpy(c->outbuf + c->stop, kk->drv.p->ex->buffer, kk->drv.p->ex->size); 459 c->stop += kk->drv.p->ex->size; 452 460 453 461 return 0; … … 455 463 456 464 /* Send actual data */ 457 ret = nonblock_write(c->fd, kk->drv.p-> buffer, kk->drv.p->size);465 ret = nonblock_write(c->fd, kk->drv.p->ex->buffer, kk->drv.p->ex->size); 458 466 if(ret == -1) 459 467 { … … 464 472 } 465 473 466 if(ret < kk->drv.p->size)467 { 468 if(kk->drv.p-> size > OUTBUFFER)474 if(ret < (int)kk->drv.p->ex->size) 475 { 476 if(kk->drv.p->ex->size > OUTBUFFER) 469 477 { 470 478 /* Overflow! Empty buffer and start again */ … … 475 483 } 476 484 477 memcpy(c->outbuf, kk->drv.p-> buffer, kk->drv.p->size - ret);478 c->stop = kk->drv.p-> size - ret;485 memcpy(c->outbuf, kk->drv.p->ex->buffer, kk->drv.p->ex->size - ret); 486 c->stop = kk->drv.p->ex->size - ret; 479 487 480 488 return 0;
Note: See TracChangeset
for help on using the changeset viewer.