diff options
| author | Andreas Schwab | 2009-10-24 16:45:25 +0000 |
|---|---|---|
| committer | Andreas Schwab | 2009-10-24 16:45:25 +0000 |
| commit | 1cae01f7159d377f148e1d8aa631d5447217623e (patch) | |
| tree | da189282ac3a465d6f17c20819f0cb8797e56ea2 /src | |
| parent | 58a128895203804c027b61cefe32c32e16904b57 (diff) | |
| download | emacs-1cae01f7159d377f148e1d8aa631d5447217623e.tar.gz emacs-1cae01f7159d377f148e1d8aa631d5447217623e.zip | |
(xd_retrieve_arg): Handle DBUS_TYPE_INTnn and
DBUS_TYPE_UINTnn separately to get proper sign extension.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 3 | ||||
| -rw-r--r-- | src/dbusbind.c | 27 |
2 files changed, 25 insertions, 5 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 1a2d994bad6..a30b6580c88 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,5 +1,8 @@ | |||
| 1 | 2009-10-24 Andreas Schwab <schwab@linux-m68k.org> | 1 | 2009-10-24 Andreas Schwab <schwab@linux-m68k.org> |
| 2 | 2 | ||
| 3 | * dbusbind.c (xd_retrieve_arg): Handle DBUS_TYPE_INTnn and | ||
| 4 | DBUS_TYPE_UINTnn separately to get proper sign extension. | ||
| 5 | |||
| 3 | * dired.c (Ffile_attributes): Simplify now that FIXNUM_OVERFLOW_P | 6 | * dired.c (Ffile_attributes): Simplify now that FIXNUM_OVERFLOW_P |
| 4 | can properly handle unsigned types. | 7 | can properly handle unsigned types. |
| 5 | (make_uid, make_gid): Removed. | 8 | (make_uid, make_gid): Removed. |
diff --git a/src/dbusbind.c b/src/dbusbind.c index 86ec866ac6a..c2512e687c7 100644 --- a/src/dbusbind.c +++ b/src/dbusbind.c | |||
| @@ -616,6 +616,13 @@ xd_retrieve_arg (dtype, iter) | |||
| 616 | } | 616 | } |
| 617 | 617 | ||
| 618 | case DBUS_TYPE_INT16: | 618 | case DBUS_TYPE_INT16: |
| 619 | { | ||
| 620 | dbus_int16_t val; | ||
| 621 | dbus_message_iter_get_basic (iter, &val); | ||
| 622 | XD_DEBUG_MESSAGE ("%c %d", dtype, val); | ||
| 623 | return make_number (val); | ||
| 624 | } | ||
| 625 | |||
| 619 | case DBUS_TYPE_UINT16: | 626 | case DBUS_TYPE_UINT16: |
| 620 | { | 627 | { |
| 621 | dbus_uint16_t val; | 628 | dbus_uint16_t val; |
| @@ -625,19 +632,29 @@ xd_retrieve_arg (dtype, iter) | |||
| 625 | } | 632 | } |
| 626 | 633 | ||
| 627 | case DBUS_TYPE_INT32: | 634 | case DBUS_TYPE_INT32: |
| 635 | { | ||
| 636 | dbus_int32_t val; | ||
| 637 | dbus_message_iter_get_basic (iter, &val); | ||
| 638 | XD_DEBUG_MESSAGE ("%c %d", dtype, val); | ||
| 639 | return make_fixnum_or_float (val); | ||
| 640 | } | ||
| 641 | |||
| 628 | case DBUS_TYPE_UINT32: | 642 | case DBUS_TYPE_UINT32: |
| 629 | { | 643 | { |
| 630 | /* Assignment to EMACS_INT stops GCC whining about limited | ||
| 631 | range of data type. */ | ||
| 632 | dbus_uint32_t val; | 644 | dbus_uint32_t val; |
| 633 | EMACS_INT val1; | ||
| 634 | dbus_message_iter_get_basic (iter, &val); | 645 | dbus_message_iter_get_basic (iter, &val); |
| 635 | XD_DEBUG_MESSAGE ("%c %d", dtype, val); | 646 | XD_DEBUG_MESSAGE ("%c %d", dtype, val); |
| 636 | val1 = val; | 647 | return make_fixnum_or_float (val); |
| 637 | return make_fixnum_or_float (val1); | ||
| 638 | } | 648 | } |
| 639 | 649 | ||
| 640 | case DBUS_TYPE_INT64: | 650 | case DBUS_TYPE_INT64: |
| 651 | { | ||
| 652 | dbus_int64_t val; | ||
| 653 | dbus_message_iter_get_basic (iter, &val); | ||
| 654 | XD_DEBUG_MESSAGE ("%c %d", dtype, (int) val); | ||
| 655 | return make_fixnum_or_float (val); | ||
| 656 | } | ||
| 657 | |||
| 641 | case DBUS_TYPE_UINT64: | 658 | case DBUS_TYPE_UINT64: |
| 642 | { | 659 | { |
| 643 | dbus_uint64_t val; | 660 | dbus_uint64_t val; |