comparison src/dbusbind.c @ 110091:66a2fac996a4

merge emacs-23
author Kenichi Handa <handa@m17n.org>
date Fri, 27 Aug 2010 23:05:43 +0900
parents 998fccafba7a
children d418516def73 a14b02ae1413
comparison
equal deleted inserted replaced
107913:4a06b9752df5 110091:66a2fac996a4
403 403
404 if (XD_BASIC_DBUS_TYPE (dtype)) 404 if (XD_BASIC_DBUS_TYPE (dtype))
405 switch (dtype) 405 switch (dtype)
406 { 406 {
407 case DBUS_TYPE_BYTE: 407 case DBUS_TYPE_BYTE:
408 CHECK_NUMBER (object);
408 { 409 {
409 unsigned char val = XUINT (object) & 0xFF; 410 unsigned char val = XUINT (object) & 0xFF;
410 XD_DEBUG_MESSAGE ("%c %d", dtype, val); 411 XD_DEBUG_MESSAGE ("%c %d", dtype, val);
411 if (!dbus_message_iter_append_basic (iter, dtype, &val)) 412 if (!dbus_message_iter_append_basic (iter, dtype, &val))
412 XD_SIGNAL2 (build_string ("Unable to append argument"), object); 413 XD_SIGNAL2 (build_string ("Unable to append argument"), object);
421 XD_SIGNAL2 (build_string ("Unable to append argument"), object); 422 XD_SIGNAL2 (build_string ("Unable to append argument"), object);
422 return; 423 return;
423 } 424 }
424 425
425 case DBUS_TYPE_INT16: 426 case DBUS_TYPE_INT16:
427 CHECK_NUMBER (object);
426 { 428 {
427 dbus_int16_t val = XINT (object); 429 dbus_int16_t val = XINT (object);
428 XD_DEBUG_MESSAGE ("%c %d", dtype, (int) val); 430 XD_DEBUG_MESSAGE ("%c %d", dtype, (int) val);
429 if (!dbus_message_iter_append_basic (iter, dtype, &val)) 431 if (!dbus_message_iter_append_basic (iter, dtype, &val))
430 XD_SIGNAL2 (build_string ("Unable to append argument"), object); 432 XD_SIGNAL2 (build_string ("Unable to append argument"), object);
431 return; 433 return;
432 } 434 }
433 435
434 case DBUS_TYPE_UINT16: 436 case DBUS_TYPE_UINT16:
437 CHECK_NUMBER (object);
435 { 438 {
436 dbus_uint16_t val = XUINT (object); 439 dbus_uint16_t val = XUINT (object);
437 XD_DEBUG_MESSAGE ("%c %u", dtype, (unsigned int) val); 440 XD_DEBUG_MESSAGE ("%c %u", dtype, (unsigned int) val);
438 if (!dbus_message_iter_append_basic (iter, dtype, &val)) 441 if (!dbus_message_iter_append_basic (iter, dtype, &val))
439 XD_SIGNAL2 (build_string ("Unable to append argument"), object); 442 XD_SIGNAL2 (build_string ("Unable to append argument"), object);
440 return; 443 return;
441 } 444 }
442 445
443 case DBUS_TYPE_INT32: 446 case DBUS_TYPE_INT32:
447 CHECK_NUMBER (object);
444 { 448 {
445 dbus_int32_t val = XINT (object); 449 dbus_int32_t val = XINT (object);
446 XD_DEBUG_MESSAGE ("%c %d", dtype, val); 450 XD_DEBUG_MESSAGE ("%c %d", dtype, val);
447 if (!dbus_message_iter_append_basic (iter, dtype, &val)) 451 if (!dbus_message_iter_append_basic (iter, dtype, &val))
448 XD_SIGNAL2 (build_string ("Unable to append argument"), object); 452 XD_SIGNAL2 (build_string ("Unable to append argument"), object);
449 return; 453 return;
450 } 454 }
451 455
452 case DBUS_TYPE_UINT32: 456 case DBUS_TYPE_UINT32:
457 CHECK_NUMBER (object);
453 { 458 {
454 dbus_uint32_t val = XUINT (object); 459 dbus_uint32_t val = XUINT (object);
455 XD_DEBUG_MESSAGE ("%c %u", dtype, val); 460 XD_DEBUG_MESSAGE ("%c %u", dtype, val);
456 if (!dbus_message_iter_append_basic (iter, dtype, &val)) 461 if (!dbus_message_iter_append_basic (iter, dtype, &val))
457 XD_SIGNAL2 (build_string ("Unable to append argument"), object); 462 XD_SIGNAL2 (build_string ("Unable to append argument"), object);
458 return; 463 return;
459 } 464 }
460 465
461 case DBUS_TYPE_INT64: 466 case DBUS_TYPE_INT64:
467 CHECK_NUMBER (object);
462 { 468 {
463 dbus_int64_t val = XINT (object); 469 dbus_int64_t val = XINT (object);
464 XD_DEBUG_MESSAGE ("%c %d", dtype, (int) val); 470 XD_DEBUG_MESSAGE ("%c %d", dtype, (int) val);
465 if (!dbus_message_iter_append_basic (iter, dtype, &val)) 471 if (!dbus_message_iter_append_basic (iter, dtype, &val))
466 XD_SIGNAL2 (build_string ("Unable to append argument"), object); 472 XD_SIGNAL2 (build_string ("Unable to append argument"), object);
467 return; 473 return;
468 } 474 }
469 475
470 case DBUS_TYPE_UINT64: 476 case DBUS_TYPE_UINT64:
477 CHECK_NUMBER (object);
471 { 478 {
472 dbus_uint64_t val = XUINT (object); 479 dbus_uint64_t val = XUINT (object);
473 XD_DEBUG_MESSAGE ("%c %u", dtype, (unsigned int) val); 480 XD_DEBUG_MESSAGE ("%c %u", dtype, (unsigned int) val);
474 if (!dbus_message_iter_append_basic (iter, dtype, &val)) 481 if (!dbus_message_iter_append_basic (iter, dtype, &val))
475 XD_SIGNAL2 (build_string ("Unable to append argument"), object); 482 XD_SIGNAL2 (build_string ("Unable to append argument"), object);
476 return; 483 return;
477 } 484 }
478 485
479 case DBUS_TYPE_DOUBLE: 486 case DBUS_TYPE_DOUBLE:
487 CHECK_FLOAT (object);
480 { 488 {
481 double val = XFLOAT_DATA (object); 489 double val = XFLOAT_DATA (object);
482 XD_DEBUG_MESSAGE ("%c %f", dtype, val); 490 XD_DEBUG_MESSAGE ("%c %f", dtype, val);
483 if (!dbus_message_iter_append_basic (iter, dtype, &val)) 491 if (!dbus_message_iter_append_basic (iter, dtype, &val))
484 XD_SIGNAL2 (build_string ("Unable to append argument"), object); 492 XD_SIGNAL2 (build_string ("Unable to append argument"), object);
486 } 494 }
487 495
488 case DBUS_TYPE_STRING: 496 case DBUS_TYPE_STRING:
489 case DBUS_TYPE_OBJECT_PATH: 497 case DBUS_TYPE_OBJECT_PATH:
490 case DBUS_TYPE_SIGNATURE: 498 case DBUS_TYPE_SIGNATURE:
491 { 499 CHECK_STRING (object);
492 char *val = SDATA (Fstring_make_unibyte (object)); 500 {
501 /* We need to send a valid UTF-8 string. We could encode `object'
502 but by not encoding it, we guarantee it's valid utf-8, even if
503 it contains eight-bit-bytes. Of course, you can still send
504 manually-crafted junk by passing a unibyte string. */
505 char *val = SDATA (object);
493 XD_DEBUG_MESSAGE ("%c %s", dtype, val); 506 XD_DEBUG_MESSAGE ("%c %s", dtype, val);
494 if (!dbus_message_iter_append_basic (iter, dtype, &val)) 507 if (!dbus_message_iter_append_basic (iter, dtype, &val))
495 XD_SIGNAL2 (build_string ("Unable to append argument"), object); 508 XD_SIGNAL2 (build_string ("Unable to append argument"), object);
496 return; 509 return;
497 } 510 }