diff -Nru modemmanager-1.14.10/ChangeLog modemmanager-1.16.6/ChangeLog --- modemmanager-1.14.10/ChangeLog 2021-01-16 21:27:56.000000000 +0800 +++ modemmanager-1.16.6/ChangeLog 2021-06-06 21:45:09.000000000 +0800 @@ -1,22 +1,2238 @@ -commit 304a1b123fe87cf5f3b9067fb83f37c9e09e12f5 +commit a7b37461441f66ca1f54c1e83473dbd6e4191852 Author: Aleksander Morgado -Date: Sat Jan 16 14:11:16 2021 +0100 +Date: Thu Jun 3 13:25:11 2021 +0200 - release: bump version to 1.14.10 + release: bump version to 1.16.6 configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 9ed9234904074c313c617ffe45e364c39c3cce81 +commit e7a683b525f2908082e7926f8192e6811e9bea69 Author: Aleksander Morgado -Date: Sat Jan 16 14:10:58 2021 +0100 +Date: Thu Jun 3 13:24:42 2021 +0200 - NEWS: update for 1.14.10 + NEWS: update for 1.16.6 - NEWS | 30 ++++++++++++++++++++++++++++++ - 1 file changed, 30 insertions(+) + NEWS | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +commit 3762fb1737892b06ab435b5c70c394dca3f994b8 +Author: Aleksander Morgado +Date: Sun Jun 6 14:45:27 2021 +0200 + + udev: only flag as candidates the wwan ports, not the full device + + Explicitly ignore the "wwan_dev" device as it is not associated with + separate ports (which is what MM needs), but with the whole device + instead. + + See + https://lists.freedesktop.org/archives/modemmanager-devel/2021-May/008629.html + + (cherry picked from commit ac18b5ac5bf841cd3a619a9e07137c332558d6c4) + + src/80-mm-candidate.rules | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 5e3babb3a12371cd0cb6578c97b2090db3b95d0b +Author: Loic Poulain +Date: Wed May 12 13:18:00 2021 +0200 + + udev: Do not consider USB WWAN ports as valid candidates + + For now WWAN subsystem support has only been validated for PCI/MHI + based devices and extra patches for USB based devices (qmi_wwan, + cdc-mbim...) may be required, so do not consider WWAN ports being + on USB bus. + + Signed-off-by: Loic Poulain + (cherry picked from commit c39d1d2fbc62dca759efcf8dc5b80c69a45269de) + + src/80-mm-candidate.rules | 4 ++++ + 1 file changed, 4 insertions(+) + +commit f62b4ec0f604710435da1e03d1324f8a0e9aba8f +Author: Aleksander Morgado +Date: Sun Jun 6 12:11:08 2021 +0200 + + core: skip suggesting FCC unlock may be needed + + This message is too specific, and there are a lot of cases where it + wouldn't apply. + + E.g. when a MBIM module is stuck in low power mode due to some other + reason (like hardware rfkill), this message would pop up to the users + and completely confuse them. + + (cherry picked from commit 464c0d464c758387ac3d35f4e148db2c4368edba) + + src/mm-broadband-modem-mbim.c | 3 +-- + src/mm-broadband-modem-qmi.c | 2 +- + 2 files changed, 2 insertions(+), 3 deletions(-) + +commit b610ea14019e4645a29a87b51be08d712b243f03 +Author: Aleksander Morgado +Date: Fri Jun 4 12:14:02 2021 +0200 + + Revert "foxconn: add new MBIM QDU firmware update method support" + + This reverts commit da23f9cd7a7642e8cf8245952a7403bb30fca1b8. + + The stable 1.16 branch does not build-depend on any libmbim git master + version, so we should not report the QDU firmware update method as + supported in MM at this point. + + It would not have been a big problem if we did expose the QDU firmware + update method, because the logic in fwupd checks the MM and libmbim + versions separately, but I think it's better to skip reporting QDU as + supported ourselves for consistency with the minimum libmbim version + we require. + + include/ModemManager-enums.h | 2 -- + plugins/foxconn/mm-broadband-modem-mbim-foxconn.c | 17 ++++------------- + 2 files changed, 4 insertions(+), 15 deletions(-) + +commit cc4e32610f7372a54fe150cfd8b19e62d269a7b0 +Author: Aleksander Morgado +Date: Fri Jun 4 12:13:33 2021 +0200 + + Revert "api: QDU update method defined in MM 1.16.6 already" + + This reverts commit 2cb38c568ff1fb26b23bad5e8a2851547448c30e. + + include/ModemManager-enums.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 374f80f5c37ddff2ea74781ca85da1e283f23035 +Author: Aleksander Morgado +Date: Wed May 19 15:37:47 2021 +0200 + + foxconn: setup FCC unlock step + + Use the new "DMS Foxconn Set FCC authentication" command to request + the modem unlock during a power up operation. + + Fixes + https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/373 + + (cherry picked from commit 9fdbbc6929cb61d4168e1696a94e5b2f07bc578e) + + plugins/foxconn/mm-broadband-modem-mbim-foxconn.c | 67 + ++++++++++++++++++++++- + 1 file changed, 65 insertions(+), 2 deletions(-) + +commit 2886b08522e7c29d5d9ffa9d186129bbe1fffbba +Author: Aleksander Morgado +Date: Thu Jun 3 13:04:53 2021 +0200 + + build: require libqmi 1.28.6 for Foxconn FCC unlock support + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit edaa6413f6585132fcc6d4851f96e1a54c1d1be1 +Author: Aleksander Morgado +Date: Fri May 21 15:48:31 2021 +0200 + + broadband-modem-mbim: setup FCC unlock step + + Use the new generic FCC unlock step instead of implementing it within + the power up setup logic. + + (cherry picked from commit 76f24256174039a75926cdc0ce3a6b1f03ea10ee) + + src/mm-broadband-modem-mbim.c | 219 + ++++++------------------------------------ + 1 file changed, 30 insertions(+), 189 deletions(-) + +commit 7b53ccbcf59160ac4f3590d460603c54a296dc97 +Author: Aleksander Morgado +Date: Wed May 19 15:12:17 2021 +0200 + + broadband-modem-qmi: setup FCC unlock step + + Use the new generic FCC unlock step instead of implementing it within + the operating mode setup logic. + + The operation is implemented in the MMSharedQmi interface as it will + also be used by the MBIM modem object. + + (cherry picked from commit b9596c81879b8eeae3f2e1bab5c31007e5824c1f) + + src/mm-broadband-modem-qmi.c | 240 + ++++++++++--------------------------------- + src/mm-shared-qmi.c | 50 +++++++++ + src/mm-shared-qmi.h | 6 ++ + 3 files changed, 112 insertions(+), 184 deletions(-) + +commit 148a6c6e46dedc5cd391e326f4c0a60ce39bea84 +Author: Aleksander Morgado +Date: Wed May 19 13:02:42 2021 +0200 + + iface-modem: new optional FCC unlock step in the power state update + + There are devices that come locked before they can be put online. + Until now we had a specific implementation for this in the generic QMI + modem, but we should have it in a more generic way for any kind of + modem. + + (cherry picked from commit 6ca75c76db277b89325e1888ac445cbfebe33039) + + src/mm-iface-modem.c | 352 + +++++++++++++++++++++++++-------------------------- + src/mm-iface-modem.h | 8 ++ + 2 files changed, 180 insertions(+), 180 deletions(-) + +commit 977452e155163983e4638c39a82dfad9d847904b +Author: Aleksander Morgado +Date: Tue May 25 15:42:11 2021 +0200 + + base-manager: ensure all GUdevDevices have subsystem and name set + + Under certain rare conditions (e.g. race between querying devices of a + given subsystem and the kernel tearing those devices down), the + subsystem reported for a GUdevDevice seems to be NULL. + + So, ensure both subsystem and name are set on the GUdevDevice + before we + process them. + + The issue has been observed on GUdevDevices listed by + g_udev_client_query_by_subsystem(), not on the ones asynchronously + reported via uevents, but we add the validity check on both places for + consistency. + + Fixes + https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/343 + + (cherry picked from commit 940063419a1c2eb9f6e197d60b4c7cb42702de8d) + + src/mm-base-manager.c | 30 +++++++++++++++++++++++++----- + 1 file changed, 25 insertions(+), 5 deletions(-) + +commit 812463c9a82c3e921a392bf06789194ccad42cc5 +Author: Aleksander Morgado +Date: Sat May 22 00:46:55 2021 +0200 + + shared-qmi: trivial coding style update + + (cherry picked from commit ec8bf7f0e39435f98d322d09a36b0d3e171a9ae7) + + src/mm-shared-qmi.h | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 7fc8f67af9b5fe30e3b1f96b56ed781af2d44bc2 +Author: Aleksander Morgado +Date: Sun May 23 00:38:09 2021 +0200 + + broadband-modem: check if skeleton exists when creating device id + + The logic that creates the device identifier uses some fields that are + exposed in DBus (e.g. model, manufacturer...). + + We should not attempt to load any of that info if the DBus skeleton + for the Modem interface is no longer available, as e.g. the device may + have gone away already. + + Fixes + https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/374 + + (cherry picked from commit 3da3623e11f90e45951118119da6f842053fd133) + + src/mm-broadband-modem-mbim.c | 16 ++++++++++------ + src/mm-broadband-modem-qmi.c | 16 ++++++++++------ + src/mm-broadband-modem.c | 36 +++++++++++++++++++++++++----------- + src/mm-broadband-modem.h | 7 ++++--- + 4 files changed, 49 insertions(+), 26 deletions(-) + +commit a8f65a16c753eef05fbd4bd15372116f1a9343c5 +Author: Aleksander Morgado +Date: Wed Jun 2 09:56:00 2021 +0200 + + shared-qmi: add missing g_autoptr() NULL initializer + + (cherry picked from commit eefcf9204f2de801092b1d14d86c7012420e97af) + + src/mm-shared-qmi.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8c4708939e396c5e1aeeac99f5f197d4c7440cea +Author: Felipe Borges +Date: Thu May 27 15:05:55 2021 +0200 + + cinterion: avoid maybe-uninitialized warning by GCC 10 + + Reported at + https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1371 + + (cherry picked from commit 0b8607bc5dc4cce16ebb7c6a7bd71dfb3032d978) + + plugins/cinterion/mm-modem-helpers-cinterion.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e903a840ed87074a35581f5e5faf8fba3436c135 +Author: Aleksander Morgado +Date: Tue Jun 1 09:36:53 2021 +0200 + + broadband-modem-mbim: skip switch() when selecting MBIM services + + Having a switch() for the MBIM services when processing indications + forces us to update it on every new MBIM service added to libmbim, + because we build with -Wswitch-enum by default. + + This warning type is extremely useful, and we should not stop using + it, so let's simplify a bit the indication handling code and skip + using a switch(). + + There are right now only 4 different service indications expected, so + it shouldn't be a big deal. + + (cherry picked from commit e25a585c9fd8c3f58ec01723843fe3c08c30c1ad) + + src/mm-broadband-modem-mbim.c | 34 ++++------------------------------ + 1 file changed, 4 insertions(+), 30 deletions(-) + +commit 8308b24347d8bc88cddfcb13cbbf624d6577b3fa +Author: Dylan Van Assche +Date: Mon May 31 16:56:30 2021 +0200 + + quectel: ignore QLWURC + + QLWURCs are not ignored and causes calls to be rejected in some cases + + (cherry picked from commit c00eff43ac6eda070645d77edc8da71facd972a3) + + plugins/quectel/mm-shared-quectel.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit 2cb38c568ff1fb26b23bad5e8a2851547448c30e +Author: Aleksander Morgado +Date: Fri May 21 23:46:28 2021 +0200 + + api: QDU update method defined in MM 1.16.6 already + + include/ModemManager-enums.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit da23f9cd7a7642e8cf8245952a7403bb30fca1b8 +Author: Freedom Liu +Date: Fri Apr 30 01:52:12 2021 +0000 + + foxconn: add new MBIM QDU firmware update method support + + Based on the QDU service newly added in libmbim, + T99W175 module (vid: 0x105b) supports MBIM QDU based update. + + (cherry picked from commit 35b1672b85d23e0961c33fc7aebc17d0e2d26c81) + + include/ModemManager-enums.h | 2 ++ + plugins/foxconn/mm-broadband-modem-mbim-foxconn.c | 17 +++++++++++++---- + 2 files changed, 15 insertions(+), 4 deletions(-) + +commit 8904436e126d0c408003b0f6b5b78b2c0c3c1977 +Author: Freedom Liu +Date: Mon Apr 26 15:29:36 2021 +0800 + + foxconn: add support for the T99W175 module + + 0x0489 is the vendor ID of T77W968, 0x105b is the vendor ID of + T99W175. + {0x105b, 0xe0b0},{0x105b, 0xe0b1} is T99W175 PCI device, used by Dell. + {0x105b, 0xe0ab} is T99W175 PCI device, used by Lenovo. + + If the modem has an mbim port, create a MbimFoxconn object, regardless + of what the product ID is. + + The firmware version format in the T99W175 was selected to have + firmware version + carrier config version + apps version. + + (cherry picked from commit 47ea5c98f4d05a2113b7533fec86ac6003171c85) + + plugins/foxconn/mm-broadband-modem-mbim-foxconn.c | 15 ++++++++---- + plugins/foxconn/mm-plugin-foxconn.c | 29 + +++++++++-------------- + 2 files changed, 22 insertions(+), 22 deletions(-) + +commit 3fb5f80283bd2013073fb71c592e5d63efca39e2 +Author: Freedom Liu +Date: Mon Apr 26 15:19:37 2021 +0800 + + foxconn: change modem-foxconn-t77w968 to modem-mbim-foxconn + + Named the object in a more generic way. + + (cherry picked from commit c31488608a331f4d16dacb923a5611c52f57f1cb) + + plugins/Makefile.am | 8 ++-- + plugins/dell/mm-plugin-dell.c | 12 +++--- + .../foxconn/mm-broadband-modem-foxconn-t77w968.h | 49 + ---------------------- + ...t77w968.c => mm-broadband-modem-mbim-foxconn.c} | 44 + +++++++++---------- + plugins/foxconn/mm-broadband-modem-mbim-foxconn.h | 49 + ++++++++++++++++++++++ + ...apping.conf => mm-foxconn-carrier-mapping.conf} | 0 + plugins/foxconn/mm-plugin-foxconn.c | 12 +++--- + plugins/tests/test-keyfiles.c | 6 +-- + 8 files changed, 90 insertions(+), 90 deletions(-) + +commit b7f0f2ca7c6e61fcf08786909ba0992d0de36ce6 +Author: Loic Poulain +Date: Tue Apr 20 15:04:11 2021 +0200 + + qmi: Increase qmi_device_open timeout + + SDX55 modem can take slighlty more than 25 seconds to start all + its services from cold boot/reset (including QMI services), causing + QMI port opening timeout error. This patch increases the + qmi_device_open + timeout from 25 seconds to 45 seconds to prevent such issue. + + Signed-off-by: Loic Poulain + (cherry picked from commit e57c59bf88615129efc0241957749102ea8af90d) + + src/mm-port-qmi.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ba18704cc63c0be201b79eedb9561e2dc1fe0d67 +Author: Loic Poulain +Date: Wed Dec 16 17:07:31 2020 +0100 + + plugins: generic: Add 'wwan' subsystem support + + wwan is a new subsystem for WWAN devices, allowing to expose the + WWAN device and its ports in a generic way. + + The sysfs hierarchy for such device is + + /sys/class/wwanX + /sys/class/wwanX/wwanXpYP + + Where X is the WWAN device index, Y the port index and P the + control protocol name (QMI, MBIM...). A control port is also + exposed as character device in /dev. + + Signed-off-by: Loic Poulain + (cherry picked from commit fefbf4d3029ce8e1f2ed9db2bc8288e13989b05a) + + plugins/generic/mm-plugin-generic.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 60606f1231ade45fffe02b3c72238af7ba024195 +Author: Loic Poulain +Date: Wed Dec 16 15:49:42 2020 +0100 + + broadband-modem-qmi: Add MHI QMI port peek support + + For MHI data port (mhi-net), simply return the primary QMI port. + + Signed-off-by: Loic Poulain + (cherry picked from commit 6895ca836b29dba55f5afd46925967e7795fd43b) + + src/mm-broadband-modem-qmi.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit f27ce401d173eb3f3574e34818f296f3f6fa6634 +Author: Loic Poulain +Date: Wed Dec 16 15:11:48 2020 +0100 + + base: Add support for wwan subsystem + + Add support for the Linux wwan subsystem that started to expose + control channel as character devices (e.g. /dev/wwan0p1MBIM...). + + Signed-off-by: Loic Poulain + (cherry picked from commit 6db2e8f04da458488c374f1a6f6979ce7fe9b67d) + + src/mm-base-modem.c | 26 ++++++++++++++++++++++++++ + src/mm-plugin.c | 9 +++++++++ + src/mm-port-probe.c | 9 ++++++++- + src/mm-port.h | 3 ++- + 4 files changed, 45 insertions(+), 2 deletions(-) + +commit 33cbe975acc78e0b08c70553875c292b2d26fef2 +Author: Loic Poulain +Date: Wed Dec 16 14:01:53 2020 +0100 + + filter: Add wwan port devices + + Allow WWAN control ports. + + Signed-off-by: Loic Poulain + (cherry picked from commit b1db6527cf9d4801e48dfe6e9fe8124532269159) + + src/mm-filter.c | 8 ++++++++ + src/mm-filter.h | 13 +++++++++---- + 2 files changed, 17 insertions(+), 4 deletions(-) + +commit 7b77bedae49457718bece5cf1a262ab561b6af5a +Author: Loic Poulain +Date: Wed Dec 16 13:59:27 2020 +0100 + + udev: add wwan port devices as valid candidates + + The new Linux WWAN subsystem exposes the various WWAN control ports + as character devices. WWAN port device naming follows the following + convention: wwanXpYP, where X is the wwan device index, Y the port + index and P the port type/protocol. + + Signed-off-by: Loic Poulain + (cherry picked from commit aaf8c17e3592cf401913543452002e1e227a8d05) + + src/80-mm-candidate.rules | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit f59095a3bef82cc066788c1c8df0947bca7d1408 +Author: Aleksander Morgado +Date: Tue May 18 14:29:41 2021 +0200 + + libmm-glib,common-helpers: avoid signed vs unsigned comparisons + + mm-common-helpers.c: In function 'mm_get_int_from_str': + mm-common-helpers.c:1349:13: warning: comparison between signed + and unsigned integer expressions [-Wsign-compare] + if (eol == num) + ^~ + mm-common-helpers.c: In function 'mm_utils_hexstr2bin': + mm-common-helpers.c:1718:19: warning: comparison between signed + and unsigned integer expressions [-Wsign-compare] + for (i = 0; i < len; i += 2) { + ^ + + (cherry picked from commit d661d822f7fc2b31884eb10a586501765250ec2e) + + libmm-glib/mm-common-helpers.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +commit 6005b93902a40a27648101933fe2c2cbbe80aac1 +Author: Aleksander Morgado +Date: Tue May 18 12:24:39 2021 +0200 + + libmm-glib: drop default timeout checks in Command() + + The g_dbus_proxy_get_default_timeout() is by default -1 unless + explicitly updated, so the check doesn't make any sense really. We + didn't see any warning produced because mmcli provides an explicit + timeout of 30s, so it was never the default -1. + + (cherry picked from commit 21ff48ed7d56837567aff3e396acf3bfd24cbc02) + + libmm-glib/mm-modem.c | 5 ----- + 1 file changed, 5 deletions(-) + +commit a746c58e30dc8a44885294b382f8c6e7390d0998 +Author: Aleksander Morgado +Date: Tue May 18 12:07:45 2021 +0200 + + libmm-glib: remove unused cmp_allow_roaming() method + + mm-bearer-properties.c:725:1: warning: 'cmp_allow_roaming' defined + but not used [-Wunused-function] + cmp_allow_roaming (gboolean a, + ^~~~~~~~~~~~~~~~~ + + (cherry picked from commit a325acd6b1ae3376bb0f9f3eb83ce44617115a55) + + libmm-glib/mm-bearer-properties.c | 19 ------------------- + 1 file changed, 19 deletions(-) + +commit 84388c162dd08677fc98a54c011c2ef4aa6639c6 +Author: Aleksander Morgado +Date: Tue May 18 11:28:18 2021 +0200 + + core: drop "volatile" for g_once_init_enter locations + + This fixes a few (fatal in gcc 11) warnings. + + See https://gitlab.gnome.org/GNOME/glib/-/issues/600 + + (cherry picked from commit 268cab885b62526bb97794cb6b9e8b0f97084841) + + build-aux/mm-enums-template.c | 8 +++---- + build-aux/mm-errors-template.c | 8 +++---- + src/mm-log.c | 2 +- + src/mm-private-boxed-types.c | 48 + +++++++++++++++++++++--------------------- + 4 files changed, 33 insertions(+), 33 deletions(-) + +commit 2b0e0ed48566c7b94e1d3520af1707d0f958c6b8 +Author: Clayton Craft +Date: Fri Apr 16 20:42:15 2021 -0700 + + sms-part-3gpp: add flag for indicating PDU is transfer-route message + + When the message is a transfer-route MT, there is no SMSC address to + parse out. This flag allows indicating when the PDU is one such + message. + + (cherry picked from commit 43c39d5226484eba99211b2fa1add2ae5b398ebf) + + src/mm-broadband-modem-mbim.c | 1 + + src/mm-broadband-modem-qmi.c | 5 +++++ + src/mm-sms-part-3gpp.c | 42 + +++++++++++++++++++++++------------------- + src/mm-sms-part-3gpp.h | 1 + + 4 files changed, 30 insertions(+), 19 deletions(-) + +commit 78d294da18eb11ba44bc2ccd189a522c3721e3bb +Author: Clayton Craft +Date: Sat Apr 17 00:53:27 2021 -0700 + + broadband-modem-qmi: Handle transfer-route MT messages + + This handles transfer-route MT messages, automatically ACKing any that + need to be ACKed. + + Based on work by Angus Ainslie and Elias Rudberg + + (cherry picked from commit 205e9edf3edddfa73b1a9b8ddaff4e3779a20e61) + + src/mm-broadband-modem-qmi.c | 74 + +++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 73 insertions(+), 1 deletion(-) + +commit 17a09e23f96c5ea7dbd8605aa4211ea161ba7dd4 +Author: Aleksander Morgado +Date: Sat May 15 00:34:44 2021 +0200 + + build: require libqmi 1.28.4 + + We're going to use add support for the transfer-route MT messages in + the stable MM 1.16 branch, so we should make sure the related QMI + messages have been added to the basic collection, as already done in + libqmi 1.28.4. + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fead7038b963efd16fcf7df62064d0983bf9cd2e +Author: Aleksander Morgado +Date: Tue May 4 00:30:11 2021 +0200 + + ci: stable 1.16 branch relies on libqmi 1.28 and libmbim 1.24 + + So make all CI pipelines on the stable branch run with those specific + libqmi and libmbim branches. + + .gitlab-ci.yml | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit 3cec1a0104cbae3406bca9198f552f303efd6c12 +Author: Aleksander Morgado +Date: Wed Apr 28 22:41:06 2021 +0200 + + tools: disable stub tester if no introspection enabled + + TEST: test-stub... + /MM/stub/modem/interface: dbus-daemon[48020]: [session uid=0 + pid=48020] Activating service name='org.freedesktop.ModemManager1' + requested by ':1.0' (uid=0 pid=48005 + comm="/builds/mobile-broadband/ModemManager/tools/tests/") + Traceback (most recent call last): + File + "/builds/mobile-broadband/ModemManager/tools/test-modemmanager-service.py", + line 7, in + gi.require_version('ModemManager', '1.0') + File "/usr/lib/python3/dist-packages/gi/__init__.py", line 129, + in require_version + raise ValueError('Namespace %s not available' % namespace) + ValueError: Namespace ModemManager not available + dbus-daemon[48020]: [session uid=0 pid=48020] Activated + service 'org.freedesktop.ModemManager1' failed: Process + org.freedesktop.ModemManager1 exited with status 1 + + (cherry picked from commit 7b7bbdd999d00446966f100212bc469970e769a3) + + tools/tests/Makefile.am | 3 +++ + 1 file changed, 3 insertions(+) + +commit 021c3dd6f11dc86103493ea08c9a60fc584d8c2a +Author: Aleksander Morgado +Date: Wed Apr 28 21:27:22 2021 +0200 + + ci: disable introspection and gtk-doc in all tests that don't need it + + The template image we're using already contains all the necessary + build deps to enable introspection and gtk-doc, so we need to + explicitly disable them where we don't need them, or otherwise they'll + be automatically enabled as the deps are found. + + (cherry picked from commit 4593eec17385c190747df48155f95d71c591102e) + + .gitlab-ci.yml | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +commit b877baaa4baae077e54260c3b705ec89a4a35acf +Author: Aleksander Morgado +Date: Wed Apr 28 21:21:34 2021 +0200 + + ci: use latest ubuntu LTS by default + + (cherry picked from commit d9072562cd8d03dc72f072a78e73c24fe4193b8a) + + .gitlab-ci.yml | 28 ++++++++++++++++------------ + 1 file changed, 16 insertions(+), 12 deletions(-) + +commit 0dbaacf04e52cc2e4b8351e1c325e136ba2541cf +Author: Benjamin Tissoires +Date: Thu Apr 8 10:07:45 2021 +0200 + + CI: make use of ci-templates + + full list of benefits at: + https://freedesktop.pages.freedesktop.org/ci-templates/templates.html#why-use-the-ci-templates + + But the main ones are: + - reproducible (just download the container and run the `script` part + to be in the same environment the CI was running) + - no more before script that pulls hundreds of MB and spend useless + time. + + Signed-off-by: Benjamin Tissoires + (cherry picked from commit 01f2109ae0bb8ac9a966f69f88ec2b526b68269b) + + .gitlab-ci.yml | 48 +++++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 43 insertions(+), 5 deletions(-) + +commit 722ae98ba6f920815cf534869bc9b1a8ebdd80f5 +Author: Aleksander Morgado +Date: Mon May 3 22:09:41 2021 +0200 + + foxconn: don't assume parent location is available + + If ModemManager is not built with QMI support, the generic MBIM modem + object will not have any location support, so we cannot assume that + iface_modem_location_parent will be valid and that it will have all + load_location_capabilities(), enable_location_gathering() and + disable_location_gathering() implemented. + + Fixes + https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/362 + + (cherry picked from commit e1567c30df5a0bf320b654cd85942bdff5db6144) + + .../foxconn/mm-broadband-modem-foxconn-t77w968.c | 113 + ++++++++++++++------- + 1 file changed, 79 insertions(+), 34 deletions(-) + +commit b593df29bc8165d3afc771d2c9c4587a3bdf0a11 +Author: Aleksander Morgado +Date: Wed Apr 28 21:58:36 2021 +0200 + + broadband-modem-mbim: fix build with libmbim >= 1.25.3 + + src/mm-broadband-modem-mbim.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 7a3d9ab290f1ea916248163ac55746caf0a04f53 +Author: Aleksander Morgado +Date: Wed Apr 21 11:53:17 2021 +0200 + + build: post-release version bump to 1.16.5 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e0048b690cfd93da4fa47be110008bac260462a8 +Author: Aleksander Morgado +Date: Wed Apr 21 11:21:08 2021 +0200 + + release: bump version to 1.16.4 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0325cd530c35e0854b3f2a6624c7fdc4cad69995 +Author: Aleksander Morgado +Date: Wed Apr 21 11:20:53 2021 +0200 + + NEWS: update for 1.16.4 + + NEWS | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 50 insertions(+) + +commit 1cd612aab46e442075defeab7f0ce8ba97ba11d1 +Author: Aleksander Morgado +Date: Wed Apr 21 11:33:53 2021 +0200 + + build: disable gtkdocize in autoreconf + + We have a custom modified gtk-doc.make file in our sources, which + disables the gtkdoc-rebase on local install step, so we don't want + autoreconf to copy a different one when we're bootstrapping. + + (cherry picked from commit 4ae623c37b5eb395c79b49a044958c09fd6d23a7) + + autogen.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5a3dd6d4da2afa4df83781465cd5975ba337d6f5 +Author: Aleksander Morgado +Date: Mon Apr 12 23:37:19 2021 +0200 + + cli: avoid attempting to setup timeout on NULL proxy + + mm_manager_get_proxy() may actually return NULL if creating the + internal GDBusProxy for the Manager interface fails. + + (cherry picked from commit 5a735317f7c0c42b2ddce52dbf1fa1edfc1c41f4) + + cli/mmcli.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 2ed8ee5257e6479f12008b84cf93a196a75ba273 +Author: Aleksander Morgado +Date: Mon Apr 12 23:06:22 2021 +0200 + + kerneldevice: fix segfault when processing event for non-existing port + + ModemManager[6954]: [1618260091.319919] [br0] invalid + sysfs path read for net/br0 + ** + ERROR:kerneldevice/mm-kernel-device-generic.c:235:ptr_array_add_sysfs_attribute_link_basename: + assertion failed: (array && sysfs_path && attribute) + Bail out! + ERROR:kerneldevice/mm-kernel-device-generic.c:235:ptr_array_add_sysfs_attribute_link_basename: + assertion failed: (array && sysfs_path && attribute) + + Thread 1 "ModemManager" received signal SIGABRT, Aborted. + (gdb) bt + #0 0x00007ffff7438ef5 in raise () at /usr/lib/libc.so.6 + #1 0x00007ffff7422862 in abort () at /usr/lib/libc.so.6 + #2 0x00007ffff76c2084 in () at /usr/lib/libglib-2.0.so.0 + #3 0x00007ffff771d85d in g_assertion_message_expr () at + /usr/lib/libglib-2.0.so.0 + #4 0x00005555556a5337 in + ptr_array_add_sysfs_attribute_link_basename (array=0x5555557de520, + sysfs_path=0x0, attribute=0x555555703bd8 "driver", out_value=0x0) + at kerneldevice/mm-kernel-device-generic.c:235 + #5 0x00005555556a542b in + preload_contents_other (self=0x5555557a6c60) at + kerneldevice/mm-kernel-device-generic.c:255 + #6 0x00005555556a6485 in preload_contents (self=0x5555557a6c60) + at kerneldevice/mm-kernel-device-generic.c:517 + #7 0x00005555556a7fb6 in check_preload (self=0x5555557a6c60) + at kerneldevice/mm-kernel-device-generic.c:980 + #8 0x00005555556a855f in initable_init (initable=0x5555557a6c60, + cancellable=0x0, error=0x7fffffffe5c8) at + kerneldevice/mm-kernel-device-generic.c:1127 + #9 0x00007ffff78a2f41 in g_initable_new_valist () at + /usr/lib/libgio-2.0.so.0 + #10 0x00007ffff78a2ffa in g_initable_new () at + /usr/lib/libgio-2.0.so.0 + #11 0x00005555556a8205 in mm_kernel_device_generic_new_with_rules + (props=0x5555557a5fa0, rules=0x7fffec001e30, error=0x7fffffffe5c8) + at kerneldevice/mm-kernel-device-generic.c:1042 + #12 0x00005555556a827d in mm_kernel_device_generic_new + (props=0x5555557a5fa0, error=0x7fffffffe5c8) at + kerneldevice/mm-kernel-device-generic.c:1063 + #13 0x00005555555aba9c in handle_kernel_event + (self=0x555555793220, properties=0x5555557a5fa0, + error=0x7fffffffe5c8) at mm-base-manager.c:414 + + (cherry picked from commit 3d5a994ca8d8e766fd87a85d346c5b21f5e6c53e) + + src/kerneldevice/mm-kernel-device-generic.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit b793fdc1c7a8a57a8e229f12861de0375174b152 +Author: Aleksander Morgado +Date: Thu Apr 8 22:24:04 2021 +0200 + + iface-modem-time: fix invalid read when loading network timezone fails + + ==226546== Invalid read of size 4 + ==226546== at 0x5068CB7: g_error_matches (in + /usr/lib/libglib-2.0.so.0.6600.7) + ==226546== by 0x1BAC86: load_network_timezone_ready + (mm-iface-modem-time.c:218) + ==226546== by 0x4EA827E: g_simple_async_result_complete (in + /usr/lib/libgio-2.0.so.0.6600.7) + ==226546== by 0x17AE2C: at_command_ready (mm-base-modem-at.c:538) + ==226546== by 0x4EA827E: g_simple_async_result_complete (in + /usr/lib/libgio-2.0.so.0.6600.7) + ==226546== by 0x24B475: serial_command_ready + (mm-port-serial-at.c:378) + ==226546== by 0x4EA827E: g_simple_async_result_complete (in + /usr/lib/libgio-2.0.so.0.6600.7) + ==226546== by 0x244F94: command_context_complete_and_free + (mm-port-serial.c:141) + ==226546== by 0x246861: port_serial_got_response + (mm-port-serial.c:755) + ==226546== by 0x246923: port_serial_timed_out + (mm-port-serial.c:785) + ==226546== by 0x50863C3: ??? (in + /usr/lib/libglib-2.0.so.0.6600.7) + ==226546== by 0x5085B83: g_main_context_dispatch (in + /usr/lib/libglib-2.0.so.0.6600.7) + + (cherry picked from commit b766ded3ca58cee202bd4567dd5530f04dc2290d) + + src/mm-iface-modem-time.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit ab6033e9582ec79a8e0c0a7735a4dbad0e3f8a6b +Author: Aleksander Morgado +Date: Thu Apr 8 22:40:20 2021 +0200 + + libmm-glib,bearer-properties: fix usage of CMP_FLAGS_NO_RM_PROTOCOL + + (cherry picked from commit 3d665d22093b985f6860170bca8d33a5562056d1) + + libmm-glib/mm-bearer-properties.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 124c2c672b773a366decec223aa8bec33f8bbd80 +Author: Aleksander Morgado +Date: Wed Mar 24 21:50:42 2021 +0100 + + iface-modem: avoid check for SIM swap if no interface skeleton + available + + (cherry picked from commit 9f7bbf28d210a4986f2d0d353e4e37024bc91c4a) + + src/mm-iface-modem.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +commit b0021c3e8c02ed595e651dd4a7561cdeaef647c0 +Author: Aleksander Morgado +Date: Wed Mar 24 21:47:54 2021 +0100 + + iface-modem: avoid lock info update if no interface skeleton available + + Fixes + https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/351 + + (cherry picked from commit 96d83392a850b84888661f68cb170dd87fcd3c85) + + src/mm-iface-modem.c | 16 +++++++++++++--- + 1 file changed, 13 insertions(+), 3 deletions(-) + +commit 15cd1d7003c6a4942e31c57a658029ba36c27c2f +Author: Dylan Van Assche +Date: Tue Mar 16 19:28:09 2021 +0100 + + quectel: ignore QGPSURC + + QGPSURCs are not ignored and causes calls to be rejected in some cases + + (cherry picked from commit 192e067f97153125fe9d3362c750146a5a7215cf) + + plugins/quectel/mm-broadband-modem-qmi-quectel.c | 10 +++++ + plugins/quectel/mm-broadband-modem-quectel.c | 10 +++++ + plugins/quectel/mm-shared-quectel.c | 48 + +++++++++++++++++++++++- + plugins/quectel/mm-shared-quectel.h | 7 +++- + 4 files changed, 72 insertions(+), 3 deletions(-) + +commit 99bffc03cff060a752c0c9a4af0e7d06847c0c00 +Author: Aleksander Morgado +Date: Wed Mar 24 11:00:22 2021 +0100 + + libmm-glib,bearer-properties: fix 'allowed-auth' comparison + + (cherry picked from commit 4b19b9693f03ab48c6707508d27b24e38294e022) + + libmm-glib/mm-bearer-properties.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit eed71a6048de040816f81dcf2031ece6fd7eb679 +Author: Aleksander Morgado +Date: Fri Mar 12 17:44:44 2021 +0100 + + base-bearer: ignore forced disconnections + + If using PPP, ModemManager is never in charge of deciding when the + connection is finished, because that would end up making ModemManager + try to use the TTY port while pppd is still using it. + + When the modem goes unregistered for some time, we should not force + the disconnection of the bearer object, we still need to wait for pppd + to tell us the modem is disconnected. + + Fixes + https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/331 + + (cherry picked from commit 3e58fbe547115bd875754806340b3bb39cc7b053) + + src/mm-base-bearer.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit c5a86261cc1352d040313efa47247821a8d792cf +Author: Aleksander Morgado +Date: Sun Mar 21 13:44:16 2021 +0100 + + cinterion: make sure FALSE sets GError in parse_smong_response() + + The g_regex_match_full() method may return FALSE without setting the + GError, so that case needs to be considered. + + In addition to that, the following g_assert() was not doing what it + should have been, as it was comparing the address of the variable and + not the variable itself; rework the code to avoid that as well: + g_assert (access_tech != MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN); + + (cherry picked from commit 634682b602dd51efbda42a8b2e8764b9bb0024e2) + + plugins/cinterion/mm-modem-helpers-cinterion.c | 48 + +++++++++++----------- + .../cinterion/tests/test-modem-helpers-cinterion.c | 29 ++++++++++--- + 2 files changed, 48 insertions(+), 29 deletions(-) + +commit efef1132101345f48bfe9102ddebed194b3c6cd6 +Author: Aleksander Morgado +Date: Sun Mar 21 13:05:27 2021 +0100 + + cinterion: make sure FALSE sets GError in provcfg_response_to_cid() + + The g_regex_match_full() method may return FALSE without setting the + GError, so that case needs to be considered. + + Reported by Jan Mazura. + + Fixes + https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/347 + + (cherry picked from commit d01bca493dad933b9df51bec1254c79089ffa1c7) + + plugins/cinterion/mm-modem-helpers-cinterion.c | 14 ++++++++++- + .../cinterion/tests/test-modem-helpers-cinterion.c | 27 + ++++++++++++++++++---- + 2 files changed, 35 insertions(+), 6 deletions(-) + +commit 70f4677c211ccbb278eff65dc56a5ea9b0b34085 +Author: Aleksander Morgado +Date: Sun Mar 21 11:24:18 2021 +0100 + + cinterion: allow '*' in Prov/Cfg response + + E.g. in a Cinterion PLS8-E (REVISION 04.004) to match the following + line: + + ^SCFG: "MEopMode/Prov/Cfg","fallback*" + + Fix suggested by Jan Mazura. + + See + https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/347 + + (cherry picked from commit 5285e958abcd734de73a13011b5243bcfdf4d20c) + + plugins/cinterion/mm-modem-helpers-cinterion.c | 2 +- + plugins/cinterion/tests/test-modem-helpers-cinterion.c | 5 +++++ + 2 files changed, 6 insertions(+), 1 deletion(-) + +commit 6c0d96129702e4babdd98255dacaa278633ecd0a +Author: Aleksander Morgado +Date: Tue Mar 23 15:36:58 2021 +0100 + + kerneldevice,udev: don't use autoptr in GUdev types + + The autoptr support in all GUdev types was introduced in + commit 272533131c6ed38479a88805, included in libgudev 232. + + In the MM 1.16 branch we depend on libgudev 147, so avoid + implicitly bumping the required version. + + Fixes + https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/349 + + src/kerneldevice/mm-kernel-device-udev.c | 30 + +++++++++++++++++++++--------- + 1 file changed, 21 insertions(+), 9 deletions(-) + +commit b69da9d037d4857ad22a5efdb3bb9d1f494e4f21 +Author: Aleksander Morgado +Date: Thu Mar 18 11:20:02 2021 +0100 + + base-modem: plug leaks when organizing ports + + The GLists maintained in the logic need to be explicitly freed (just + the lists, not the list contents) if we exit early on error or if we + end up deciding that the specific ports are available but unsupported + by the plugin (e.g. if a plugin that doesn't support net ports finds + net ports in the modem). + + ==225333== 24 bytes in 1 blocks are definitely lost in loss record + 2,024 of 5,525 + ==225333== at 0x483E77F: malloc (vg_replace_malloc.c:307) + ==225333== by 0x506C539: g_malloc (in + /usr/lib/libglib-2.0.so.0.6600.7) + ==225333== by 0x508DC8F: g_slice_alloc (in + /usr/lib/libglib-2.0.so.0.6600.7) + ==225333== by 0x50636B4: g_list_append (in + /usr/lib/libglib-2.0.so.0.6600.7) + ==225333== by 0x17E671: mm_base_modem_organize_ports + (mm-base-modem.c:1298) + ==225333== by 0x1E4409: mm_plugin_create_modem (mm-plugin.c:1094) + ==225333== by 0x162C81: mm_device_create_modem (mm-device.c:481) + ==225333== by 0x15DE60: device_support_check_ready + (mm-base-manager.c:218) + ==225333== by 0x4EA8173: ??? (in /usr/lib/libgio-2.0.so.0.6600.7) + ==225333== by 0x4EAC6E8: ??? (in /usr/lib/libgio-2.0.so.0.6600.7) + ==225333== by 0x16730F: device_context_run_ready + (mm-plugin-manager.c:1533) + ==225333== by 0x4EA8173: ??? (in /usr/lib/libgio-2.0.so.0.6600.7) + + (cherry picked from commit ab007a449638eeacaf6f626b707842af5274db95) + + src/mm-base-modem.c | 21 ++++++++++++--------- + 1 file changed, 12 insertions(+), 9 deletions(-) + +commit 8a1f79bd5d5e2e0f1aa1b00901cbd84aa8e8729f +Author: Aleksander Morgado +Date: Sun Feb 14 22:23:07 2021 +0100 + + charsets: define common translit fallback character + + (cherry picked from commit 8a8e00168b02c5064f01d5da20a97c7268ba1e2b) + + src/mm-charsets.c | 16 +++++++++------- + 1 file changed, 9 insertions(+), 7 deletions(-) + +commit 2e51229c6fb0e235ea0bc41997abb3220d54f974 +Author: Aleksander Morgado +Date: Sun Feb 14 09:14:21 2021 +0100 + + charsets: remove charset_hex_to_utf8() + + No longer used, replaced by the new common conversion methods. + + (cherry picked from commit c84454c1b00da7d33cc4fd917be4be6756317488) + + src/mm-charsets.c | 41 ----------------------------------------- + src/mm-charsets.h | 6 ------ + 2 files changed, 47 deletions(-) + +commit abd41673a2f3ed9178c08975d223ba744970ac40 +Author: Aleksander Morgado +Date: Sun Feb 14 09:09:45 2021 +0100 + + charsets: remove take_and_convert methods + + These methods worked in a very strict way for some encodings, and in a + very very loose way for others. E.g. when converting from hex-encoded + UCS-2, we would attempt to convert as much text as we could even if + the input string was truly not even close to UCS-2. This kind of "do + our best" could make sense when processing e.g. the operator name + reported by the modem, as that is some string to show to the user and + there may be no strict requirement to have it perfectly fine. But the + kind of loose comparison done for UCS-2 doesn't make sense e.g. when + converting USSD responses or SMS messages. + + (cherry picked from commit 0ff3eb7ee0106423519152a68de1621cedf567c8) + + src/mm-charsets.c | 208 + ------------------------------------------------------ + src/mm-charsets.h | 5 -- + 2 files changed, 213 deletions(-) + +commit a030ea61498e736b3ba8405ce8d6e5ea37045fa7 +Author: Aleksander Morgado +Date: Sun Feb 14 09:07:21 2021 +0100 + + cinterion: rework mno decoding to use str_to_utf8() + + (cherry picked from commit ab4c31ec0b2c79285e24b9a117ff5e5c21f8fd71) + + plugins/cinterion/mm-modem-helpers-cinterion.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit b42a60e4803916352143a0fc14032fd7bd50a379 +Author: Aleksander Morgado +Date: Sun Feb 14 09:01:49 2021 +0100 + + cinterion: rework band encoding to use str_to_utf8() + + Also providing support to report errors when attempting to decode the + strings. + + (cherry picked from commit 6bc07b4b1487cfc6e171ec1f2c34958f17202a8b) + + plugins/cinterion/mm-modem-helpers-cinterion.c | 88 + ++++++++++++++++++++------ + 1 file changed, 67 insertions(+), 21 deletions(-) + +commit 251d2096f6a8748b031e8434ccea9a17ea7bcd59 +Author: Aleksander Morgado +Date: Sat Feb 13 16:04:56 2021 +0100 + + helpers: rework normalize_operator() to use str_to_utf8() + + Instead of blindly assuming that we can take whatever string given as + valid UTF-8, we'll always attempt to convert from the current modem + charset into UTF-8. Before we were doing this for hex-encoded UCS2, + but not for example for GSM-7. + + And due to the now applied GSM-7 conversion, the mf627a/mf627b +COPS + parsing unit tests are updated accordingly, because when converting + from an input string that contains byte 0x40 ('@' in UTF-8) as if it + were GSM-7, the 0x40 is taken as character 'ยก', encoded as 0xc2,0xa1 + in UTF-8). + + (cherry picked from commit 16df1e17e6e96f8dd0ba67003c6abb7083b9d7ec) + + plugins/altair/mm-broadband-modem-altair-lte.c | 2 +- + src/mm-broadband-modem.c | 4 +-- + src/mm-modem-helpers.c | 42 + ++++++++++++++++---------- + src/mm-modem-helpers.h | 3 +- + src/tests/test-modem-helpers.c | 8 +++-- + 5 files changed, 36 insertions(+), 23 deletions(-) + +commit bba502c4be260e46c97f266957b3cb1bc67af7eb +Author: Aleksander Morgado +Date: Sat Feb 13 15:45:52 2021 +0100 + + charsets,tests: update take_and_convert tests to str_from/to + + (cherry picked from commit 63fa9eee462de9270e3ab44eab43050877982cf1) + + src/tests/test-charsets.c | 98 + ++++++++++++++++++++++++++--------------------- + 1 file changed, 55 insertions(+), 43 deletions(-) + +commit ada8ec6786cc9aff9b1c93caa62c16292681bdf6 +Author: Aleksander Morgado +Date: Sat Feb 13 14:54:54 2021 +0100 + + cinterion: move sequence to set bands to private ctx + + The sequence of commands is exclusively used during the set current + bands operation, so there is no point in storing it in the private + object data. + + (cherry picked from commit 3ac248a7a6a4ad03d10dc691905e43be8722ab31) + + plugins/cinterion/mm-broadband-modem-cinterion.c | 65 + ++++++++++++++---------- + 1 file changed, 39 insertions(+), 26 deletions(-) + +commit e7a949de935dc09e7012d9bedbf6bd6f0b80f3d4 +Author: Aleksander Morgado +Date: Sat Feb 13 14:44:27 2021 +0100 + + charsets: use new str_from_utf8() instead of + take_and_convert_to_current_charset() + + (cherry picked from commit e5363b546b72403451f14f24502f6c9a90728616) + + plugins/cinterion/mm-broadband-modem-cinterion.c | 77 ++++++++++---- + plugins/mbm/mm-broadband-bearer-mbm.c | 40 ++++--- + src/mm-broadband-modem.c | 126 + +++++++++++------------ + src/mm-broadband-modem.h | 12 --- + 4 files changed, 142 insertions(+), 113 deletions(-) + +commit ee08721984b93303fac2e00ba456b79826a83f4a +Author: Aleksander Morgado +Date: Tue Dec 22 15:10:55 2020 +0100 + + charsets: use new bytearray_to_utf8() instead of hex_to_utf8() + + (cherry picked from commit 395ab06c03086bf127970d14a97102e21222126f) + + src/mm-broadband-modem.c | 20 +++++++++++++++----- + 1 file changed, 15 insertions(+), 5 deletions(-) + +commit c87f85d4709284e2059da9214df1cb9e36cfdb62 +Author: Aleksander Morgado +Date: Mon Dec 21 14:28:08 2020 +0100 + + charsets: use new bytearray_to_utf8() instead of byte_array_to_utf8() + + (cherry picked from commit 5ea4a591a40748c5be5f9f4b14ac4f7a09fe2857) + + src/mm-broadband-modem-mbim.c | 6 ++---- + src/mm-broadband-modem-qmi.c | 6 ++---- + src/mm-charsets.c | 23 ----------------------- + src/mm-charsets.h | 5 ----- + src/mm-sms-part-3gpp.c | 9 +++------ + 5 files changed, 7 insertions(+), 42 deletions(-) + +commit aa67dd24c3853362d385686b6f1acbbc7f94cccf +Author: Aleksander Morgado +Date: Mon Dec 21 14:20:13 2020 +0100 + + charsets: make charset_gsm_unpacked_to_utf8() private + + Use the generic mm_modem_charset_bytearray_to_utf8() instead. + + (cherry picked from commit 033e174e445ff7606ea43191a4a5c141413e10e2) + + plugins/huawei/mm-broadband-modem-huawei.c | 15 ++++++++++----- + src/mm-base-sim.c | 23 ++++++++++++++++------- + src/mm-broadband-modem-mbim.c | 9 ++++++--- + src/mm-charsets.c | 21 +++++++++++---------- + src/mm-charsets.h | 5 ----- + src/mm-sms-part-3gpp.c | 18 +++++++++++------- + src/tests/test-charsets.c | 6 ++++-- + 7 files changed, 58 insertions(+), 39 deletions(-) + +commit 2b05740820c63d4b977b148eda3e1ca2198669b7 +Author: Aleksander Morgado +Date: Mon Dec 21 13:37:13 2020 +0100 + + charsets: use new bytearray_from_utf8() instead of byte_array_append() + + (cherry picked from commit 8bfdfb187b9c911366376f1574dc7e45fe4f0767) + + src/mm-broadband-modem-mbim.c | 9 ++--- + src/mm-broadband-modem-qmi.c | 4 +-- + src/mm-broadband-modem.c | 34 +++++++++---------- + src/mm-charsets.c | 34 ------------------- + src/mm-charsets.h | 9 ----- + src/mm-sms-part-3gpp.c | 5 ++- + src/mm-sms-part-cdma.c | 76 + ++++++++++++++++++++----------------------- + 7 files changed, 59 insertions(+), 112 deletions(-) + +commit cafdcb1311bbe4afbce56f97148b1794cf59621f +Author: Aleksander Morgado +Date: Sun Feb 14 15:23:43 2021 +0100 + + charsets: make charset_utf8_to_unpacked_gsm() private + + Use the generic mm_modem_charset_bytearray_from_utf8() instead. + + (cherry picked from commit 75b37e16b12ca3807852804fed668ba2fd7ca317) + + plugins/huawei/mm-broadband-modem-huawei.c | 24 ++++++--------- + src/mm-broadband-modem-mbim.c | 13 +++----- + src/mm-charsets.c | 49 + +++++++++++++++--------------- + src/mm-charsets.h | 4 --- + src/mm-sms-part-3gpp.c | 17 +++++------ + src/tests/test-charsets.c | 15 +++++---- + 6 files changed, 55 insertions(+), 67 deletions(-) + +commit 061da8e4921862b5de514f4ca82d142debe28be1 +Author: Aleksander Morgado +Date: Fri Nov 27 00:41:40 2020 +0100 + + charsets: new common APIs to convert from/to charsets and UTF-8 + + (cherry picked from commit 9c613d33e1f60501cc8406f6429097d8bda87c59) + + src/mm-charsets.c | 298 + ++++++++++++++++++++++++++++++++++++++++++++++++++++-- + src/mm-charsets.h | 61 +++++++++++ + 2 files changed, 352 insertions(+), 7 deletions(-) + +commit 6e0a686228ac5a2da1b5a97d57c8d60082f24ffa +Author: Aleksander Morgado +Date: Sun Feb 14 13:47:21 2021 +0100 + + charsets: avoid //TRANSLIT when converting to/from charsets + + The //TRANSLIT extension is not always supported by the different + iconv() implementations that we may find out there, so let's + completely avoid using it. + + For some of the charsets it actually didn't make much sense anyway, + e.g. as converting to UTF-16 or UTF-8 would always be possible without + requiring //TRANSLIT to take effect. + + The //TRANSLIT extension was also being used sometimes in the source + charset identification, which was also not fully correct, as we would + only expect it in the target charset identification. + + (cherry picked from commit 6f32c8d38f2c7ad269c4ccf84190ad6e917293a9) + + src/mm-charsets.c | 81 + +++++++++++++++++++++++++++---------------------------- + 1 file changed, 40 insertions(+), 41 deletions(-) + +commit c23b4cd78a38e860130b6673a926272e8f3930a1 +Author: Aleksander Morgado +Date: Thu Nov 26 23:22:57 2020 +0100 + + charsets: make translit optional in utf8_to_unpacked_gsm() + + If the conversion is not fully compatible, the user of the method + needs to request transliteration enabled explicitly in order to avoid + returning errors in this method. + + (cherry picked from commit bc449cbe87ccebccbe35f926e88a2dd110832ddf) + + plugins/huawei/mm-broadband-modem-huawei.c | 5 +++- + src/mm-broadband-modem-mbim.c | 5 ++-- + src/mm-charsets.c | 39 + ++++++++++++++++++++---------- + src/mm-charsets.h | 4 ++- + src/mm-sms-part-3gpp.c | 7 ++++-- + src/tests/test-charsets.c | 3 ++- + 6 files changed, 42 insertions(+), 21 deletions(-) + +commit 5aa572d7f8604e68d08dc678dcc7f9ccc5240530 +Author: Aleksander Morgado +Date: Thu Nov 26 23:07:11 2020 +0100 + + charsets: make translit optional in gsm_unpacked_to_utf8() + + Until now, this method would automatically apply transliteration; + i.e. replacing characters with '?' when no direct translation was + available. -commit 95bb97c41ea635fa4bfc3f6b6a925e4502c25f8d + We can attempt to do that transliteration on strings that are not + critical, e.g. the operator name reported by the network. But we + should not do that on other types of strings, e.g. on SMS contents + that may really have additional purposes than just being + human-readable. + + This commit makes the transliteration option to be explicitly + requested by the caller. + + (cherry picked from commit 5ce97abd73da12b64393be798f2c294d29be2705) + + plugins/huawei/mm-broadband-modem-huawei.c | 2 +- + src/mm-base-sim.c | 2 +- + src/mm-broadband-modem-mbim.c | 6 +- + src/mm-charsets.c | 21 ++++-- + src/mm-charsets.h | 10 ++- + src/mm-sms-part-3gpp.c | 116 + +++++++++++++++++------------ + src/tests/test-charsets.c | 4 +- + 7 files changed, 96 insertions(+), 65 deletions(-) + +commit 64296ce39744c959aca690d0ab9b2b69820240b4 +Author: Aleksander Morgado +Date: Sun Feb 14 10:20:44 2021 +0100 + + libmm-glib,tests: add ishexstr/hexstr2bin/bin2hexstr unit tests + + (cherry picked from commit 5480cb67b283c078770b02766c37768cb0930d7b) + + libmm-glib/tests/test-common-helpers.c | 104 + +++++++++++++++++++++++++++++++++ + 1 file changed, 104 insertions(+) + +commit da57feee719f234f619567eb7df2a9c69817a7bd +Author: Aleksander Morgado +Date: Sun Feb 14 11:06:50 2021 +0100 + + libmm-glib,common-helpers: make hexstr2bin() return a guint8 array + + It makes much more sense than returning a gchar array, as gchar is + signed. + + (cherry picked from commit 34de613deab1c8728118fce389963ecb29ca51e7) + + libmm-glib/mm-common-helpers.c | 10 +++++----- + libmm-glib/mm-common-helpers.h | 2 +- + plugins/altair/mm-modem-helpers-altair-lte.c | 18 ++++++++--------- + plugins/huawei/mm-broadband-modem-huawei.c | 4 ++-- + plugins/huawei/mm-modem-helpers-huawei.c | 30 + ++++++++++++---------------- + src/mm-base-sim.c | 16 +++++++-------- + src/mm-charsets.c | 12 +++++------ + src/mm-modem-helpers-qmi.c | 2 +- + src/mm-modem-helpers.c | 2 +- + src/mm-sms-part-3gpp.c | 2 +- + src/mm-sms-part-cdma.c | 2 +- + 11 files changed, 48 insertions(+), 52 deletions(-) + +commit 7f272cc84e89137b3dcf1a225882a6d5906dc3f6 +Author: Aleksander Morgado +Date: Sun Feb 14 10:46:49 2021 +0100 + + libmm-glib,common-helpers: ishexstr() fails on empty input string + + (cherry picked from commit 6d8610d63ecb8e53e14486533a580ea4f37c644c) + + libmm-glib/mm-common-helpers.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit c1c0319f3e9110155ab19c4838b3372faaa64c53 +Author: Aleksander Morgado +Date: Sun Feb 14 10:43:35 2021 +0100 + + libmm-glib,common-helpers: hexstr2bin fails on empty input string + + Also, remove the trailing NUL byte that was appended to the output + binary stream, as it's not needed in any case. + + (cherry picked from commit 8c30a6b6f813114d0cdc6b8a04ae4336c8393d48) + + libmm-glib/mm-common-helpers.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit ce36979813cdc31692e5ffddd57136aa3165e740 +Author: Aleksander Morgado +Date: Mon Dec 21 13:52:54 2020 +0100 + + libmm-glib,common-helpers: make hexstr2bin() accept input string + length + + Optionally given explicitly, and -1 can be used to assume it's + NUL-terminated. + + (cherry picked from commit a211981d4a12b0ef6cab48b7a04ae9e5674cac01) + + libmm-glib/mm-common-helpers.c | 9 +++++---- + libmm-glib/mm-common-helpers.h | 2 +- + plugins/altair/mm-modem-helpers-altair-lte.c | 2 +- + plugins/huawei/mm-broadband-modem-huawei.c | 2 +- + plugins/huawei/mm-modem-helpers-huawei.c | 2 +- + src/mm-base-sim.c | 4 ++-- + src/mm-charsets.c | 2 +- + src/mm-modem-helpers-qmi.c | 2 +- + src/mm-modem-helpers.c | 2 +- + src/mm-sms-part-3gpp.c | 2 +- + src/mm-sms-part-cdma.c | 2 +- + 11 files changed, 16 insertions(+), 15 deletions(-) + +commit d126fa58069e794fe59b9e48d1b86053522ca9c9 +Author: Aleksander Morgado +Date: Sun Nov 22 17:01:19 2020 +0100 + + libmm-glib,common-helpers: make hexstr2bin() return a GError + + This util method checks whether the input string is a valid hex + string, so make sure we return a GError on failure. + + (cherry picked from commit 657cabcfce6794d2a2f629d63dbd56fc149dab2e) + + libmm-glib/mm-common-helpers.c | 18 ++++-- + libmm-glib/mm-common-helpers.h | 2 +- + plugins/altair/mm-modem-helpers-altair-lte.c | 56 ++++++------------ + plugins/huawei/mm-broadband-modem-huawei.c | 19 +++---- + plugins/huawei/mm-modem-helpers-huawei.c | 2 +- + src/mm-base-sim.c | 85 + ++++++++++------------------ + src/mm-charsets.c | 2 +- + src/mm-modem-helpers-qmi.c | 20 +++---- + src/mm-modem-helpers.c | 5 +- + src/mm-sms-part-3gpp.c | 17 ++---- + src/mm-sms-part-cdma.c | 17 ++---- + 11 files changed, 90 insertions(+), 153 deletions(-) + +commit 24b276a5cbe70b8b283142be6cda251274c7c5af +Author: Aleksander Morgado +Date: Sun Nov 22 16:10:06 2020 +0100 + + charsets: remove unused charset_utf8_to_hex() method + + (cherry picked from commit dbdf67e9f7c55d7f70ed94449160a7ff254359a2) + + src/mm-charsets.c | 28 ---------------------------- + src/mm-charsets.h | 6 ------ + 2 files changed, 34 deletions(-) + +commit 69fcaf3b5c154712bac705f8326210e25b72ca4d +Author: Aleksander Morgado +Date: Sun Nov 22 15:05:56 2020 +0100 + + charsets: don't allow quoting in byte_array_append() + + There's no point in adding a quoting option to this method; if the + caller needs the appended string quoted, it should quote it before + passing it to this method. + + It was nowhere used anyway. + + (cherry picked from commit 8b590721dfdff5c4382dbc3498d92035b2d4ad64) + + src/mm-broadband-modem-mbim.c | 2 +- + src/mm-broadband-modem-qmi.c | 2 +- + src/mm-broadband-modem.c | 6 +----- + src/mm-charsets.c | 5 ----- + src/mm-charsets.h | 1 - + src/mm-sms-part-3gpp.c | 2 +- + src/mm-sms-part-cdma.c | 12 ++---------- + 7 files changed, 6 insertions(+), 24 deletions(-) + +commit 021093232dc1b8f8257ef10e667fceb3f1383ab9 +Author: Aleksander Morgado +Date: Sun Nov 22 15:02:07 2020 +0100 + + charsets: remove HEX charset type + + This is no real charset, it is the fake one we used to represent a + UCS2 hex-encoded string. + + (cherry picked from commit 38a4a9c842bcb0c87bca7b1a5595556fe2c144fc) + + src/mm-charsets.c | 10 ---------- + src/mm-charsets.h | 3 +-- + 2 files changed, 1 insertion(+), 12 deletions(-) + +commit 2122de4a1db0f215b75e20c505a8ada5ff07a195 +Author: Aleksander Morgado +Date: Sun Nov 22 15:00:23 2020 +0100 + + charsets: define charset enum explicitly as flags + + (cherry picked from commit a025e83e5ab10147861334fd94682fdd20fb69d2) + + src/mm-charsets.h | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +commit 36974af255ad5a96824de21400d935a6d2ee0ab2 +Author: Aleksander Morgado +Date: Mon Mar 15 17:46:49 2021 +0100 + + shared-qmi: acquisition order preference TLV always same items + + The acquisition order preference TLV must always have the same number + of elements, just the order of the elements should be different. + + Also, always prefer the acquisition order preference TLV to the + GSM+WCDMA specific one, which is the same logic the modem applies. + + Fixes + https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/340 + + (cherry picked from commit fdfd4b270aa3bb31185feb833691f134c887f869) + + src/mm-modem-helpers-qmi.c | 108 + ++++++++++++++++++++++++--------------------- + src/mm-modem-helpers-qmi.h | 9 ++-- + src/mm-shared-qmi.c | 64 ++++++++++++++++----------- + 3 files changed, 100 insertions(+), 81 deletions(-) + +commit aae5fe5f5bc49fa0ecb87b2b714611ce16744d66 +Author: Aleksander Morgado +Date: Mon Mar 15 15:19:38 2021 +0100 + + shared-qmi: process all feature checks in SSP response together + + Loading capabilities is the very first step of the state machines, and + so we can rely on the "NAS Get SSP" method performed there to process + all feature checks of the SSP response. + + (cherry picked from commit bb5bc9c8c560a24ef2951bdb9e1da18dedd7c5b0) + + src/mm-shared-qmi.c | 21 ++++++++++++++------- + 1 file changed, 14 insertions(+), 7 deletions(-) + +commit 6f68efc862ca92fcc5d28103224dfdcd31ae10e0 +Author: Aleksander Morgado +Date: Mon Mar 15 15:11:41 2021 +0100 + + shared-qmi: if getting TP/SSP fails, assume unsupported + + Until now we were only considering TP/SSP unsupported if we received + a QMI protocol error (e.g. reporting unknown command). + + We now also consider TP/SSP unsupported if the actual request + succeeds, but an error is reported in the response. There is no point + in considering TP/SSP supported if the plain get request without input + TLVs given fails. + + (cherry picked from commit 65a7624ffdd39b015d5013743913af8361e83513) + + src/mm-shared-qmi.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit c96524ca7b822341f227bf7b4b8bc9a5c4c2392a +Author: Aleksander Morgado +Date: Mon Mar 15 17:20:30 2021 +0100 + + shared-qmi: add missing feature check flag initialization to UNKNOWN + + (cherry picked from commit 1a5f90f15bda7b939c75c6b8c7d0022c8f919b42) + + src/mm-shared-qmi.c | 1 + + 1 file changed, 1 insertion(+) + +commit 2f42f208ba9dc2a29548e8f7010d08fd45b3bee0 +Author: Aleksander Morgado +Date: Mon Mar 15 14:58:12 2021 +0100 + + shared-qmi: rename feature check variables + + We want the "extended_lte_band_preference" with the "nas_ssp" prefix, + as we're going to add more checks for SSP features. + + (cherry picked from commit 67b64eb7eeab5c50381014945cfbd73ebc4cbe11) + + src/mm-shared-qmi.c | 68 + ++++++++++++++++++++++++++--------------------------- + 1 file changed, 34 insertions(+), 34 deletions(-) + +commit fb0670637687d77cd8de584dcf7961d76c17e9b1 +Author: Aleksander Morgado +Date: Thu Mar 11 10:33:00 2021 +0100 + + bearer-mbim: plug MbimDevice leak in disconnection context + + (cherry picked from commit a772b70632008d6c375487a8e711b80bb343a931) + + src/mm-bearer-mbim.c | 1 + + 1 file changed, 1 insertion(+) + +commit 00ee27b075562814f0a9eee386d033245abf981d +Author: Aleksander Morgado +Date: Tue Mar 2 17:18:39 2021 +0100 + + broadband-modem-qmi: use updated system info API if libqmi >= 1.29.2 + + (cherry picked from commit b509229d5747434be06e17af26c33fd8072a55f9) + + src/mm-broadband-modem-qmi.c | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) + +commit f776e6ba27f4ffa4d722a48ec1c86ea3e0566dea +Author: Aleksander Morgado +Date: Tue Mar 2 15:02:37 2021 +0100 + + build: post-release version bump to 1.16.3 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 52df1aa4b938e0dbbdfd780befa54fce3bfdf875 +Author: Aleksander Morgado +Date: Tue Mar 2 14:45:57 2021 +0100 + + release: bump version to 1.16.2 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 35962825c035651df39f698c2bef0e5049deab00 +Author: Aleksander Morgado +Date: Tue Mar 2 14:45:33 2021 +0100 + + NEWS: update for 1.16.2 + + NEWS | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 64ea5d1e8170ad8de8432024f5137d63d2395663 +Author: Aleksander Morgado +Date: Mon Mar 1 16:02:33 2021 +0100 + + libmm-glib,tests: include string.h explicitly + + For strlen() + + (cherry picked from commit 438ff54d0308427dd629e2dbb43b12dc7295873b) + + libmm-glib/tests/test-common-helpers.c | 1 + + 1 file changed, 1 insertion(+) + +commit d8539adbe211ad6b20749df24bb5be403b25a0f7 +Author: Aleksander Morgado +Date: Mon Mar 1 15:56:14 2021 +0100 + + modem-helpers-mbim: include string.h explicitly + + For strstr() + + (cherry picked from commit da0e610f5f020775e32f43b3343a02d864492224) + + src/mm-modem-helpers-mbim.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit ef6e6c5303efe613479dae655962c6395321aed3 +Author: Aleksander Morgado +Date: Mon Mar 1 15:55:22 2021 +0100 + + utils: import ptr array lookup with GEqualFunc from GLib 2.54 + + This fixes the build when using GLib < 2.54. + + (cherry picked from commit a9611c62793377d8da08e4cb5e9cb71f5afda22e) + + src/Makefile.am | 2 +- + src/kerneldevice/mm-kernel-device-generic.c | 1 + + src/mm-plugin-manager.c | 1 + + src/mm-utils.c | 47 + +++++++++++++++++++++++++++++ + src/mm-utils.h | 14 +++++++++ + 5 files changed, 64 insertions(+), 1 deletion(-) + +commit f1f1a7e25e007116a1eeb6284d7989218c80289c +Author: Aleksander Morgado +Date: Fri Feb 26 11:16:59 2021 +0100 + + shared-qmi: network registration cancellation logic with asserts + disabled + + g_assert() calls may be disabled, and if so, the network registration + task would never get completed. + + (cherry picked from commit c7d366671f749689c143f7effe2a183eb710def9) + + src/mm-shared-qmi.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4f7ee18d1cf1ce21bba3f2701e408ae83108b3de +Author: Aleksander Morgado +Date: Thu Feb 25 15:17:45 2021 +0100 + + libmm-glib,bearer-properties: fix 'allow roaming' comparison + + Fix the 'allow roaming' setting comparison, which was breaking the + whole bearer properties comparison logic, and therefore making + Simple.Connect() recreate over and over the bearer with the same + settings. + + Fixes 5629f47a59b48f2604fd8e9e4af7209b138aef21 + + (cherry picked from commit f10e4af919df8b92b5680e646a16a490fa80d9c3) + + libmm-glib/mm-bearer-properties.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit bf8a6c41754046b12b4f65d1c0c3569e3f26c793 +Author: Aleksander Morgado +Date: Tue Feb 23 12:19:52 2021 +0100 + + build: post-release version bump to 1.16.1 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7a5a49b75301b38c2bac6a94de5afb2f9930cf4e +Author: Aleksander Morgado +Date: Tue Feb 23 11:35:50 2021 +0100 + + release: bump version to 1.16.0 + + configure.ac | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 7a5eae2a36e9a544bfdffdfa57af76cf60b97bae +Author: Aleksander Morgado +Date: Tue Feb 23 11:11:57 2021 +0100 + + NEWS: update for 1.16.0 + + NEWS | 145 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 145 insertions(+) + +commit bbd3638d1233efbe05993bf79aa48ada97589724 +Author: Aleksander Morgado +Date: Tue Feb 23 11:22:18 2021 +0100 + + build: require libqmi 1.28.0 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a546201470ee1067be5494ab5f678016bb2bc2ec +Author: Aleksander Morgado +Date: Mon Feb 22 15:04:43 2021 +0100 + + bearer-mbim: IP type may be reported as deactivated and still have + IP settings + + If we were requesting for IPv4v6 and we only got IPv4 reported as + activated, we would right away ignore the IPv6 bits, even if we + received IPv6 settings later on when querying for them. Change that, + so that if an IP address of a given type is received, we assume the + corresponding context was really activated even if the modem didn't + report it in the connect set response. + + Fixes + https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/320 + + src/mm-bearer-mbim.c | 61 + +++++++++++++++++++++++++++++++++++----------------- + 1 file changed, 41 insertions(+), 20 deletions(-) + +commit 29d9dc7e0cd9b80e0b75f9833b6bb896c78eda33 +Author: Aleksander Morgado +Date: Wed Feb 17 15:38:50 2021 +0100 + + api,introspection: flag as DEPRECATED the 'number' bearer setting + + This setting is unused since some releases ago, and the corresponding + libmm-glib methods were already flagged as deprecated. Let's add an + explicit mention to this deprecation on the DBus API itself. + + introspection/org.freedesktop.ModemManager1.Modem.Simple.xml | 3 ++- + introspection/org.freedesktop.ModemManager1.Modem.xml | 2 +- + 2 files changed, 3 insertions(+), 2 deletions(-) + +commit 6dd5ced86d80c695be9898b9ac4ea3e50ff64f32 +Author: Aleksander Morgado +Date: Wed Feb 17 15:31:08 2021 +0100 + + libmm-glib,simple-connect-properties: add missing APIs to get/set + RM protocol + + Probably not a big deal, since no one has asked for these in the past + years, but let's add them for completeness with the DBus API. + + docs/reference/libmm-glib/libmm-glib-sections.txt | 2 ++ + libmm-glib/mm-simple-connect-properties.c | 37 + +++++++++++++++++++++++ + libmm-glib/mm-simple-connect-properties.h | 21 +++++++------ + 3 files changed, 51 insertions(+), 9 deletions(-) + +commit c4f215c9cb2d8497e7ebfea2904563526bb08d90 +Author: Aleksander Morgado +Date: Wed Feb 17 15:21:49 2021 +0100 + + libmm-glib,bearer-properties: consume 'rm-protocol' setting + + libmm-glib/mm-bearer-properties.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 69926d93357cc0ed7280586abee1e6871e0894cc +Author: Yegor Yefremov +Date: Mon Feb 15 17:53:39 2021 +0100 + + examples: modem-watcher: get rid of global variables + + Move the code into the main() routine and pass main_loop as + a parameter to the signal handler. + + examples/modem-watcher-python/modem-watcher-python | 25 + ++++++++++++++-------- + 1 file changed, 16 insertions(+), 9 deletions(-) + +commit e685ce9ce51f5f1e18ab3f42106715fd659ed2c6 +Author: Yegor Yefremov +Date: Mon Feb 15 17:53:38 2021 +0100 + + examples: ModemWatcher: convert comments in the doc strings + + Move comments under the class and method definitions. + + Also rework boolean handling. + + examples/modem-watcher-python/ModemWatcher.py | 52 + +++++++++++++-------------- + 1 file changed, 25 insertions(+), 27 deletions(-) + +commit 8bf1869f3c5b69e90b1cef21a04c77ff67f717cc +Author: Yaron Shahrabani +Date: Mon Feb 8 16:37:47 2021 +0000 + + po: add Hebrew translation + + po/LINGUAS | 1 + + po/he.po | 105 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 106 insertions(+) + +commit b2f9771b8559c9cb877d1f44189b390b9704bc1e +Author: Aleksander Morgado +Date: Mon Feb 15 00:43:15 2021 +0100 + + broadband-modem-mbim: detect 5G support in custom data class + + Fixes + https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/301 + + src/mm-broadband-modem-mbim.c | 11 ++++++++--- + src/mm-modem-helpers-mbim.c | 11 +++++++++-- + src/mm-modem-helpers-mbim.h | 5 +++-- + 3 files changed, 20 insertions(+), 7 deletions(-) + +commit 3a32409000ad584ec67b0ddd43b312a37ea5a369 +Author: Yegor Yefremov +Date: Sat Feb 13 17:19:13 2021 +0100 + + examples: network-scan: enable modem before the network scan + + Otherwise we get the following exception: + + Traceback (most recent call last): + File "/root/network-scan-python", line 57, in + networks = modem3gpp.scan_sync() + gi.repository.GLib.Error: mm_core_error_quark: + GDBus.Error:org.freedesktop.ModemManager1.Error.Core.WrongState: + Cannot scan networks: not enabled yet (8) + + examples/network-scan-python/network-scan-python | 4 ++++ + 1 file changed, 4 insertions(+) + +commit c7d0defddeb03a372fb885eab3480cc56f10115b +Author: Yegor Yefremov +Date: Sat Feb 13 17:19:12 2021 +0100 + + examples: network-scan: resolve PEP8 issues + + Use autopep8 utility to resolve issues like spaces before brackets + and wrong hanging indentation. + + Also treat objects like boolean variables to check whether they are + None or not. + + examples/network-scan-python/network-scan-python | 24 + ++++++++++++++---------- + 1 file changed, 14 insertions(+), 10 deletions(-) + +commit f3f05f397a7f08272718ee9a2ee75799a44e7bfb +Author: Aleksander Morgado +Date: Sun Feb 14 23:31:35 2021 +0100 + + device: avoid trying to remove source multiple times + + ModemManager[115879]: [1613341789.760031] [modem3] + completely disposed + + (ModemManager:115879): GLib-CRITICAL **: 23:29:49.760: Source ID + 2379 was not found when attempting to remove it + + Thread 1 "ModemManager" received signal SIGTRAP, Trace/breakpoint + trap. + 0x00007ffff774b343 in g_logv () from /usr/lib/libglib-2.0.so.0 + (gdb) + (gdb) bt + #0 0x00007ffff774b343 in g_logv () at /usr/lib/libglib-2.0.so.0 + #1 0x00007ffff774b5c0 in g_log () at /usr/lib/libglib-2.0.so.0 + #2 0x00007ffff7741c9e in g_source_remove () at + /usr/lib/libglib-2.0.so.0 + #3 0x00005555555aad02 in dispose (object=0x555555831260) + at mm-device.c:802 + #4 0x00007ffff7843755 in g_object_unref () at + /usr/lib/libgobject-2.0.so.0 + #5 0x00005555555a5107 in glib_autoptr_clear_MMDevice + (_ptr=0x555555831260) at mm-device.h:63 + #6 0x00005555555a5125 in glib_autoptr_cleanup_MMDevice + (_ptr=0x7fffffffe090) at mm-device.h:63 + #7 0x00005555555a59ab in device_removed (self=0x555555769220, + subsystem=0x55555577dc50 "tty", name=0x555555869a40 "ttyUSB3") + at mm-base-manager.c:237 + #8 0x00005555555a620d in handle_uevent (self=0x555555769220, + action=0x5555558987b0 "remove", device=0x555555893840) at + mm-base-manager.c:445 + #9 0x00007ffff7381acd in () at /usr/lib/libffi.so.7 + #10 0x00007ffff738103a in () at /usr/lib/libffi.so.7 + #11 0x00007ffff783c8fe in g_cclosure_marshal_generic () at + /usr/lib/libgobject-2.0.so.0 + #12 0x00007ffff7837072 in g_closure_invoke () at + /usr/lib/libgobject-2.0.so.0 + #13 0x00007ffff785fa85 in () at /usr/lib/libgobject-2.0.so.0 + #14 0x00007ffff78535dd in g_signal_emit_valist () at + /usr/lib/libgobject-2.0.so.0 + #15 0x00007ffff7853b40 in g_signal_emit () at + /usr/lib/libgobject-2.0.so.0 + #16 0x00007ffff7e792aa in () at /usr/lib/libgudev-1.0.so.0 + #17 0x00007ffff7742b84 in g_main_context_dispatch () at + /usr/lib/libglib-2.0.so.0 + #18 0x00007ffff7796c21 in () at /usr/lib/libglib-2.0.so.0 + #19 0x00007ffff77420d3 in g_main_loop_run () at + /usr/lib/libglib-2.0.so.0 + #20 0x00005555555a1df4 in main (argc=2, argv=0x7fffffffea88) + at main.c:213 + + src/mm-device.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 7159b8e27ac47af706e0c2e4d4f77460dce7881e +Author: Dylan Van Assche +Date: Sun Jan 31 15:38:31 2021 +0100 + + context: add test-no-suspend-resume cli parameter + + Disables suspend/resume support at runtime. + This is useful for modems which are never turned off + or suspended when the host suspends. + + src/main.c | 10 +++++++--- + src/mm-context.c | 18 ++++++++++++++++++ + src/mm-context.h | 11 +++++++---- + 3 files changed, 32 insertions(+), 7 deletions(-) + +commit 12329ac7880b5a43eed8b7b2c4b932c544f43898 +Author: Aleksander Morgado +Date: Sat Feb 13 11:24:24 2021 +0100 + + examples,python: ignore scan operation in modems without 3GPP + interface + + Traceback (most recent call last): + File + "/home/aleksander/Development/foss/ModemManager/examples/network-scan-python/./network-scan-python", + line 46, in + modem3gpp.set_default_timeout(300000) + AttributeError: 'NoneType' object has no attribute + 'set_default_timeout' + + examples/network-scan-python/network-scan-python | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit dd3310132f135e57c4d45827c8750920f7dbe5ee +Author: Aleksander Morgado +Date: Sat Feb 13 11:12:49 2021 +0100 + + examples,python: fix undefined NameError in modem watcher example + + $ ./modem-watcher-python + [ModemWatcher] ModemManager 1.15.0 service is available in bus + [ModemWatcher] QUALCOMM INCORPORATED (0) modem + managed by ModemManager [863974040050058]: + /org/freedesktop/ModemManager1/Modem/0 + [ModemWatcher] Sierra Wireless Inc. (Sierra Wireless EM7345 + 4G LTE) modem managed by ModemManager [013937003110648]: + /org/freedesktop/ModemManager1/Modem/1 + Traceback (most recent call last): + File + "/home/aleksander/Development/foss/ModemManager/examples/modem-watcher-python/./modem-watcher-python", + line 35, in + watcher = ModemWatcher.ModemWatcher() + File + "/home/aleksander/Development/foss/ModemManager/examples/modem-watcher-python/ModemWatcher.py", + line 48, in __init__ + self.on_name_owner(self.manager, None) + File + "/home/aleksander/Development/foss/ModemManager/examples/modem-watcher-python/ModemWatcher.py", + line 85, in on_name_owner + self.set_available() + File + "/home/aleksander/Development/foss/ModemManager/examples/modem-watcher-python/ModemWatcher.py", + line 64, in set_available + self.on_object_added(self.manager, obj) + File + "/home/aleksander/Development/foss/ModemManager/examples/modem-watcher-python/ModemWatcher.py", + line 101, in on_object_added + modem_index(obj.get_object_path())) + NameError: name 'modem_index' is not defined + + examples/modem-watcher-python/ModemWatcher.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 16d1cf33183d376fa6cb8925e42c77b2e86be2d9 +Author: Yegor Yefremov +Date: Sat Feb 13 09:40:05 2021 +0100 + + examples: rework imports + + Remove unused imports and fix import sorting using isort utility. + + examples/modem-watcher-python/ModemWatcher.py | 6 +++--- + examples/modem-watcher-python/modem-watcher-python | 6 ++++-- + examples/network-scan-python/network-scan-python | 6 ++++-- + examples/sms-python/sms-python | 6 ++++-- + 4 files changed, 15 insertions(+), 9 deletions(-) + +commit 6107774bb21e55028b87a7d3f23762324410543b +Author: Aleksander Morgado +Date: Sun Jan 17 14:13:40 2021 +0100 + + filter: add missing reference to rpmsg filter + + src/mm-filter.c | 1 + + 1 file changed, 1 insertion(+) + +commit 8838546631958d88ecd0c72c557102876f5b87e4 +Author: Aleksander Morgado +Date: Fri Feb 5 14:56:59 2021 +0100 + + README: add CoC info + + README | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit e732a9afcc8e662df14a7fb5c78a1023705d5ff1 +Author: Andrew Lassalle +Date: Tue Feb 2 13:50:51 2021 -0800 + + broadband-modem-qmi: remove unused variables + + src/mm-broadband-modem-qmi.c | 1 - + 1 file changed, 1 deletion(-) + +commit 52b44aeb4956a223ce9edcb596a896413b4d69fc +Author: Andrew Lassalle +Date: Tue Feb 2 13:43:16 2021 -0800 + + cinterion: remove unused variables + + plugins/cinterion/mm-broadband-modem-cinterion.c | 2 -- + plugins/cinterion/mm-modem-helpers-cinterion.c | 1 - + 2 files changed, 3 deletions(-) + +commit 66010ed17e71714f35bb34a66cc53e1102a28651 +Author: Lukas Senger +Date: Thu Jan 14 15:22:19 2021 +0100 + + simtech: fix updating bitmask during gps disabling + + During disabling of gps sources the bitmask that keeps track of + them is + updated incorrectly. Instead of removing the current source, all other + sources are removed from the mask. + + One problem that arises from this is, that when you enable GPS + after it + has been disabled completely (e.g. by disabling all GPS sources), the + code will not send a "+CGPS=1,1" command because it incorrectly + assumes + that GPS is still enabled on the device. + + plugins/simtech/mm-shared-simtech.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 268bf4f98af0adeef703f02469e47259c73be91e +Author: Aleksander Morgado +Date: Sun Jan 17 10:33:45 2021 +0100 + + core: update copyright years to 2021 + + cli/mmcli.c | 2 +- + docs/reference/api/ModemManager-docs.xml | 1 + + docs/reference/libmm-glib/libmm-glib-docs.xml | 1 + + src/mm-context.c | 2 +- + 4 files changed, 4 insertions(+), 2 deletions(-) + +commit 6c0c67d6f0a65af416448236f07cdccfd1993dd8 +Author: Aleksander Morgado +Date: Sat Jan 16 17:44:42 2021 +0100 + + doc: skip running gtkdoc-rebase on local install step + + We can leave the relative paths to other books (e.g. '../glib' or + '../ModemManager') because running gtkdoc-rebase seems to be broken + since the 1.29 release, see: + + https://gitlab.gnome.org/GNOME/gtk-doc/-/issues/138 + + gtk-doc.make | 1 - + 1 file changed, 1 deletion(-) + +commit 38267952284ded86bb0ea7ca9139236bc80556a3 +Author: Aleksander Morgado +Date: Sat Jan 16 17:42:36 2021 +0100 + + docs: add 'online-location' references + + So that the gtkdoc-rebase step fixes the URLs to contain the correct + links; e.g.: + + $ make dist V=s + make[8]: Entering directory + '/home/aleksander/Development/foss/ModemManager/docs/reference/libmm-glib' + make \ + top_distdir="../../../ModemManager-1.15.0" + distdir="../../../ModemManager-1.15.0/docs/reference/libmm-glib" + \ + dist-hook + ../ModemManager/ -> + https://www.freedesktop.org/software/ModemManager/doc/latest/ModemManager/ + (914) + ../gio/ -> https://developer.gnome.org/gio/unstable/ (2564) + ../glib/ -> https://developer.gnome.org/glib/unstable/ (5534) + ../gobject/ -> https://developer.gnome.org/gobject/unstable/ (499) + make[8]: Leaving directory + '/home/aleksander/Development/foss/ModemManager/docs/reference/libmm-glib' + + Fixes + https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/298 + + docs/reference/api/ModemManager-docs.xml | 2 ++ + docs/reference/libmm-glib/libmm-glib-docs.xml | 2 ++ + 2 files changed, 4 insertions(+) + +commit d1bc67936539b1cf59f07f8f168486263b0005f5 +Author: Aleksander Morgado +Date: Sat Jan 16 15:37:35 2021 +0100 + + build: add new RELEASING doc explaining how releases are made + + RELEASING | 37 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 37 insertions(+) + +commit 9c353cf6f0a7650cfe1b914d6881890de9dff0b0 Author: Louis-Alexis Eyraud Date: Fri Jan 15 15:14:58 2021 +0100 @@ -26,12 +2242,51 @@ https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/306 Signed-off-by: Louis-Alexis Eyraud - (cherry picked from commit 9c353cf6f0a7650cfe1b914d6881890de9dff0b0) plugins/zte/mm-broadband-modem-zte.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) -commit 42a3a2d50b30580cf13e57b69c14a9c7611e49c2 +commit 89cd1696c3a105f314b1a7e275c68377ed6df5e4 +Author: Frederic Martinsons +Date: Thu Nov 12 10:48:11 2020 +0100 + + tools: add unit test for test-modemmanager-service.py + + The tests spawn the service via GTestDBus framework and make + some test API call while checking libmm interface to verify + that informations are well propagated. + + To be able to use the fresh built libmm typelib, I used a + wrapper script to set GI_TYPELIB_PATH (because DBus activation + process clean the environment so it is not possible to set + it directly in the file). + + This requires also the install of libgirepository-dev and python3-gi + in the CI docker. + + Signed-off-by: Frederic Martinsons + + .gitignore | 4 + + .gitlab-ci.yml | 4 +- + configure.ac | 2 + + tools/Makefile.am | 2 + + tools/tests/Makefile.am | 46 +++ + .../org.freedesktop.ModemManager1.service.in | 3 + + tools/tests/test-stub.c | 459 + +++++++++++++++++++++ + tools/tests/test-wrapper.sh.in | 5 + + 8 files changed, 523 insertions(+), 2 deletions(-) + +commit 17ea1dfa130001599b7dff421a1b7d71c25faa34 +Author: Aleksander Morgado +Date: Sun Jan 10 15:13:45 2021 +0100 + + docs: add MMBearerPropertiesCmpFlags to ignored list + + docs/reference/libmm-glib/libmm-glib-sections.txt | 1 + + 1 file changed, 1 insertion(+) + +commit d12ab8a25a60323a753e3437c81a984a503deb40 Author: Aleksander Morgado Date: Mon Jan 11 14:18:36 2021 +0100 @@ -40,12 +2295,10 @@ See See https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/302 - (cherry picked from commit d12ab8a25a60323a753e3437c81a984a503deb40) - src/mm-iface-modem.c | 1 + 1 file changed, 1 insertion(+) -commit 17569fd41bd61fd892ae1af1e15e3fbe0045726a +commit 102de14c15b1c278988de376d03262bcb078211d Author: Aleksander Morgado Date: Mon Jan 11 14:13:28 2021 +0100 @@ -57,12 +2310,33 @@ See https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/302 - (cherry picked from commit 102de14c15b1c278988de376d03262bcb078211d) - plugins/telit/mm-broadband-modem-telit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 781371615ead5a11297c7293f1bdb32015915a62 +commit 8f465d44a5f40e1594db4f06b98b2436539a47bf +Author: Timo Jyrinki +Date: Fri Jan 8 15:34:57 2021 +0200 + + po: add Finnish translation + + Translation by JRfi: + https://l10n.gnome.org/vertimus/ModemManager/master/po/fi/ + + po/LINGUAS | 1 + + po/fi.po | 116 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 117 insertions(+) + +commit 8ccd63ef64d8bcc39ac67457674b85c8fe42c265 +Author: Andrew Lassalle +Date: Fri Jan 8 10:49:34 2021 -0800 + + test-sms-part-cdma: fix memory leak + + src/tests/test-sms-part-cdma.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 18b72a046e89d00d7e7b9f2d718c43d64e595de0 Author: Frederic Martinsons Date: Sun Dec 20 18:11:06 2020 +0100 @@ -78,13 +2352,12 @@ assume that in mmcli and protect these calls. Signed-off-by: Frederic Martinsons - (cherry picked from commit 18b72a046e89d00d7e7b9f2d718c43d64e595de0) cli/mmcli-common.c | 4 +++- cli/mmcli-manager.c | 9 +++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) -commit 48f87ac97319a5d1500a7f202a2ff1506bf83398 +commit 2f53a08e5f1eef8c1892dc55f32fbacba85565a0 Author: Frederic Martinsons Date: Sun Dec 20 18:07:44 2020 +0100 @@ -104,46 +2377,253 @@ Closes #289 Signed-off-by: Frederic Martinsons - (cherry picked from commit 2f53a08e5f1eef8c1892dc55f32fbacba85565a0) src/mm-iface-modem.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) -commit e70fbb0d540b1300e0b17f0274109e11719fb4a8 +commit 3d4dd64dd03622ae5d335f0111c54e184de120c7 +Author: Aleksander Morgado +Date: Tue Dec 1 23:26:42 2020 +0100 + + broadband-modem-qmi: disable signal/access-tech polling if indications + enabled + + We can rely on QMI indications when the signal quality and access tech + changes happen, instead of doing explicit polling. + + The modem will run the signal quality retrieval once, and then just + rely on indications, with polling disabled: + + ModemManager[278759]: [1606862198.230492] [modem1] signal + strength (lte): -79 dBm + ModemManager[278759]: [1606862198.230520] [modem1] signal + strength: -79 dBm --> 55% + ModemManager[278759]: [1606862198.230583] [modem1] access + technology changed (unknown -> lte) + ModemManager[278759]: [1606862198.230654] [modem1] signal + quality updated (55) + ModemManager[278759]: [1606862198.230675] [modem1] periodic + signal quality and access technology checks not rescheduled: + unneeded or unsupported + ModemManager[278759]: [1606862198.230692] [modem1] periodic + signal checks disabled + + Fixes + https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/231 + + src/mm-broadband-modem-qmi.c | 20 ++++++++++++++++++-- + 1 file changed, 18 insertions(+), 2 deletions(-) + +commit 47f39c9e1a9f37758027dd5072caafe224351089 +Author: Aleksander Morgado +Date: Tue Dec 1 22:55:56 2020 +0100 + + broadband-modem-qmi: fix disabling of signal strength events + + Attempting to disable the signal strength events was failing because + the protocol handler expects a valid set of thresholds also during the + disabling. So, just pass always the thresholds. + + ModemManager[274522]: [/dev/cdc-wdm1] sent generic request + (translated)... + <<<<<< QMUX: + <<<<<< length = 17 + <<<<<< flags = 0x00 + <<<<<< service = "nas" + <<<<<< client = 3 + <<<<<< QMI: + <<<<<< flags = "none" + <<<<<< transaction = 7 + <<<<<< tlv_length = 5 + <<<<<< message = "Set Event Report" (0x0002) + <<<<<< TLV: + <<<<<< type = "Signal Strength Indicator" (0x10) + <<<<<< length = 2 + <<<<<< value = 00:00 + <<<<<< translated = [ report = 'no' thresholds = '{}' ] + + ModemManager[274522]: [/dev/cdc-wdm1] received generic response + (translated)... + <<<<<< QMUX: + <<<<<< length = 19 + <<<<<< flags = 0x80 + <<<<<< service = "nas" + <<<<<< client = 3 + <<<<<< QMI: + <<<<<< flags = "response" + <<<<<< transaction = 7 + <<<<<< tlv_length = 7 + <<<<<< message = "Set Event Report" (0x0002) + <<<<<< TLV: + <<<<<< type = "Result" (0x02) + <<<<<< length = 4 + <<<<<< value = 01:00:08:00 + <<<<<< translated = FAILURE: NoThresholdsProvided + + src/mm-broadband-modem-qmi.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +commit da159587992d91d61040544fe961a60ef756cf89 +Author: Aleksander Morgado +Date: Tue Dec 1 22:43:35 2020 +0100 + + broadband-modem-qmi: reload initial EPS bearer on data system updates + + src/mm-broadband-modem-qmi.c | 225 + +++++++++++++++++++++++++++++++------------ + 1 file changed, 162 insertions(+), 63 deletions(-) + +commit 2d9b62d23b6abbeea4833bbcb431d0e2adaf04aa +Author: Aleksander Morgado +Date: Tue Dec 1 22:43:16 2020 +0100 + + iface-modem-3gpp: allow requesting the reload of the initial EPS + bearer + + src/mm-iface-modem-3gpp.c | 35 +++++++++++++++++++++++++++++++++++ + src/mm-iface-modem-3gpp.h | 1 + + 2 files changed, 36 insertions(+) + +commit 5629f47a59b48f2604fd8e9e4af7209b138aef21 +Author: Aleksander Morgado +Date: Mon Nov 30 21:51:32 2020 +0100 + + libmm-glib,bearer-properties: allow loose comparisons + + When comparing bearer properties provided by the user versus loaded + from the modem, we shouldn't be very strict, e.g.: + * Password or other fields may not be readable from the device. + * Some fields may not apply at all (e.g. RM protocol for EPS bearers) + * NULL strings could be assumed equal to empty strings. + * If no explicit IP type specified, an IPv4 default may be assumed. + * If no explicit allowed auth specified, 'none' default may be + assumed. + + These loose comparisons are applied when managing the initial EPS + bearer settings and status, and we keep the strict comparison only + during the connection attempt lookup of a bearer with certain + settings, as those bearer objects are all created in the same place + with the same rules. + + libmm-glib/mm-bearer-properties.c | 101 + ++++++++++++++++++++++++++++++++++---- + libmm-glib/mm-bearer-properties.h | 13 ++++- + src/mm-bearer-list.c | 6 ++- + src/mm-iface-modem-3gpp.c | 23 ++++++--- + 4 files changed, 123 insertions(+), 20 deletions(-) + +commit c99cc9210e7a93be1b572d686f5acdeb0160dd3f +Author: Aleksander Morgado +Date: Mon Nov 30 16:05:52 2020 +0100 + + iface-modem-3gpp: log requested/updates initial EPS bearer settings + + src/mm-iface-modem-3gpp.c | 44 + ++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 44 insertions(+) + +commit 5613215db8e5b3d4bbd7d3e6ad937b342ccd4c76 +Author: Aleksander Morgado +Date: Sun Nov 29 22:41:08 2020 +0100 + + broadband-modem-qmi: implement initial EPS bearer settings loading + and setting + + src/mm-broadband-modem-qmi.c | 469 + +++++++++++++++++++++++++++++++++++++++++++ + src/mm-modem-helpers-qmi.c | 51 +++++ + src/mm-modem-helpers-qmi.h | 8 +- + 3 files changed, 526 insertions(+), 2 deletions(-) + +commit 527b4e3232a611bde1cab6e6302924fb65f453a7 +Author: Aleksander Morgado +Date: Sun Nov 29 22:08:04 2020 +0100 + + broadband-modem-qmi: implement initial EPS bearer info loading + + src/mm-broadband-modem-qmi.c | 75 + ++++++++++++++++++++++++++++++++++++++++++++ + src/mm-modem-helpers-qmi.c | 15 +++++++++ + src/mm-modem-helpers-qmi.h | 1 + + 3 files changed, 91 insertions(+) + +commit 295400688acc4d670a1f7c58d45359bb891bf44d +Author: Aleksander Morgado +Date: Sun Nov 29 21:55:48 2020 +0100 + + broadband-modem-qmi: allocate a generic WDS client + + For generic WDS operations not tied to any connection attempt. + + src/mm-broadband-modem-qmi.c | 79 + +++++++++----------------------------------- + 1 file changed, 15 insertions(+), 64 deletions(-) + +commit 7b52efda3421f09ddb5dd4ae65d3d03b7e952490 +Author: Aleksander Morgado +Date: Mon Nov 30 10:35:32 2020 +0100 + + build: require libqmi 1.27.3 to support initial EPS management + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0729ba5c88eb038e60ffbe3faf9431e9650f7ca1 +Author: Aleksander Morgado +Date: Thu Nov 26 23:30:56 2020 +0100 + + broadband-modem-mbim: plug memleak when processing USSD in GSM7 + + src/mm-broadband-modem-mbim.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 7f88280929c350b087751e71e56e81b9b88d3495 +Author: Aleksander Morgado +Date: Sun Nov 22 16:55:22 2020 +0100 + + altair: make sure parse_vendor_pco_info() always returns an error + + The parse_vendor_pco_info() method was returning NULL without error if + the pco info string was empty. + + Under this situation, the code would have tried to add a NULL MMPco + into the pco_list list, which is not desired. + + Avoid this, by making sure a NULL return always sets an error. + + plugins/altair/mm-broadband-modem-altair-lte.c | 6 +++++- + plugins/altair/mm-modem-helpers-altair-lte.c | 6 ++++-- + 2 files changed, 9 insertions(+), 3 deletions(-) + +commit 243272c11178e68914d7cc2dcfdc28248edb2aa7 Author: Aleksander Morgado Date: Mon Dec 14 09:58:59 2020 +0100 cinterion: add AT primary/secondary port type hints for PLS8 - (cherry picked from commit 243272c11178e68914d7cc2dcfdc28248edb2aa7) - plugins/cinterion/77-mm-cinterion-port-types.rules | 2 ++ 1 file changed, 2 insertions(+) -commit 5382e2d64dcf9e1305af55fb7e55e6b0c3760a77 +commit ba4b3f60b7605441bb127be231eab49450c29404 Author: Aleksander Morgado Date: Mon Dec 14 09:58:15 2020 +0100 cinterion: add QCDM and GPS port type hints for PLS62 - (cherry picked from commit ba4b3f60b7605441bb127be231eab49450c29404) - plugins/cinterion/77-mm-cinterion-port-types.rules | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) -commit 7684b8c87c834bce0f1ab141427b82b2e3ed3ac5 +commit 067b09c8358ad92ff0ca3c266d0229e9518069d0 Author: Aleksander Morgado Date: Mon Dec 14 09:35:02 2020 +0100 cinterion: add PLS83 port type hints - (cherry picked from commit 067b09c8358ad92ff0ca3c266d0229e9518069d0) - plugins/cinterion/77-mm-cinterion-port-types.rules | 10 ++++++++++ 1 file changed, 10 insertions(+) -commit 45955463e7b87a0488421284dfb635f91a54d545 +commit bee8a391bf46e33f8378504f71c4e087d7a82fb5 Author: Aleksander Morgado Date: Sun Dec 13 17:33:11 2020 +0100 @@ -152,23 +2632,44 @@ SAR service will be introduced in the stable libmbim 1.26.0, but it's been flagged in the dev 1.25.1 version already. - (cherry picked from commit bee8a391bf46e33f8378504f71c4e087d7a82fb5) - src/mm-broadband-modem-mbim.c | 3 +++ 1 file changed, 3 insertions(+) -commit f125c97ec5fda2b3e4fb69868eebd521ac90e366 -Author: Aleksander Morgado -Date: Thu Nov 26 23:30:56 2020 +0100 +commit 8072ed2d6f4240ceb7b66f5e618192fd54ea94b2 +Author: Torsten Hilbrich +Date: Wed Dec 2 12:46:32 2020 +0100 - broadband-modem-mbim: plug memleak when processing USSD in GSM7 + broadband-modem-mbim: Add MM_BROADBAND_MODEM_MBIM_QMI_UNSUPPORTED - (cherry picked from commit 0729ba5c88eb038e60ffbe3faf9431e9650f7ca1) + This property (initially set to FALSE) controls whether QMI over MBIM + should never be considered. This property is set to TRUE for XMM-based + MBIM devices as they don't support QMI. + + This fixes a probing delay of 15s on a Fibocom L850-GL device + (2cb7:0007) found in the Lenovo T14 Gen 1. + + The establishing of a QMI connection was refused multiple time with + MBIM error OperationNotAllowed. Only the timeout of 15s for this + connection resumed the probing. + + The properties in the MMBroadbandModemMbim are only installed when + WITH_QMI and QMI_MBIM_QMUX_SUPPORTED are set. Actually, this + should only + disable the PROP_QMI_UNSUPPORTED but as this is the only property this + avoids the "unused variable 'self'" warnings/errors when trying to + compile set_property and get_property without QMI support. This can be + changed once other properties are needed. - src/mm-broadband-modem-mbim.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + Fixes + https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/284 -commit 2a743d5b109079cd07ed5afa55fb9a79ccb8d155 + plugins/xmm/mm-broadband-modem-mbim-xmm.c | 3 ++ + src/mm-broadband-modem-mbim.c | 71 + ++++++++++++++++++++++++++++++- + src/mm-broadband-modem-mbim.h | 2 + + 3 files changed, 75 insertions(+), 1 deletion(-) + +commit f80c8d8be6a22accb71f06b33f53daed3d255bec Author: Aleksander Morgado Date: Tue Dec 1 22:59:32 2020 +0100 @@ -182,12 +2683,321 @@ Fixes baefe53ab9c0ea0612d2bf7da64b6f6cf9753bcd - (cherry picked from commit 12dd53a12e81e4f4752ded5579a52751141461ca) - src/mm-broadband-modem-qmi.c | 1 + 1 file changed, 1 insertion(+) -commit 30b13bd23073b64ae686fa6dfd6afb244be9c9d0 +commit d531992897fe4a99005da03e83c818dd138a06d5 +Author: Dylan Van Assche +Date: Sun Nov 29 15:59:49 2020 +0100 + + tests: added parse ERROR response test + + src/tests/test-at-serial-port.c | 75 + ++++++++++++++++++++++++++++++++--------- + 1 file changed, 60 insertions(+), 15 deletions(-) + +commit c15d103ca62cec7287764f1b5d0d3316ac891ce5 +Author: Dylan Van Assche +Date: Sun Nov 29 15:59:21 2020 +0100 + + serial-parsers: also match ERROR responses that are not at end of line + + Do not fail to detect an error response with a call or text + incoming. This happens during port probing when there's no URC + parsers installed in the serial port. This probably will not happen + when the serial port was managed by the modem object.w + + src/mm-serial-parsers.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit c05580ca9a69b491042921d2fe40383fde1657ea +Author: Dylan Van Assche +Date: Fri Nov 27 18:46:42 2020 +0100 + + tests: added parse OK response test + + src/tests/test-at-serial-port.c | 42 + +++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 42 insertions(+) + +commit 750fb2bc4ab9bdc779a9e3919d74c64059b9e963 +Author: Dylan Van Assche +Date: Wed Nov 25 19:58:25 2020 +0100 + + serial-parsers: also match OK responses that are not at end of line + + Do not fail to detect a valid response with a call or text incoming. + This happens also during port probing when there's no URC parsers + installed in the serial port. This probably will not happen when the + serial port was managed by the modem object. + + src/mm-serial-parsers.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 446d497040f5e71a1d6a842b82cdab07ef54a0fa +Author: Eric Caruso +Date: Mon Nov 30 09:25:10 2020 -0800 + + introspection: fix Bearer documentation + + If e.g. a bearer with IPv6 configuration has DNS servers but exports + its link-local address, MM will avoid giving it the "static" method + type, and instead fall back to the "dhcp" type. However, it may + still have DNS information. Therefore, the comment that "method" is + the only property on configuration with type DHCP is misleading. + + introspection/org.freedesktop.ModemManager1.Bearer.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 756894bc7682250821c3b80e96fea66d73a3e837 +Author: Dylan Van Assche +Date: Fri Nov 27 18:07:02 2020 +0100 + + build: Allow elogind for suspend/resume support + + configure.ac | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit 1f0c04644dd48b086bc00f9765f94342f3badc3f +Author: Pavan Holla +Date: Mon Nov 23 20:24:05 2020 +0000 + + base-sim: Reprobe modem if puk lock is discovered after sending pin1 + + Enabling/Disabling/Changing/Sending the PIN1 lock is usually + limited to + 3 retries. If these attempts are exhausted, the modem is puk_locked. + We reprobe the modem to get rid of any unwanted interfaces and move + to a locked state. + + src/mm-base-sim.c | 33 ++++++++++++++++++++++++++------- + 1 file changed, 26 insertions(+), 7 deletions(-) + +commit 38f6704fa1d6f602be84bcbf016b3386ac82c426 +Author: Pavan Holla +Date: Mon Nov 23 17:52:17 2020 +0000 + + base-sim: Reprobe modem if lock status cannot be read after sending + puk + + If the lock status cannot be read during a puk unblock attempt, + reprobe + the modem. It is likely that the SIM was permanently blocked if + the lock + status cannot be read. + + src/mm-base-modem.c | 2 +- + src/mm-base-modem.h | 2 +- + src/mm-base-sim.c | 37 ++++++++++++++++++++++++++----------- + src/mm-broadband-modem.c | 2 +- + src/mm-device.c | 1 + + src/mm-iface-modem.c | 5 ++++- + 6 files changed, 34 insertions(+), 15 deletions(-) + +commit 92c86e2b1bcdaab991d89bdd8f670b248c246bae +Author: Thomas Dendale +Date: Mon Nov 23 09:04:50 2020 +0000 + + huawei: add GPS port type hints for Huawei ME906e + + plugins/huawei/77-mm-huawei-net-port-types.rules | 2 ++ + 1 file changed, 2 insertions(+) + +commit 935e73c8dfc8ad557100005baa506439526a702e +Author: Aleksander Morgado +Date: Sun Nov 22 14:34:07 2020 +0100 + + build: fix build with single plugins + + We need to quote arguments with [] so that lists are not expanded as + different arguments. + + Fixes 65560dd8854f01eec1b28587c37d544bfff360d3 + + m4/mm-enable-plugin.m4 | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 6e0380c165cb7ab2a464ee4cf117e8e6caa4fe25 +Author: Aleksander Morgado +Date: Thu Nov 19 12:51:58 2020 +0100 + + base-modem: order ports by name by default + + When there are multiple ports with the same purpose (e.g. multiple net + data ports, or multiple QMI control ports), sort them by name by + default. + + The port order does not make any difference for ports that have + flagged with a specific purpose (e.g. AT primary). + + The sorting is done both in the internal lists and when looking up + ports with find_ports(). + + src/mm-base-modem.c | 141 + ++++++++++++++++++++++++++-------------------------- + 1 file changed, 71 insertions(+), 70 deletions(-) + +commit 65560dd8854f01eec1b28587c37d544bfff360d3 +Author: Aleksander Morgado +Date: Thu Nov 19 12:00:34 2020 +0100 + + build: qcom-soc plugin by default disabled + + It will not be automatically enabled by the implicit + --enable-all-plugins; instead, it must be explicitly enabled with + --enable-plugin-qcom-soc. + + This plugin only makes sense under very specific SoC builds, so there + is no point in always building it by default. It should be explicitly + requested only in those SoC builds that are really going to make use + of it (e.g. postmarketOS). + + configure.ac | 2 +- + m4/mm-enable-plugin.m4 | 22 ++++++++++++++++++---- + 2 files changed, 19 insertions(+), 5 deletions(-) + +commit 9065e3b22777c5c811a2239de6353ecd3baade5d +Author: Stephan Gerhold +Date: Wed Nov 4 18:20:39 2020 +0100 + + qcom-soc: simplify port type hint rules + + plugins/qcom-soc/77-mm-qcom-soc.rules | 19 ++++--------------- + 1 file changed, 4 insertions(+), 15 deletions(-) + +commit 8fc60754dd1df91560a3123454df1ad0ecf0ac92 +Author: Aleksander Morgado +Date: Thu Oct 22 12:48:35 2020 +0200 + + qcom-soc: new plugin for Qualcomm SoCs + + This plugin implements support for old Qualcomm SoCs like the MSM8916 + or the MSM8974, where: + * control ports are available via RPMSG channels exported as devices + e.g. with rpmsgexport: + https://github.com/andersson/rpmsgexport + * network ports are exposed by the bam-dmux kernel driver: + https://github.com/msm8916-mainline/linux/commits/bam-dmux + + Adding support for newer Qualcomm SoCs (e.g. QRTR+IPA) could be done + in a similar way on this very same plugin. + + This plugin is the first and only one that implements support for a + modem device that is "built in" the system, as opposed to external + modems that may be available via USB or PCI. + + The ID_MM_PHYSDEV_UID based udev tags provided by the plugin provide + the logic to bind all the SoC ports together in the same modem object, + and therefore ID_MM_PHYSDEV_UID should not be used by users to + override the ones set by the plugin. + + All "rpmsg[0-9]*" ports that are considered part of the modem are + flagged as candidate, ignoring the parent "rpmsg_ctrl[0-9]*" ports on + purpose. This setup therefore assumes that the channels have been + exported already as devices (e.g. using rpmsgexport). + + libqmi 1.27.2 is required to support the "WDS Bind Data Port" message. + + .gitlab-ci.yml | 2 +- + configure.ac | 4 +- + plugins/Makefile.am | 25 ++++ + plugins/qcom-soc/77-mm-qcom-soc.rules | 46 +++++++ + plugins/qcom-soc/mm-broadband-modem-qmi-qcom-soc.c | 133 + +++++++++++++++++++++ + plugins/qcom-soc/mm-broadband-modem-qmi-qcom-soc.h | 49 ++++++++ + plugins/qcom-soc/mm-plugin-qcom-soc.c | 92 ++++++++++++++ + plugins/qcom-soc/mm-plugin-qcom-soc.h | 40 +++++++ + plugins/tests/test-udev-rules.c | 11 ++ + 9 files changed, 400 insertions(+), 2 deletions(-) + +commit cab4b54ad106caadb7f70025348f0aab5522bde4 +Author: Aleksander Morgado +Date: Sun Oct 25 14:23:29 2020 +0100 + + core: new 'rpmsg' subsystem + + Most older Qualcomm SoCs (e.g. MSM8916, MSM8974, ...) communicate with + the integrated modem via shared memory (SMD channels). This is similar + to QRTR on newer SoCs, but without the "network" layer. In fact, the + older SoCs also have QRTR, but the modem QMI services are not exposed + there. + + The mainline Linux kernel exposes SMD channels via the "remote + processor + messaging bus" (rpmsg). Through special IOCTL calls it is possible to + create a char device for a rpmsg/SMD channel. We can then use these to + send QMI/AT messages to the modem, much like the ordinary serial char + devices when using a Qualcomm modem through USB. + + This commit introduces support for the new 'rpmsg' subsystem, which + allows exporting QMI-capable and AT-capable ports. + + By default NO rpmsg port is flagged as candidate, it is assumed that + the plugin adding support for the rpmsg subsystem will add specific + rules to do so (e.g. so that non-modem ports are explicitly not + flagged as candidate). + + All rpmsg ports will be probed for AT or QMI capabilities, unless + explicit port type hints (e.g. ID_MM_PORT_TYPE_QMI or + ID_MM_PORT_TYPE_AT_PRIMARY) are set. + + These changes are highly based on the initial integration work done by + Stephan Gerhold in postmarketOS, see: + https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/363 + + cli/mmcli-manager.c | 2 +- + src/mm-base-modem.c | 18 ++++++++++++++++-- + src/mm-filter.c | 7 +++++++ + src/mm-filter.h | 23 ++++++++++++++--------- + src/mm-plugin.c | 5 +++++ + src/mm-port-probe.c | 26 +++++++++++++++++--------- + src/mm-port.h | 4 ++-- + 7 files changed, 62 insertions(+), 23 deletions(-) + +commit 3d12272d183061c11cd80bfe96ae89898f4c081c +Author: Aleksander Morgado +Date: Fri Oct 30 10:05:24 2020 +0100 + + kerneldevice: allow loading port attributes + + In addition to loading port and device properties, we now also allow + loading sysfs properties that are assumed to be static (i.e. their + values won't change since loaded the first time). + + src/kerneldevice/mm-kernel-device-generic.c | 37 ++++++++++++++++++++ + src/kerneldevice/mm-kernel-device-udev.c | 30 ++++++++++++++++ + src/kerneldevice/mm-kernel-device.c | 54 + +++++++++++++++++++++++++++++ + src/kerneldevice/mm-kernel-device.h | 9 +++++ + 4 files changed, 130 insertions(+) + +commit 399a042dad2e2c5cca9e0cfe0af6d41ae1fb0c35 +Author: Aleksander Morgado +Date: Sun Oct 25 15:11:02 2020 +0100 + + bearer-qmi: support binding to data port + + Allow plugins to specify a QmiSioPort value to bind to. This is used + e.g. in the RPMSG+BAM-DMUX setup in order to allow any RPMSG port to + control all the available net ports. + + src/mm-bearer-qmi.c | 73 + +++++++++++++++++++++++++++++++++++++++++++- + src/mm-broadband-modem-qmi.c | 9 ++++-- + src/mm-broadband-modem-qmi.h | 3 ++ + 3 files changed, 82 insertions(+), 3 deletions(-) + +commit 3be07bb38db2f1295d5ef240232ac046a579808b +Author: Aleksander Morgado +Date: Fri Nov 20 00:36:04 2020 +0100 + + tests,cdma: test CDMA SMS with different text lengths + + src/tests/test-sms-part-cdma.c | 38 + ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 38 insertions(+) + +commit 7ac42e76482acd687464f9dca2ef3ac7b67825a1 Author: David Leonard Date: Wed Aug 26 14:19:28 2020 +1000 @@ -199,39 +3009,416 @@ Fix thanks to Peter Hunt - (cherry picked from commit 7ac42e76482acd687464f9dca2ef3ac7b67825a1) - src/mm-sms-part-cdma.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit bd43afa6bc0eca0973ec8058b7c26d9396020a04 +commit c3bc515b8a8eb77b3517cc96827fa48573459dd8 Author: Aleksander Morgado -Date: Mon Nov 16 10:36:10 2020 +0100 +Date: Thu Nov 19 15:52:20 2020 +0100 - build: post-release version bump to 1.14.9 + base-manager: never create kernel device objects for remove events - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + There is no point in creating a new kernel device object just to + process a remove event; instead, do any matching with existing + kernel device objects by subsystem and name, which is what the generic + backend already did anyway. + + This avoids unnecessary lookup of information in sysfs during removal + events, because the port is anyway already gone when we try to look + those up. + + src/mm-base-manager.c | 104 + +++++++++++++++++++++++++++++++------------------- + src/mm-device.c | 73 ++++++++++++++++++++++++++++------- + src/mm-device.h | 21 ++++++---- + 3 files changed, 138 insertions(+), 60 deletions(-) -commit 19c2266a328ce39033f8d15f5c7ff3561149b22b +commit 047805348db1fdaac4c24b6ea4f4d382e6bc03c8 Author: Aleksander Morgado -Date: Mon Nov 16 09:29:39 2020 +0100 +Date: Sat Nov 14 23:17:00 2020 +0100 - release: bump version to 1.14.8 + iface-modem-firmware: allow plugins to ignore carrier info - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + Skip building the firmware version information with carrier config + information if the plugin already knows that the firmware upgrade + method doesn't implement carrier-specific upgrade paths. + + src/mm-broadband-modem.c | 14 +++++++++++++- + src/mm-iface-modem-firmware.c | 43 + ++++++++++++++++++++++++++++++------------- + src/mm-iface-modem-firmware.h | 3 ++- + 3 files changed, 45 insertions(+), 15 deletions(-) -commit 71bf197475d9e99ea2ff2baea2f8eed3adf044c9 +commit c7016f8933a265d9cb325b9d65eab4eecaffd0e4 Author: Aleksander Morgado -Date: Mon Nov 16 09:29:32 2020 +0100 +Date: Sat Nov 14 22:37:16 2020 +0100 - NEWS: update for 1.14.8 + iface-modem-firmware: report generic IDs for both USB and PCI devices - NEWS | 18 ++++++++++++++++++ - 1 file changed, 18 insertions(+) + Instead of assuming that all modules supporting firmware upgrade are + USB based. + + src/mm-iface-modem-firmware.c | 42 + +++++++++++++++++++++++++++++------------- + 1 file changed, 29 insertions(+), 13 deletions(-) + +commit 9533ee2f22a6795d5eea6c88038fef7f02b631e3 +Author: Andrew Lassalle +Date: Sun Nov 15 06:49:42 2020 -0800 + + mm-plugin-manager: Fix typos + + Change-Id: I662061384cf48abd0975e15a91b090aa6b33ac34 + + src/mm-plugin-manager.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit e112896994454d357861619c7db87fcea8b2d2fb +Author: Aleksander Morgado +Date: Mon Nov 9 00:36:13 2020 +0100 + + base-manager: allow forcing the testing without udev + + Even if udev support is really built and available. + + This is extremely useful to test the udev-less setup without fully + recompiling the whole daemon. + + E.g.: the daemon can be run like this: + $ sudo /usr/sbin/ModemManager --debug --test-no-udev + + And then, the kernel events may be reported using mmcli like this: + $ sudo mmcli --report-kernel-event-auto-scan + + src/mm-base-manager.c | 52 + +++++++++++++++++++++++++++------------------------ + src/mm-context.c | 21 +++++++++++++++++++++ + src/mm-context.h | 3 +++ + 3 files changed, 52 insertions(+), 24 deletions(-) + +commit 6e642418bb36c627b9ad6185b36f78216ecaccfe +Author: Aleksander Morgado +Date: Mon Nov 9 21:30:36 2020 +0100 + + kerneldevice,generic: use regex to implement string matching + + Instead of the custom simple implementation which only supported the + '*' modifier in the pattern. This allows us to support e.g. attribute + value matches like e.g. 'DATA[0-9]*_CNTL'. + + src/kerneldevice/mm-kernel-device-generic.c | 57 + ++++++++++++----------------- + 1 file changed, 24 insertions(+), 33 deletions(-) + +commit cca83392f09a2a67178203d493656c4355863106 +Author: Aleksander Morgado +Date: Mon Nov 9 12:11:43 2020 +0100 + + kerneldevice,generic: implement ATTRS matching for any attribute + + Until now we did not support ATTRS{} matches against attributes we + don't support in the core codebase. Implement now a simple lookup + mechanism which traverses the tree of sysfs path from the port sysfs + path to the physical device sysfs path, looking up the attribute + requested. + + This is not completely equivalent to what udev does, because the udev + rules matching ATTRS would usually also include an additional previous + matching e.g. SUBSYSTEMS and such, so that the ATTRS is looked up + exactly in the device that also matches the additional previous + rules. In our case, we just simplify the logic and return the first + one found. + + src/kerneldevice/mm-kernel-device-generic.c | 38 + +++++++++++++++++++++++++++-- + 1 file changed, 36 insertions(+), 2 deletions(-) + +commit 769ba3cee6fa7c985069165ee4ace99c356df949 +Author: Aleksander Morgado +Date: Mon Nov 9 11:39:11 2020 +0100 + + kerneldevice,generic: fix DRIVERS and SUBSYSTEMS checks + + We were applying the DRIVERS check looking only at the single port + driver. Instead, we now lookup and cache all drivers found in the + device tree, and apply the loose DRIVERS check properly looking at all + of them. + + We were applying the SUBSYSTEMS and SUBSYSTEM check looking at the + sysfs path and just hoping the subsystem we're looking for is included + in the path itself. Instead, we now lookup and cache all susystems + found in the device tree, and apply the loose SUBSYSTEMS check + properly looking at all of them. + + E.g. we can now match SUBSYSTEMS="mhi_q" in the following device tree, + without needing it to be found in the sysfs path: + + looking at device + '/devices/pci0000:00/0000:00:1b.0/0000:01:00.0/1001_00.01.00_MBIM/mhi_uci_q/mhi_MBIM': + SUBSYSTEM=="mhi_uci_q" + looking at parent device + '/devices/pci0000:00/0000:00:1b.0/0000:01:00.0/1001_00.01.00_MBIM': + SUBSYSTEMS=="mhi_q" + looking at parent device + '/devices/pci0000:00/0000:00:1b.0/0000:01:00.0': + SUBSYSTEMS=="pci" + + src/kerneldevice/mm-kernel-device-generic.c | 176 + ++++++++++++++++++++-------- + 1 file changed, 127 insertions(+), 49 deletions(-) + +commit ba361f41c497acc81e03d66455db002045db623f +Author: Aleksander Morgado +Date: Mon Nov 9 11:03:48 2020 +0100 + + kerneldevice,generic: support PCI device common attribute names + + The vendor and product IDs stored for the MMKernelDevice object in the + PCI subsystem are mapped to the "vendor" and "device" attributes. + + src/kerneldevice/mm-kernel-device-generic.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit d3a7f701350fc45d590bbc25b84c29549ebd7afd +Author: Aleksander Morgado +Date: Mon Nov 9 00:14:19 2020 +0100 + + kerneldevice,generic: preload port info based on the system bus + + The generic backend implementation was really based on detecting USB + devices, not so much devices in other subsystems. This patch puts the + generic backend at the same level as the udev backend to support + non-USB modems. + + src/kerneldevice/mm-kernel-device-generic.c | 497 + +++++++++++++++------------- + 1 file changed, 262 insertions(+), 235 deletions(-) + +commit bc895067ec5b4acfb71693bfbf73bae9c55a7552 +Author: Aleksander Morgado +Date: Sun Nov 8 21:57:49 2020 +0100 + + kerneldevice,udev: preload port info based on the system bus + + USB, PCI, PCMCIA... all these different system buses expose modems in + different ways. Instead of having single methods to attempt to load + different things for all these device types, detect first which is the + system bus in use, and then perform a bus-specific operation to + preload the different things. + + src/kerneldevice/mm-kernel-device-udev.c | 542 + +++++++++++++------------------ + 1 file changed, 220 insertions(+), 322 deletions(-) + +commit 4550dcfbdf2e1c8c4db0d7b7260144fb653c095d +Author: Aleksander Morgado +Date: Tue Nov 3 10:29:50 2020 +0100 + + kerneldevice: no need to subclass the type getters + + We can just subclass the methods to check whether a given property + exists and to get it as a string, and then implement in the generic + class the actual boolean/int/hex type getters common for all. + + src/kerneldevice/mm-kernel-device-generic.c | 42 +------- + src/kerneldevice/mm-kernel-device-udev.c | 148 + +++++----------------------- + src/kerneldevice/mm-kernel-device.c | 49 +++++---- + src/kerneldevice/mm-kernel-device.h | 15 +-- + 4 files changed, 59 insertions(+), 195 deletions(-) + +commit 1e1fe8fb9c9b02de5f29f33bd46575d4d88f1464 +Author: Aleksander Morgado +Date: Tue Nov 3 10:16:11 2020 +0100 + + kerneldevice: remove all unneeded g_return_if_fail() checks + + These kind of checks are only useful on public APIs really, there + should be no need to have them in internal code. + + src/kerneldevice/mm-kernel-device-generic.c | 51 -------------------- + src/kerneldevice/mm-kernel-device-udev.c | 72 + ++++------------------------- + src/kerneldevice/mm-kernel-device.c | 57 ----------------------- + 3 files changed, 8 insertions(+), 172 deletions(-) + +commit 5d150ed23e122c06e1a4add0ca9c6f7e07502a17 +Author: Aleksander Morgado +Date: Tue Nov 10 23:01:10 2020 +0100 + + core,plugins: consolidate connection/disconnection timeout values + + Each different plugin or protocol had a different connection attempt + value. E.g. QMI and MBIM both used 60s max for the connection attempt, + while the u-blox plugin had up to 180s for ECM based connection + setups. + + This commit consolidates all plugins and protocols to use the same + timeout values for commands that may take long to respond, e.g. a + connection atempt under low signal quality conditions. + + A value of 180s for the connection attempt steps and 120s for a + disconnection attempt step is considered. Note, though, that in some + cases (like a IPv4v6 setup attempt using QMI) we may have more than + one such long step, so this doesn't mean that a connection attempt + will always take less than 180s. + + Users of the connection/disconnection APIs should be able to handle + the case where the attempt times out in their side (e.g. with a lower + DBus request timeout), and which would not mean the actual request + they did really failed. E.g. a connection attempt with a DBus timeout + of 30s may fail in the user with a timeout error, but the attempt + would still go on for as much as the plugin/protocol needs. + + Fixes + https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/270 + + plugins/altair/mm-broadband-bearer-altair-lte.c | 4 ++-- + plugins/cinterion/mm-broadband-bearer-cinterion.c | 4 ++-- + plugins/huawei/mm-broadband-bearer-huawei.c | 10 +++++----- + plugins/icera/mm-broadband-bearer-icera.c | 10 +++++----- + plugins/iridium/mm-bearer-iridium.c | 2 +- + plugins/mbm/mm-broadband-bearer-mbm.c | 6 +++--- + plugins/novatel/mm-broadband-bearer-novatel-lte.c | 4 ++-- + plugins/option/mm-broadband-bearer-hso.c | 4 ++-- + plugins/sierra/mm-broadband-bearer-sierra.c | 4 ++-- + plugins/ublox/mm-broadband-bearer-ublox.c | 6 +++--- + src/mm-base-bearer.h | 11 +++++++++++ + src/mm-bearer-mbim.c | 6 +++--- + src/mm-bearer-qmi.c | 12 ++++++------ + src/mm-broadband-bearer.c | 4 ++-- + 14 files changed, 49 insertions(+), 38 deletions(-) + +commit da77dc7152b76728de0ce63cedf96ceb30f37046 +Author: Aleksander Morgado +Date: Sun Oct 25 07:20:30 2020 +0100 + + plugin: build probing needs based on subsystem + + Don't rely on the QMI or MBIM ports named cdc-wdm, use the device + subsystem instead. + + src/mm-plugin.c | 20 ++++++-------------- + 1 file changed, 6 insertions(+), 14 deletions(-) + +commit 71f5c975430b0455e7ca81b2d2d1bef0174d0be2 +Author: Aleksander Morgado +Date: Sat Oct 24 15:40:57 2020 +0200 + + base-manager: automatic required subsystem detection + + Instead of assuming we require a fixed set of subsystems to monitor, + compile the full list based on what the plugins have requested + themselves. + + src/mm-base-manager.c | 62 +++++++++++++------------------ + src/mm-plugin-manager.c | 98 + ++++++++++++++++++++++++++++++++++--------------- + src/mm-plugin-manager.h | 1 + + src/mm-plugin.c | 6 +++ + src/mm-plugin.h | 1 + + 5 files changed, 103 insertions(+), 65 deletions(-) -commit 46b21606e63ed29c2d93029296a91c6dc513da24 +commit 950abbf8ee8624827d63a0d0186beac81232e8f6 +Author: Aleksander Morgado +Date: Fri Nov 6 12:27:40 2020 +0100 + + core: stop monitoring the 'usb' subsystem + + Back in Linux < 3.6 days, the cdc-wdm ports exposed by the QMI driver + were flagged as owned by the 'usb' subsystem. That changed in 3.6 when + the subsystem was renamed to 'usbmisc': + + https://mail.gnome.org/archives/networkmanager-list/2012-June/msg00125.html + + This patch removes all monitoring of the 'usb' subsystem completely, + which is anyway a valid subsystem but for which we shouldn't need any + special handling. Right now, with newer kernels, we were using that + monitoring exclusively to get notified of full USB device remove + events, which is really not required as we already process the port + removals one by one. + + We simplify the logic everywhere that attempted to match either the + 'usb' or 'usbmisc' subsystems, and we no longer require the explicit + checks for the port name being named 'cdc-wdm[0-9]*' in the code, as + that is already taken care of by the ID_MM_CANDIDATE udev tag rule. + + plugins/anydata/mm-plugin-anydata.c | 2 +- + plugins/broadmobi/mm-plugin-broadmobi.c | 2 +- + plugins/cinterion/mm-plugin-cinterion.c | 2 +- + plugins/dell/mm-plugin-dell.c | 2 +- + plugins/dlink/mm-plugin-dlink.c | 2 +- + plugins/fibocom/mm-plugin-fibocom.c | 2 +- + plugins/foxconn/mm-plugin-foxconn.c | 2 +- + plugins/generic/mm-plugin-generic.c | 2 +- + plugins/gosuncn/mm-plugin-gosuncn.c | 2 +- + plugins/huawei/mm-plugin-huawei.c | 5 +- + plugins/mbm/mm-plugin-mbm.c | 2 +- + plugins/novatel/mm-plugin-novatel.c | 2 +- + plugins/pantech/mm-plugin-pantech.c | 2 +- + plugins/quectel/mm-plugin-quectel.c | 2 +- + plugins/sierra/mm-plugin-sierra.c | 2 +- + plugins/simtech/mm-plugin-simtech.c | 2 +- + plugins/telit/mm-plugin-telit.c | 2 +- + plugins/tplink/mm-plugin-tplink.c | 2 +- + plugins/x22x/mm-plugin-x22x.c | 2 +- + plugins/zte/mm-plugin-zte.c | 2 +- + src/80-mm-candidate.rules | 3 +- + src/mm-base-manager.c | 142 + +++++++------------------------- + src/mm-base-modem.c | 2 +- + src/mm-filter.c | 2 +- + src/mm-plugin.c | 4 - + src/mm-port-probe.c | 2 +- + 26 files changed, 55 insertions(+), 143 deletions(-) + +commit 519df2544b04ccbc9cf87fbfbdbbaf44edeef75b +Author: Frederic Martinsons +Date: Tue Nov 10 16:48:22 2020 +0100 + + tools: add new system daemon stub tester application + + This script mock some of ModemManager DBus interfaces (main object, + Modem, Sim), + it also adds a test interface + "org.freedesktop.ModemManager1.LibmmGlibTest" + which allow to inject some errors and simulate behavior: + - Add a modem object + - Emit modem state changed + - Set modem error + + This script also add the possibility to log in a file for debugging + purpose. + Because the stdout/stderr are not shown when the program is spawned + by DBus + auto activation. + + Note: Script is heavily inspired from test-networkmanager-service.py + from + NetworkManager project + + Signed-off-by: Frederic Martinsons + + Makefile.am | 1 + + configure.ac | 1 + + tools/Makefile.am | 1 + + tools/test-modemmanager-service.py | 490 + +++++++++++++++++++++++++++++++++++++ + 4 files changed, 493 insertions(+) + +commit 06f75500dbc3f471bf0c40221bbfb5f970f65f32 +Author: Aleksander Morgado +Date: Mon Nov 9 00:43:33 2020 +0100 + + base-manager: log kernel event handling failures + + Don't just return the error to the client, we want this info in the + daemon log as well. + + src/mm-base-manager.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 37b3771ef5003adb1797c29deceb6500ebe60e6d Author: Aleksander Morgado Date: Mon Nov 9 11:54:58 2020 +0100 @@ -239,12 +3426,289 @@ Both 'physdev_subsystem' and 'interface_description' were leaking. - (cherry picked from commit 37b3771ef5003adb1797c29deceb6500ebe60e6d) - src/kerneldevice/mm-kernel-device-generic.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) -commit 9ad8bd13949418aef5f886538dd8573648cd5bfa +commit 5b91e489ebc2a19fda20b07583f494041331d047 +Author: Aleksander Morgado +Date: Wed Oct 21 18:22:15 2020 +0200 + + port-qmi: expected kernel data format is qmi_wwan specific + + The qmi_wwan driver is the only one that allows switching between + 802.3 and raw-ip during runtime, and therefore we must not assume that + every QMI port managed allows to do so, we'll limit that feature only + to QMI ports in the 'usbmisc' subsystem. + + For every other port, we assume the kernel expects raw-ip by default, + and so we include logic to switch the modem to raw-ip both using WDA + and CTL (WDA preferred over CTL). This assumption may not be perfect, + but it's probably a good guess, as raw-ip is the preferred and + sometimes the only format supported by new devices. + + src/mm-port-qmi.c | 172 + +++++++++++++++++++++++++++++++++++++----------------- + 1 file changed, 120 insertions(+), 52 deletions(-) + +commit 799c4c72ce1494c8e094c091aa2d20ab62e4a569 +Author: Aleksander Morgado +Date: Sun Oct 25 14:10:45 2020 +0100 + + port-qmi: allow specifying input subsystem + + We have assumed until now that all QMI ports are based on the + qmi_wwan driver, exposed in the 'usbmisc' subsystem by the cdc-wdm + driver. + + This may no longer be true, so allow creating QMI ports with + an explicit subsystem instead of defaulting always to USBMISC. + + src/mm-base-modem.c | 2 +- + src/mm-port-probe.c | 3 ++- + src/mm-port-qmi.c | 5 +++-- + src/mm-port-qmi.h | 34 +++++++++++++++++----------------- + 4 files changed, 23 insertions(+), 21 deletions(-) + +commit 7faa3a5e2518765bb3683c26ecdf3155046424b0 +Author: Aleksander Morgado +Date: Sun Oct 25 14:05:50 2020 +0100 + + port-mbim: allow specifying input subsystem + + We have assumed until now that all MBIM ports are based on the + cdc_mbim driver, exposed in the 'usbmisc' subsystem by the cdc-wdm + driver. + + This may no longer be true, so allow creating MBIM ports with + an explicit subsystem instead of defaulting always to USBMISC. + + src/mm-base-modem.c | 2 +- + src/mm-port-mbim.c | 5 +++-- + src/mm-port-mbim.h | 3 ++- + src/mm-port-probe.c | 3 ++- + 4 files changed, 8 insertions(+), 5 deletions(-) + +commit 4ec2db75b8fc1175c12d007ca64d2edcf630e3cc +Author: Aleksander Morgado +Date: Mon Nov 9 12:31:03 2020 +0100 + + port-serial-qcdm: allow specifying input subsystem + + We have assumed until now that all QCDM ports are based on TTY + drivers, e.g. exposed via USB. + + This may no longer be true, so allow creating QCDM ports with + an explicit subsystem instead of defaulting always to TTY. + + src/mm-base-modem.c | 2 +- + src/mm-port-probe.c | 2 +- + src/mm-port-serial-qcdm.c | 5 +++-- + src/mm-port-serial-qcdm.h | 3 ++- + 4 files changed, 7 insertions(+), 5 deletions(-) + +commit 56fca1447324f6ac47f2c7e7c9534c49f1bf1da3 +Author: Aleksander Morgado +Date: Sun Oct 25 09:06:41 2020 +0100 + + base-modem: refactor port grabbing logic + + Split in its own method the per-subsystem port creation mechanism, and + apply all common AT port settings (e.g. response parser, flags) in a + single place. + + src/mm-base-modem.c | 344 + +++++++++++++++++++++++----------------------------- + 1 file changed, 152 insertions(+), 192 deletions(-) + +commit 2a6b596bcfa83a91d93c07046dc067f1e1d08a6c +Author: Aleksander Morgado +Date: Sun Oct 25 13:53:26 2020 +0100 + + port-serial-at: skip validating input subsystem argument + + This check is pointless given that we're not implementing API, if + anything it should be an assert. Anyway, just get rid of it, so that + we don't need to update it on every new subsystem we add as supported. + + src/mm-port-serial-at.c | 10 +++------- + 1 file changed, 3 insertions(+), 7 deletions(-) + +commit f052e914c84ef3a60d0cb9ddce3f77006e59a586 +Author: Aleksander Morgado +Date: Fri Nov 6 12:01:53 2020 +0100 + + port: rename subsystem from 'usb' to 'usbmisc' + + Back in Linux < 3.6 days, the cdc-wdm ports exposed by the QMI driver + were flagged as owned by the 'usb' subsystem. That changed in 3.6 when + the subsystem was renamed to 'usbmisc': + + https://mail.gnome.org/archives/networkmanager-list/2012-June/msg00125.html + + So, rename the port subsystem type enumn to 'usbmisc'. + + plugins/huawei/mm-broadband-modem-huawei.c | 4 ++-- + src/mm-base-modem.c | 2 +- + src/mm-broadband-modem-mbim.c | 2 +- + src/mm-broadband-modem-qmi.c | 2 +- + src/mm-port-mbim.c | 2 +- + src/mm-port-probe.c | 2 +- + src/mm-port-qmi.c | 2 +- + src/mm-port-serial-at.c | 2 +- + src/mm-port.h | 2 +- + 9 files changed, 10 insertions(+), 10 deletions(-) + +commit c92dc21a18e6e79de2195bf6d2ec821c7f6195ef +Author: Aleksander Morgado +Date: Sat Oct 24 09:29:39 2020 +0200 + + api: new ID_MM_PORT_TYPE_QMI and ID_MM_PORT_TYPE_MBIM udev hints + + It is no longer true that all QMI ports are exposed by the qmi_wwan + driver and that all MBIM ports are exposed by the cdc_mbim driver. + There are other generic setups that allow exposing these types of + ports using different drivers, and usually we can also know the type + of port in advance via other means. Therefore, allow adding udev port + type hints for QMI and MBIM ports as well. + + docs/reference/api/ModemManager-docs.xml | 4 +++ + docs/reference/api/ModemManager-sections.txt | 2 ++ + include/ModemManager-tags.h | 30 ++++++++++++++++++ + src/mm-port-probe.c | 46 + ++++++++++++++++++++++------ + 4 files changed, 73 insertions(+), 9 deletions(-) + +commit e01c8b379cbd77b7085e40f9448df68b368faae2 +Author: Aleksander Morgado +Date: Sat Oct 24 10:38:40 2020 +0200 + + broadband-modem-qmi: peek QMI port from any subsystem + + No longer has to be bound to the USB subsystem. + + src/mm-broadband-modem-qmi.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b8cbc87249b3f85cd5b2ce5ca7d75e9a4739b4c6 +Author: Aleksander Morgado +Date: Thu Oct 22 12:28:26 2020 +0200 + + broadband-modem-qmi: allow subclassing the match of control vs + net ports + + By default we provide the implementation for the qmi_wwan driver, + where both control and net ports share the same USB interface. + + src/mm-broadband-modem-qmi.c | 32 ++++++++++++++++++++++++++++---- + src/mm-broadband-modem-qmi.h | 4 ++++ + 2 files changed, 32 insertions(+), 4 deletions(-) + +commit b8f6fb59ed3f9c314c6b13b0830c0930c718902d +Author: Aleksander Morgado +Date: Thu Oct 22 12:07:09 2020 +0200 + + broadband-modem-qmi: peeking QMI port only in QMI modems + + Move the logic out of the base modem, and make it applicable only for + QMI modems. + + src/mm-base-modem.c | 79 ------------------------------ + src/mm-base-modem.h | 8 ---- + src/mm-bearer-qmi.c | 2 +- + src/mm-broadband-modem-qmi.c | 109 + ++++++++++++++++++++++++++++++++++++++++-- + src/mm-broadband-modem-qmi.h | 17 +++++-- + src/mm-iface-modem-firmware.c | 6 ++- + src/mm-iface-modem.c | 6 ++- + src/mm-sim-qmi.c | 3 +- + src/mm-sms-qmi.c | 3 +- + 9 files changed, 133 insertions(+), 100 deletions(-) + +commit 0dbb8d03f59d0db8cf6be63020b78289c3168154 +Author: Aleksander Morgado +Date: Sat Oct 24 10:39:29 2020 +0200 + + broadband-modem-mbim: peek MBIM port from any subsystem + + No longer has to be bound to the USB subsystem. + + src/mm-broadband-modem-mbim.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 85d549ef0066f1a47d15c40e4857033bea82e4c2 +Author: Aleksander Morgado +Date: Thu Oct 22 12:32:06 2020 +0200 + + broadband-modem-mbim: allow subclassing the match of control vs + net ports + + By default we provide the implementation for the cdc_mbim driver, + where both control and net ports share the same USB interface. + + src/mm-broadband-modem-mbim.c | 32 ++++++++++++++++++++++++++++---- + src/mm-broadband-modem-mbim.h | 4 ++++ + 2 files changed, 32 insertions(+), 4 deletions(-) + +commit 6defec2faed9e796584dd9b519ab777f9019d31b +Author: Aleksander Morgado +Date: Thu Oct 22 11:52:46 2020 +0200 + + broadband-modem-mbim: peeking MBIM port only in MBIM modems + + Move the logic out of the base modem, and make it applicable only for + MBIM modems. + + src/mm-base-modem.c | 80 ----------------------------- + src/mm-base-modem.h | 8 --- + src/mm-bearer-mbim.c | 2 +- + src/mm-broadband-modem-mbim.c | 116 + +++++++++++++++++++++++++++++++++++++++--- + src/mm-broadband-modem-mbim.h | 17 +++++-- + src/mm-iface-modem-firmware.c | 8 ++- + src/mm-iface-modem.c | 7 ++- + src/mm-sim-mbim.c | 3 +- + src/mm-sms-mbim.c | 3 +- + 9 files changed, 138 insertions(+), 106 deletions(-) + +commit ca0dbd07288d67c91e7018819cdd4aa36d57cf2a +Author: Aleksander Morgado +Date: Thu Oct 22 11:09:00 2020 +0200 + + plugin: network interface force ignore rules for certain drivers only + + The rules to force ignoring certain network ports because the modem is + using some specific drivers should definitely only be applied for the + very known qmi_wwan and cdc_mbim drivers. + + If network ports for QMI or MBIM modems are exposed using different + network drivers, don't ignore them. + + src/mm-plugin.c | 107 + ++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 58 insertions(+), 49 deletions(-) + +commit 5aa7632e88f70f678b4d88d3bab6d4b1b2def1d1 +Author: Aleksander Morgado +Date: Wed Oct 21 13:02:50 2020 +0200 + + port-probe: avoid subsystem based checks when reading probe results + + There should be no need to do an early check to filter out ports of + the wrong subsystem. + + For the user of these methods it is irrelevant if the FALSE is + returned because the port is of the wrong subsystem, or because the + test wasn't added to be probed, or because the test actually failed. + + In other words, the ports where the test succeeded will only have + succeeded if they are of the correct subsystem and if the test was + actually executed successfully. + + src/mm-port-probe.c | 82 + +++++++++-------------------------------------------- + 1 file changed, 13 insertions(+), 69 deletions(-) + +commit 50c69d540341733dfee031282e5d8e18ebc814cb Author: Aleksander Morgado Date: Sun Nov 8 09:22:09 2020 +0100 @@ -256,13 +3720,24 @@ This is also already fixed in upstream gtk-doc: https://gitlab.gnome.org/GNOME/gtk-doc/-/merge_requests/61 - (cherry picked from commit 50c69d540341733dfee031282e5d8e18ebc814cb) - .gitignore | 1 + docs/reference/libmm-glib/Makefile.am | 1 + 2 files changed, 2 insertions(+) -commit f8ce24d4547ccb0c8a9ba71c14c2e54549942f6e +commit f874b0f6b701acccdc93991c0f857bc78e67d045 +Author: Aleksander Morgado +Date: Sun Nov 8 09:10:39 2020 +0100 + + build: update builtin gtk-doc support + + From gtkdocize (gtk-doc) 1.33.0. + + gtk-doc.make | 103 + ++++++++++++++++++++++++++++++++++------------------------ + m4/gtk-doc.m4 | 27 ++++++++++++++- + 2 files changed, 86 insertions(+), 44 deletions(-) + +commit 904adbfb5e07e538516c26b8467c2238fc2718e9 Author: Aleksander Morgado Date: Sun Nov 8 08:10:45 2020 +0100 @@ -271,12 +3746,10 @@ Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/276 - (cherry picked from commit 904adbfb5e07e538516c26b8467c2238fc2718e9) - configure.ac | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) -commit ec425f961944c70a19f2277cabd0fcdf0ad1d4b5 +commit 3bda0562b94aa56177f0e481cd29e4149f5a531d Author: Aleksander Morgado Date: Sun Nov 8 09:29:20 2020 +0100 @@ -288,12 +3761,41 @@ This allows us to avoid requiring xsltproc to build release tarballs. - (cherry picked from commit 3bda0562b94aa56177f0e481cd29e4149f5a531d) - include/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 5c90f2487f2ba9ca2a74e4407dacbda70c7b55ca +commit 5df9ddac183d52d71ee5b0c079a32560aa07eb04 +Author: Aleksander Morgado +Date: Fri Nov 6 12:14:49 2020 +0100 + + filter: simplify CDC_WDM rule to a subsystem-only USBMISC check + + This is not just a rename of the rule, we also now avoid doing an + explicit check on the port name as well, and we rely on subsystem + checks only; i.e. the same logic applied for net ports. + + The port candidate rules already do a 'cdc-wdm*' device name check + so it shouldn't be a big deal. + + docs/reference/api/ModemManager-overview.xml | 16 ++++++++-------- + src/mm-filter.c | 9 ++++----- + src/mm-filter.h | 10 +++++----- + 3 files changed, 17 insertions(+), 18 deletions(-) + +commit 5265c0bd7c3bc28a0d77c836f691d0b0fca2fa0f +Author: Aleksander Morgado +Date: Thu Oct 29 23:41:28 2020 +0100 + + modem-helpers-qmi: don't check result when parsing UIM Get Card + Status Output + + Do it earlier, before running the parser. + + src/mm-broadband-modem-qmi.c | 7 +++---- + src/mm-modem-helpers-qmi.c | 5 ----- + 2 files changed, 3 insertions(+), 9 deletions(-) + +commit d7288861a595db7f07b8ecf6bdc30d957b8b6843 Author: Andrew Lassalle Date: Tue Nov 3 12:36:31 2020 -0800 @@ -305,12 +3807,246 @@ function is checking for equality, so returning FALSE is enough. - (cherry picked from commit d7288861a595db7f07b8ecf6bdc30d957b8b6843) - src/kerneldevice/mm-kernel-device.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit e0ee654a55765adecb6a05bda90404a5782b4cae +commit 30f0824ea1473f5d63a27fa4c8095a5b2858ee2d +Author: Aleksander Morgado +Date: Wed Aug 12 13:11:27 2020 +0200 + + huawei: apply GETPORTMODE hints to serial ports in order + + The numbers associated to each port mode given by the AT^GETPORTMODE + response are not USB interface numbers, they are 'port numbers'. + Moreover, these numbers may start either at 0 or at 1, depending on + the firmware. + + The only reasonable way to parse this response is to just gather the + order of all the port modes reported, and apply the modes to each + serial port found in the system in the same order. + + Fixes + https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/239 + + plugins/huawei/mm-plugin-huawei.c | 139 + +++++++++++++++++--------------------- + 1 file changed, 63 insertions(+), 76 deletions(-) + +commit 4fdf28bb56ec30c73de35cef270b787afa7ceaa7 +Author: Aleksander Morgado +Date: Wed Aug 12 09:47:17 2020 +0200 + + huawei: new ^GETPORTMODE response parser + + .gitignore | 2 +- + plugins/Makefile.am | 35 ++++++ + plugins/huawei/mm-modem-helpers-huawei.c | 98 +++++++++++++++ + plugins/huawei/mm-modem-helpers-huawei.h | 31 ++++- + plugins/huawei/tests/test-modem-helpers-huawei.c | 147 + +++++++++++++++++++++++ + 5 files changed, 311 insertions(+), 2 deletions(-) + +commit b2621b4336b5fffd03ce34a85b568910bc373bb2 +Author: Aleksander Morgado +Date: Tue Aug 11 11:41:43 2020 +0200 + + huawei: plugin already processes generic tags + + So don't re-process them in the generic modem when grabbing the port. + + plugins/huawei/mm-plugin-huawei.c | 4 ++++ + src/mm-base-modem.c | 8 ++++++++ + src/mm-port-serial-at.c | 2 ++ + src/mm-port-serial-at.h | 13 ++++++++----- + 4 files changed, 22 insertions(+), 5 deletions(-) + +commit 824ad11356f82b5b91d557fa22b88c445ccc777c +Author: Aleksander Morgado +Date: Tue Aug 11 11:16:05 2020 +0200 + + huawei: don't apply multiple port type hints methods + + We will use one single method to apply port type hints, not a mix of + them: + * If AT^GETPORTMODE is supported, prefer its hints over any other + method. + * Otherwise, try to guess hints from USB interface descriptions. + * And if none of the plugin-specific hints are supported, we'll + default to applying generic port type hints from udev tags. + + Once the hints have been applied by one of the methods above, the + fallback hint sequences are run: + * Flag the first cdc-wdm port as primary if no other port has been + flagged as primary. + * Flag the USB interface 0 as PPP if no other port type hint has + been set in any other port. + + The logic applying all these procedures has been refactored so that we + have separate functions for each, which is much easier to read and + follow, even if it requires multiple iterations over the port probe + list. + + Fixes + https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/238 + + plugins/huawei/mm-plugin-huawei.c | 225 + +++++++++++++++++++++++++++++--------- + 1 file changed, 172 insertions(+), 53 deletions(-) + +commit f21fde38559141e382ad64f8ce048d73c7e197a4 +Author: Aleksander Morgado +Date: Wed Nov 4 09:45:29 2020 +0100 + + cinterion: fix port reference leaks + + The mm_base_modem_get_port_*() returns a full reference, we should use + the mm_base_modem_peek_port_*() methods instead. Also, refactor a bit + the logic because both ports are really configured in the same way, so + just apply the same setup to both. + + plugins/cinterion/mm-broadband-modem-cinterion.c | 27 + ++++++++---------------- + 1 file changed, 9 insertions(+), 18 deletions(-) + +commit 2d28969df74c687cfc4ea03dee6317874525e313 +Author: Aleksander Morgado +Date: Wed Sep 9 14:46:14 2020 +0200 + + cinterion: source reorder + + The class object definition should always be last in the file, + following the interface definitions. The actual method implementations + should be given before any other type system method (i.e. before even + the _new() method). + + plugins/cinterion/mm-broadband-modem-cinterion.c | 340 + +++++++++++------------ + 1 file changed, 170 insertions(+), 170 deletions(-) + +commit 35ecd45b66ff46e24ee99c199cbfc37702796cdd +Author: Aleksander Morgado +Date: Wed Sep 9 14:41:59 2020 +0200 + + cinterion: load initial EPS bearer cid only once + + There is no need to reload it on every settings update attempt; just + load it once when the 3GPP interface is initialized, and re-use the + loaded value on every new update attempt. + + plugins/cinterion/mm-broadband-modem-cinterion.c | 220 + ++++++++++++--------- + plugins/cinterion/mm-modem-helpers-cinterion.c | 63 +++--- + plugins/cinterion/mm-modem-helpers-cinterion.h | 11 +- + .../cinterion/tests/test-modem-helpers-cinterion.c | 27 ++- + 4 files changed, 176 insertions(+), 145 deletions(-) + +commit eb6ec1913f1403e7081f510d3e01e076fcfb9ddd +Author: Aleksander Morgado +Date: Wed Sep 9 11:35:23 2020 +0200 + + cinterion: fallback to RF on on error right away + + Don't go to next step and then check if we need to jump to the RF on + step, jump right away. + + plugins/cinterion/mm-broadband-modem-cinterion.c | 42 + ++++++++++-------------- + 1 file changed, 18 insertions(+), 24 deletions(-) + +commit 7e70911074fbe281ebd27b673666287bac0f222e +Author: Aleksander Morgado +Date: Wed Sep 9 11:00:10 2020 +0200 + + cinterion: failure to set low power in initial EPS setting is fatal + + Attempting to change the initial EPS bearer settings while in full + functionality mode shouldn't happen, so make sure we don't attempt to + do that if going into low power mode fails. + + plugins/cinterion/mm-broadband-modem-cinterion.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit f280573f6ded8da447f8f3bc934c4d3204a27f1c +Author: Aleksander Morgado +Date: Wed Sep 9 10:55:33 2020 +0200 + + cinterion: setup SGAUTH response parser as a helper method + + plugins/cinterion/mm-broadband-modem-cinterion.c | 44 + +++++-------------- + plugins/cinterion/mm-modem-helpers-cinterion.c | 45 + +++++++++++++++++++ + plugins/cinterion/mm-modem-helpers-cinterion.h | 9 ++++ + .../cinterion/tests/test-modem-helpers-cinterion.c | 51 + ++++++++++++++++++++++ + 4 files changed, 116 insertions(+), 33 deletions(-) + +commit eb338c967f613b4de8ef2933d496e1bc0936f037 +Author: Aleksander Morgado +Date: Wed Sep 9 10:44:45 2020 +0200 + + cinterion: move auth helpers to the helpers sources + + plugins/Makefile.am | 1 + + plugins/cinterion/mm-broadband-bearer-cinterion.c | 118 + +--------------------- + plugins/cinterion/mm-broadband-bearer-cinterion.h | 7 -- + plugins/cinterion/mm-broadband-modem-cinterion.c | 8 +- + plugins/cinterion/mm-modem-helpers-cinterion.c | 111 + ++++++++++++++++++++ + plugins/cinterion/mm-modem-helpers-cinterion.h | 10 ++ + 6 files changed, 130 insertions(+), 125 deletions(-) + +commit 9ce496613bada6001a0770f951cc197c2c89084d +Author: Aleksander Morgado +Date: Wed Sep 9 10:24:06 2020 +0200 + + cinterion: improve logging when loading initial EPS status or settings + + plugins/cinterion/mm-broadband-modem-cinterion.c | 30 + +++++++++++++++++------- + 1 file changed, 21 insertions(+), 9 deletions(-) + +commit 411cce677dd03905a771b6d7b3e6050acddd3053 +Author: Aleksander Morgado +Date: Tue Sep 8 12:00:45 2020 +0200 + + cinterion: refactor the initial EPS related logic + + Multiple changes that shouldn't affect behavior: + + * Avoid reusing the same context and state machine for the set and + the load operations, because they truly have different behaviors. + + * Setup the common load operation in a separate async method, and + reuse the common operation for both the runtime state loading and + the settings configuration loading. + + * Avoid having a "generic step ready" method, and instead provide + proper ready methods for each step, so that we can give + comprehensive warning logs when things fail. + + * Use the common CFUN? response parser instead of a custom + implementation. + + plugins/cinterion/mm-broadband-modem-cinterion.c | 596 + +++++++++++++---------- + 1 file changed, 340 insertions(+), 256 deletions(-) + +commit ff7c0794f488bc6efbd2e0b6c6fd35dd136517b5 +Author: Andrew Lassalle +Date: Thu Oct 29 16:41:43 2020 -0700 + + mm-broadband-modem: Allow hot SIM insertion + + If the QMI modem is initialized without a SIM card in it, and it goes + to failed state, allow the modem to be reprobed when a SIM card is + inserted. + + src/mm-broadband-modem.c | 21 +++++++++++++++++---- + 1 file changed, 17 insertions(+), 4 deletions(-) + +commit c385031941c9cd1ce07ae2d5b37ded26e4838dae Author: Aleksander Morgado Date: Sun Oct 25 22:10:28 2020 +0100 @@ -332,12 +4068,59 @@ | rmnet7 (net), rmnet0 (net), rmnet6 (net) - (cherry picked from commit c385031941c9cd1ce07ae2d5b37ded26e4838dae) - src/mm-base-modem.c | 46 ++++++++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 18 deletions(-) -commit 11ee6a86071dda5bc139a28bd73483fa4a30f161 +commit a174edb74dc81f63932c212483bc9546de12ff95 +Author: Stephan Gerhold +Date: Tue Oct 27 15:05:31 2020 +0100 + + api: expose ignored ports as MM_MODEM_PORT_TYPE_IGNORED + + At the moment, ignored ports show up as (unknown) in the ports list + in mmcli. This makes it look like something went wrong while probing. + + Actually ModemManager already tracks unknown and ignored ports + separately + (MM_PORT_TYPE_UNKNOWN vs MM_PORT_TYPE_IGNORED) but the API always + exposes + them as MM_MODEM_PORT_TYPE_UNKNOWN. + + Add MM_MODEM_PORT_TYPE_IGNORED and use this for ignored ports so they + show up as (ignored) instead in mmcli. + + include/ModemManager-enums.h | 2 ++ + src/mm-base-modem.c | 4 +++- + 2 files changed, 5 insertions(+), 1 deletion(-) + +commit fb14d0dbb24a81be95502e098b8ed23e45db8e1c +Author: Aleksander Morgado +Date: Thu Oct 29 23:04:08 2020 +0100 + + helpers-qmi: 'illegal' card application state is fatal + + No need to retry checking card status when the application state is + illegal, just treat the SIM card as unusable right away. + + https://forum.sierrawireless.com/t/uim-card-application-state-illegal/21842 + + src/mm-modem-helpers-qmi.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit 9c1843c38153ff022491d1a5a663d527f4d8ebc2 +Author: Aleksander Morgado +Date: Thu Oct 29 22:46:52 2020 +0100 + + shared-qmi: ignore NoEffect errors on slot switching + + When "UIM Switch Slot" returns a NoEffect error it's because we're + already in the desired slot, so just treat it as a successful + operation. + + src/mm-shared-qmi.c | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +commit a31d762250edba7bbad34adec051d9cff0279f66 Author: Aleksander Morgado Date: Sun Oct 25 16:32:23 2020 +0100 @@ -346,12 +4129,30 @@ Running with G_DEBUG=fatal-warnings will end up reporting warning logs with G_LOG_FLAG_FATAL, which breaks our own logging logic. - (cherry picked from commit a31d762250edba7bbad34adec051d9cff0279f66) - src/mm-log.c | 5 +++++ 1 file changed, 5 insertions(+) -commit 6e8f36a619beff8f193701d56ea62645b03a4c0f +commit ba1d3f944b2a90bf75f0a5e6232dfe6cb34a8eb9 +Author: Aleksander Morgado +Date: Sun Oct 25 21:36:59 2020 +0100 + + libmm-glib,docs: add missing reference to mm_gdbus_sim_set_eid() + + It's a private method, so add it in the Private subsection. + + docs/reference/libmm-glib/libmm-glib-sections.txt | 1 + + 1 file changed, 1 insertion(+) + +commit 7d6647968d2ff4acf683375156a94258a55290e3 +Author: Aleksander Morgado +Date: Wed Oct 21 12:32:24 2020 +0200 + + broadband-modem-qmi: minor coding style fix + + src/mm-broadband-modem-qmi.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8a54baa346c7fe375b2683e2e333104acf648eff Author: Aleksander Morgado Date: Mon Oct 19 22:30:37 2020 +0200 @@ -386,160 +4187,131 @@ /usr/lib/libqmi-glib.so.5 ... - (cherry picked from commit 8a54baa346c7fe375b2683e2e333104acf648eff) - src/mm-broadband-modem-qmi.c | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) -commit c3b09d39d27aa37de55db9252bf4effa4d8657b7 -Author: Aleksander Morgado -Date: Mon Oct 19 22:11:02 2020 +0200 +commit 61739ab934e46c9693e964a20aced349e0f02d51 +Author: Eric Caruso +Date: Fri Oct 16 12:28:10 2020 -0700 - broadband-modem-qmi: minor coding style fixes + libmm-glib,mmcli: add mm_sim_get_eid and add EID to mmcli output - (cherry picked from commit 1ed9f7e94e5948f408d1d09ad8c219a594669066) + This exposes the new EID property of the SIM object on mmcli. - src/mm-broadband-modem-qmi.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) + cli/mmcli-output.c | 1 + + cli/mmcli-output.h | 1 + + cli/mmcli-sim.c | 1 + + docs/reference/libmm-glib/libmm-glib-sections.txt | 2 + + libmm-glib/mm-sim.c | 46 + +++++++++++++++++++++++ + libmm-glib/mm-sim.h | 3 ++ + 6 files changed, 54 insertions(+) -commit 5a06a78107ebd8b1a366ff93e79636c958970c83 -Author: Aleksander Morgado -Date: Wed Oct 14 15:06:44 2020 +0200 +commit e24a8240cb957c1875f2f3eab14aa5005c3b8f40 +Author: Eric Caruso +Date: Fri Jun 12 15:18:28 2020 -0700 - build: post-release version bump to 1.14.7 + mm-shared-qmi: load EID during SIM slot loading - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + SIMs can be created with an EID fetched during load_sim_slots + while initializing the modem, if present. -commit 5ac0d258a3d20e1bde3b1d9858f3856559ee42fa -Author: Aleksander Morgado -Date: Wed Oct 14 14:47:15 2020 +0200 + Since load_eid would be implemented with the same mechanism + we avoid using it here (if Get Slot Status fails once, it + probably doesn't make a lot of sense to try it again). - release: bump version to 1.14.6 + src/mm-base-sim.c | 2 ++ + src/mm-base-sim.h | 1 + + src/mm-modem-helpers-qmi.c | 14 ++++++++++++++ + src/mm-modem-helpers-qmi.h | 4 ++++ + src/mm-shared-qmi.c | 43 + +++++++++++++++++++++++++++++++++++++------ + src/mm-sim-qmi.c | 2 ++ + src/mm-sim-qmi.h | 1 + + 7 files changed, 61 insertions(+), 6 deletions(-) - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) +commit 9fca0467801d41598666dd63e9394ed806c5a399 +Author: Eric Caruso +Date: Fri Jun 12 15:16:50 2020 -0700 + + mm-base-sim: add EID D-Bus property -commit c04d343b902b693bbebebb9183c1d21743a8f51e + This provides a new D-Bus property on the Sim object that + exposes the EID of the SIM, if available. + + docs/reference/libmm-glib/libmm-glib-sections.txt | 2 ++ + introspection/org.freedesktop.ModemManager1.Sim.xml | 7 +++++++ + src/mm-base-sim.c | 19 + +++++++++++++++++++ + src/mm-base-sim.h | 8 ++++++++ + 4 files changed, 36 insertions(+) + +commit 1ed9f7e94e5948f408d1d09ad8c219a594669066 Author: Aleksander Morgado -Date: Wed Oct 14 14:31:44 2020 +0200 +Date: Mon Oct 19 22:11:02 2020 +0200 - NEWS: update for 1.14.6 + broadband-modem-qmi: minor coding style fixes - NEWS | 13 +++++++++++++ - 1 file changed, 13 insertions(+) + src/mm-broadband-modem-qmi.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit 5ca8f8ce1208fcf8b3216b1acfc44406e2881477 +commit 1800983b6c77b495a97eb4335541561456abfed5 +Author: Eric Caruso +Date: Fri Oct 16 11:22:37 2020 -0700 + + mm-modem-helpers: add low_nybble_first argument to mm_bcd_to_string + + All BCD-encoded strings used by MM currently have the low nybble + of each byte come before the high nybble, but some strings (such + as the EID string returned by QMI Get Slot Status) are meant to + be read in order with the high nybble before the low one. As such, + extend mm_bcd_to_string to decode both. + + src/mm-modem-helpers.c | 9 ++++++--- + src/mm-modem-helpers.h | 4 +++- + src/mm-shared-qmi.c | 9 ++++++--- + src/mm-sim-qmi.c | 6 ++++-- + src/tests/test-modem-helpers.c | 35 ++++++++++++++++++++++------------- + 5 files changed, 41 insertions(+), 22 deletions(-) + +commit f013e94ff89680d1acd7dba12ff4a6a0fa7b58bf Author: Aleksander Morgado Date: Wed Oct 14 14:40:00 2020 +0200 xmm: fix missing GError initialization - (cherry picked from commit f013e94ff89680d1acd7dba12ff4a6a0fa7b58bf) - plugins/xmm/mm-shared-xmm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -commit 889d301854346f74f215101508be9b636e9ed797 +commit 3b6176cbe2bc64bbf19fa0378b1c65b646bb6d13 Author: Aleksander Morgado Date: Wed Oct 14 14:38:52 2020 +0200 simtech: fix missing GError initialization - (cherry picked from commit 3b6176cbe2bc64bbf19fa0378b1c65b646bb6d13) - plugins/simtech/mm-shared-simtech.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -commit 60b603117f61539762688ffc48184da4ea9c72e6 +commit 50c1550c9f808ddd080f7992bf2d7f4dfae6e0ec Author: Aleksander Morgado Date: Wed Oct 14 14:38:40 2020 +0200 cinterion: fix missing GError initialization - (cherry picked from commit 50c1550c9f808ddd080f7992bf2d7f4dfae6e0ec) - plugins/cinterion/mm-shared-cinterion.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -commit 781cc706cad1fae080ad952b2a357e480fe04da8 -Author: Aleksander Morgado -Date: Wed Oct 14 14:24:35 2020 +0200 - - broadband-modem-qmi: ensure GError is initialized to NULL - - (ModemManager:21568): GLib-WARNING **: 22:11:27.828: GError set - over the top of a previous GError or uninitialized memory. - This indicates a bug in someone's code. You must ensure an error - is NULL before it's set. - The overwriting error message was: QMI protocol error (94): - 'NotSupported' - [21568]: [1582841487.829678] [modem0] couldn't load facility - locks: (NULL) - [21568]: [1582841487.830746] [modem0] loading UE mode of - operation for EPS... - [21568]: [1582841487.832138] [modem0/ttyUSB2/at] device - open count is 2 (open) - Segmentation fault - - This issue is only applicable in the mm-1-14 branch. - Fixes cd686f10e049cf0494678f4d87e17e62e8f53e76. - - src/mm-broadband-modem-qmi.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 327f509f04224c105ab2227317270ce6b998d9ed -Author: Aleksander Morgado -Date: Wed Oct 14 12:51:08 2020 +0200 - - build: post-release version bump to 1.14.5 - - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit db38b333c0f0915e4e7c9a0344a8c4c95baba484 -Author: Aleksander Morgado -Date: Wed Oct 14 12:29:08 2020 +0200 - - release: bump version to 1.14.4 - - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit c67b1ef8acbbaf2ea805be283aee42a7c99717c7 -Author: Aleksander Morgado -Date: Wed Oct 14 12:28:13 2020 +0200 - - NEWS: update for 1.14.4 - - NEWS | 35 +++++++++++++++++++++++++++++++++++ - 1 file changed, 35 insertions(+) - -commit 38b4b8e507c3b2d414c75a1a2d48d607db592dc4 -Author: Aleksander Morgado -Date: Sat Oct 10 15:08:29 2020 +0200 - - iface-modem-3gpp: print consolidated reg state info only when updating - - (cherry picked from commit c6f38ecac3ed2ac783dbab706c5e155ba7409747) - - src/mm-iface-modem-3gpp.c | 86 - +++++++++++++++++++---------------------------- - 1 file changed, 34 insertions(+), 52 deletions(-) - -commit b871d4f1dd7213a4d3a152c9c7574e0561d8ac3a +commit df9cb4a8f6f0abaad8052e36c10874bfbea2ac76 Author: Aleksander Morgado Date: Sat Oct 10 14:38:24 2020 +0200 iface-modem-location: log old and new 3GPP location ids when updating - (cherry picked from commit df9cb4a8f6f0abaad8052e36c10874bfbea2ac76) - src/mm-iface-modem-location.c | 74 ++++++++++++++++++++++++++++--------------- 1 file changed, 49 insertions(+), 25 deletions(-) -commit 846765afeba2a57da63d21272e180ff519ed9dfc +commit 135d484501dbf641b51b02033377871100323049 Author: Aleksander Morgado Date: Fri Oct 9 12:50:49 2020 +0200 @@ -601,14 +4373,50 @@ We should therefore allow changes only in the CID, maintaining whatever LAC/TAC value we had before. - (cherry picked from commit 135d484501dbf641b51b02033377871100323049) - src/mm-broadband-modem-qmi.c | 2 +- src/mm-iface-modem-3gpp.c | 8 ++++---- src/mm-iface-modem-location.c | 26 ++++++++++++++++++++------ 3 files changed, 25 insertions(+), 11 deletions(-) -commit 97a1a763792967c5581dcd9fe8fcb8558f3d4784 +commit c6f38ecac3ed2ac783dbab706c5e155ba7409747 +Author: Aleksander Morgado +Date: Sat Oct 10 15:08:29 2020 +0200 + + iface-modem-3gpp: print consolidated reg state info only when updating + + src/mm-iface-modem-3gpp.c | 86 + +++++++++++++++++++---------------------------- + 1 file changed, 34 insertions(+), 52 deletions(-) + +commit 408a3d58c2629fa197ddeadc65b5a5789195e810 +Author: Eric Caruso +Date: Thu Jun 25 11:31:18 2020 -0700 + + mm-bearer-qmi: remove default_ip_family_set check + + According to QC, we should set the IP family in both the + Set IP Family and Start Network messages. After removing this + check the member is never read, only written; this means it's + effectively dead and can be removed. + + src/mm-bearer-qmi.c | 15 ++------------- + 1 file changed, 2 insertions(+), 13 deletions(-) + +commit b0c212635d3fe4ec0bd4257d4554d6cf3767fb29 +Author: Pavan Holla +Date: Wed Oct 7 22:33:27 2020 +0000 + + broadband-modem: Disconnect bearers during disable + + Fixes a bug introduced in commit 7e386389, which caused user requested + disable operations to go to step + DISABLING_STEP_FIRST_AFTER_ENABLE_FAILED. For user requested disable, + the first step should be DISABLING_STEP_FIRST. + + src/mm-broadband-modem.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 075bcb74f30d18985e1ada82312fe58215f82040 Author: Daniele Palmas Date: Thu Oct 1 13:19:28 2020 +0200 @@ -617,23 +4425,19 @@ Telit FN980 requires more time for becoming responsive to qmi requests after device appearance. - (cherry picked from commit 075bcb74f30d18985e1ada82312fe58215f82040) - src/mm-port-qmi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 6af45d01b962eae87eb9f51f569b92b15ee30295 +commit dcf188d2ef27a17afc0b3447c5c464286e7d250b Author: Daniele Palmas Date: Tue Sep 29 22:43:55 2020 +0200 telit: add tag ID_MM_TELIT_PORT_DELAY for initial delay mechanism - (cherry picked from commit dcf188d2ef27a17afc0b3447c5c464286e7d250b) - plugins/telit/77-mm-telit-port-types.rules | 10 ++++++++++ 1 file changed, 10 insertions(+) -commit 5d4567fc3dadc5c81cf0e35bcb1b1b4ec8b9a73a +commit f6c4e3369a29c1f1bf14325be5a362a3ba29a71c Author: Daniele Palmas Date: Tue Sep 29 16:03:55 2020 +0200 @@ -643,35 +4447,29 @@ families require some time before being usable after the serial ports have been exposed by the kernel. - (cherry picked from commit f6c4e3369a29c1f1bf14325be5a362a3ba29a71c) - plugins/telit/mm-common-telit.c | 82 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 81 insertions(+), 1 deletion(-) -commit d5af56365eb2be776cf8f5b5f70df773c197b78a +commit 71cd727425d66bb5f7854cde2d4c033e73cbba97 Author: Daniele Palmas Date: Tue Sep 29 22:37:00 2020 +0200 telit: add FN980 and LM9x0 MBIM compositions rules - (cherry picked from commit 71cd727425d66bb5f7854cde2d4c033e73cbba97) - plugins/telit/77-mm-telit-port-types.rules | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) -commit bf01ae5d66289e766932f3ab52af02bc72b6e1aa +commit ed8cf8d04c38495526a2958ee9454adca2d2a67d Author: Daniele Palmas Date: Tue Sep 29 10:16:22 2020 +0200 telit: fix LM9x0 udev rules - (cherry picked from commit ed8cf8d04c38495526a2958ee9454adca2d2a67d) - plugins/telit/77-mm-telit-port-types.rules | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) -commit b891e4bcb290a1850fa4addb2722298cfe725d9b +commit bab0f44e74031896b9fd4c3a0390285d838aaa07 Author: Pavan Holla Date: Wed Sep 30 20:44:48 2020 +0000 @@ -681,12 +4479,10 @@ PIN2 lock is enabled. - (cherry picked from commit bab0f44e74031896b9fd4c3a0390285d838aaa07) - src/mm-broadband-modem-qmi.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) -commit cd686f10e049cf0494678f4d87e17e62e8f53e76 +commit 74ab15d3239b62c53a0eecfac5a0488b6731bb71 Author: Pavan Holla Date: Wed Sep 30 20:29:36 2020 +0000 @@ -698,35 +4494,238 @@ error and we return it to higher layers. - (cherry picked from commit 74ab15d3239b62c53a0eecfac5a0488b6731bb71) - src/mm-broadband-modem-qmi.c | 51 +++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 24 deletions(-) -commit 072ce5920f8266be7f92478dfbda3139389ccbfc +commit aa4dce2afc804d6ba4670392919dd12dbc62a162 +Author: Pavan Holla +Date: Mon Sep 28 20:38:24 2020 +0000 + + broadband-modem-qmi: Use UIM service for querying facility locks + + DMS_UIM messages have been deprecated, and have been replaced by + equivalent UIM messages. Use UIM_GET_CARD_STATUS while querying + for facility + locks if dms_uim messages were found to be deprecated. + + src/mm-broadband-modem-qmi.c | 109 + ++++++++++++++++++++++++++++++++++++++----- + src/mm-modem-helpers-qmi.c | 8 +++- + src/mm-modem-helpers-qmi.h | 2 + + src/mm-sim-qmi.c | 2 +- + 4 files changed, 108 insertions(+), 13 deletions(-) + +commit 72d8bae65b74000c7c6f24e5a6ccb303e3c67b30 +Author: wicadmin +Date: Tue Sep 29 08:58:08 2020 +0000 + + ci: create release tarball and hash as build artifacts + + .gitlab-ci.yml | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 2494645448a1bedc8c4d254a72f25447ee983cc3 +Author: Aleksander Morgado +Date: Fri Sep 18 12:37:06 2020 +0200 + + shared-qmi: cleanup UIM client if SIM hot swap setup fails + + The cleanup was missing in one of the steps. + + src/mm-shared-qmi.c | 1 + + 1 file changed, 1 insertion(+) + +commit f3619f99f5538056d186cbb5cd7182c2f95c519a +Author: Aleksander Morgado +Date: Fri Sep 18 12:36:07 2020 +0200 + + shared-qmi: minor style changes in SIM hot swap logic + + src/mm-shared-qmi.c | 198 + +++++++++++++++++++++++++--------------------------- + 1 file changed, 94 insertions(+), 104 deletions(-) + +commit e4308a529e1b05b772a0fbbf7296c7132e9e8a9e +Author: Aleksander Morgado +Date: Fri Sep 18 12:03:07 2020 +0200 + + quectel: setup parent SIM hot swap in addition to +QUSIM + + So that e.g. in QMI-based devices we have both things, not just one. + + plugins/quectel/mm-broadband-modem-qmi-quectel.c | 14 +++++++-- + plugins/quectel/mm-broadband-modem-quectel.c | 14 +++++++-- + plugins/quectel/mm-shared-quectel.c | 40 + ++++++++++++++++++++++-- + plugins/quectel/mm-shared-quectel.h | 3 +- + 4 files changed, 64 insertions(+), 7 deletions(-) + +commit a2eb80e1709766cb92024481d3ffc3533acd4ecf +Author: Aleksander Morgado +Date: Fri Sep 18 11:49:52 2020 +0200 + + broadband-modem-mbim: also setup SIM hot swap with QMI over MBIM + + On QMI-capable MBIM devices, also setup the SIM hot swap logic using + QMI over MBIM, so that profile changes are detected. + + src/mm-broadband-modem-mbim.c | 70 + ++++++++++++++++++++++++++++++++++++------- + 1 file changed, 59 insertions(+), 11 deletions(-) + +commit 18b33e2e4a971460a983d3680e69954baab3735e +Author: Aleksander Morgado +Date: Fri Sep 18 11:27:32 2020 +0200 + + broadband-modem-mbim: don't cleanup subscriber info on disable + + The SIM hot swap setup is run during initialization and if it succeeds + it must be available throughout the whole execution of this modem + object. + + So, do not cleanup the SUBSCRIBER_INFO flag on 3GPP interface disable, + which is completely unrelated to the SIM hot swap setup logic. + + src/mm-broadband-modem-mbim.c | 7 ------- + 1 file changed, 7 deletions(-) + +commit 20176767ad9224884790f0d5ad04a70a49731a9f +Author: Aleksander Morgado +Date: Fri Sep 18 11:26:03 2020 +0200 + + broadband-modem-mbim: cleanup the subscriber info setup if enabling + fails + + If enabling the subscriber info notifications fails, we should no + longer have the setup for those notifications, so make sure it's + cleaned up on error. + + src/mm-broadband-modem-mbim.c | 67 + ++++++++++++++++++++++++------------------- + 1 file changed, 38 insertions(+), 29 deletions(-) + +commit 5285720c486762ffb40e0c561bafc29ea3678f98 +Author: Teijo Kinnunen +Date: Tue Sep 8 13:46:48 2020 +0300 + + shared-qmi: implement SIM/profile change detection + + Implement eUICC change detection for QMI based modems using one of the + following mechanisms (in order of preference): + + 1. If the modem supports "get slot status" operation, we monitor + physical slot status indications from the modem for the active + slot to detect when ICCID changes. + 2. Use "refresh register all" to subscribe refresh indications when + the eUICC triggers REFRESH operation following the enablement of + a new profile. + 3. Use "refresh register" to subscribe refresh indications (file + path of EF_ICCID is used) in a similar way. This is used with + older modems that do not support "refresh register all". + + If ICCID change is detected, the already existing SIM hot swap + mechanism in MM is triggered. + + src/mm-broadband-modem-qmi.c | 2 + + src/mm-shared-qmi.c | 464 + +++++++++++++++++++++++++++++++++++++++++++ + src/mm-shared-qmi.h | 6 + + 3 files changed, 472 insertions(+) + +commit 0880bf3f9aa97ef6e2e4c5040f36d1d4411cb72b +Author: Aleksander Morgado +Date: Mon Sep 28 11:57:55 2020 +0200 + + Revert "shared-qmi: implement SIM/profile change detection" + + This reverts commit e91f2ef315526a1a8a1b451acb5a190686b05225. + + This was wrongly merged squashing multiple commits together. Reverting + to merge separate commits. + + plugins/quectel/mm-broadband-modem-qmi-quectel.c | 14 +- + plugins/quectel/mm-broadband-modem-quectel.c | 14 +- + plugins/quectel/mm-shared-quectel.c | 40 +- + plugins/quectel/mm-shared-quectel.h | 3 +- + src/mm-broadband-modem-mbim.c | 136 +++---- + src/mm-broadband-modem-qmi.c | 2 - + src/mm-shared-qmi.c | 455 + ----------------------- + src/mm-shared-qmi.h | 6 - + 8 files changed, 50 insertions(+), 620 deletions(-) + +commit e91f2ef315526a1a8a1b451acb5a190686b05225 +Author: Teijo Kinnunen +Date: Mon Sep 28 09:29:09 2020 +0000 + + shared-qmi: implement SIM/profile change detection + + Implement eUICC change detection for QMI based modems using one of the + following mechanisms (in order of preference): + + 1. If the modem supports "get slot status" operation, we monitor + physical slot status indications from the modem for the active + slot to detect when ICCID changes. + 2. Use "refresh register all" to subscribe refresh indications when + the eUICC triggers REFRESH operation following the enablement of + a new profile. + 3. Use "refresh register" to subscribe refresh indications (file + path of EF_ICCID is used) in a similar way. This is used with + older modems that do not support "refresh register all". + + If ICCID change is detected, the already existing SIM hot swap + mechanism in MM is triggered. + + plugins/quectel/mm-broadband-modem-qmi-quectel.c | 14 +- + plugins/quectel/mm-broadband-modem-quectel.c | 14 +- + plugins/quectel/mm-shared-quectel.c | 40 +- + plugins/quectel/mm-shared-quectel.h | 3 +- + src/mm-broadband-modem-mbim.c | 136 ++++--- + src/mm-broadband-modem-qmi.c | 2 + + src/mm-shared-qmi.c | 455 + +++++++++++++++++++++++ + src/mm-shared-qmi.h | 6 + + 8 files changed, 620 insertions(+), 50 deletions(-) + +commit 318b2b01e340936e3f3b8d443f89acc432b85190 Author: Duลกan Kazik Date: Fri Sep 18 05:36:07 2020 +0000 po: slovak translation update - (cherry picked from commit 318b2b01e340936e3f3b8d443f89acc432b85190) - po/sk.po | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) -commit 1892d975c8d1bd92ff17dc112d09f2ec9853d243 +commit 9397ed420d8d3e9e16c1b04c9866063798f0a975 +Author: Aleksander Morgado +Date: Fri Sep 18 10:52:06 2020 +0200 + + gosuncn: new plugin + + For now, just with port type hints for the GM800 in MBIM mode. + + .gitlab-ci.yml | 2 +- + configure.ac | 2 + + plugins/Makefile.am | 23 +++++ + plugins/README.txt | 5 ++ + plugins/gosuncn/77-mm-gosuncn-port-types.rules | 17 ++++ + plugins/gosuncn/mm-plugin-gosuncn.c | 113 + +++++++++++++++++++++++++ + plugins/gosuncn/mm-plugin-gosuncn.h | 40 +++++++++ + plugins/tests/test-udev-rules.c | 11 +++ + 8 files changed, 212 insertions(+), 1 deletion(-) + +commit 8e8c794815fe1ef079101ce2eff5af43ee48b0f1 Author: Aleksander Morgado Date: Fri Sep 25 09:27:15 2020 +0200 samsung: fix typo in plugin name - (cherry picked from commit 8e8c794815fe1ef079101ce2eff5af43ee48b0f1) - plugins/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 2e8d1d8c5dbd8bdf0b38585bb03b9a66b809080a +commit 4e0f849bb98b535a9d48795ef85174727d9636da Author: Aleksander Morgado Date: Sat Sep 19 18:38:04 2020 +0200 @@ -759,19 +4758,15 @@ (mbim-device.c:236) ==19138== by 0x4D396B9: process_message (mbim-device.c:616) - (cherry picked from commit 4e0f849bb98b535a9d48795ef85174727d9636da) - src/mm-iface-modem-messaging.c | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) -commit a4d34530a76dadebeba4aab343c5f143d43e1842 +commit 00949c4ad34326722f6044a39aff8e1a33da6f18 Author: Aleksander Morgado Date: Sat Sep 19 20:26:43 2020 +0200 core: add autoptr cleanup methods to all internal types - (cherry picked from commit 00949c4ad34326722f6044a39aff8e1a33da6f18) - src/kerneldevice/mm-kernel-device-generic.h | 4 +++- src/kerneldevice/mm-kernel-device-udev.h | 4 +++- src/kerneldevice/mm-kernel-device.h | 1 + @@ -822,25 +4817,21 @@ src/mm-sms-qmi.h | 1 + 48 files changed, 55 insertions(+), 3 deletions(-) -commit bd96f8874c66f7b3a96e58e6fb7454da21afd2b8 +commit 19ddfa18bbbce29315429436f461696d50b752b3 Author: Anders Jonsson Date: Sat Sep 19 00:05:53 2020 +0200 po: Update Swedish translation - (cherry picked from commit 19ddfa18bbbce29315429436f461696d50b752b3) - po/sv.po | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) -commit 8d8ac9e8462f6dd209c3833e8bef378cbc3a002d +commit 856ea932678e62ffccd9f1cf53e8671324efd569 Author: Aleksander Morgado Date: Fri Sep 18 10:32:02 2020 +0200 po: use package bugreport as MSGID_BUGS_ADDRESS - (cherry picked from commit 856ea932678e62ffccd9f1cf53e8671324efd569) - po/Makevars | 2 +- po/cs.po | 5 +++-- po/da.po | 5 +++-- @@ -861,18 +4852,29 @@ po/zh_CN.po | 5 +++-- 18 files changed, 52 insertions(+), 35 deletions(-) -commit f5ff58729d0cc2d6badb926b9957ddb23ffe7632 +commit 6a3b7bdf95bbdb4b6bf75ea331abc1f885f802dc Author: Aleksander Morgado Date: Fri Sep 18 10:31:32 2020 +0200 build: set package bugreport to the gitlab issues URL - (cherry picked from commit 6a3b7bdf95bbdb4b6bf75ea331abc1f885f802dc) - configure.ac | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) -commit ae03d32c7a72bf034ff3c636013a692a6d03f5b8 +commit 7f39c16c8c0c0e0597640deb3b6912bd8043e017 +Author: Jessy Diamond Exum +Date: Wed Aug 26 13:52:04 2020 -0700 + + cinterion: Add SIM hot swap to AT broadband modems (PLS8 & PLAS9). + + Enable the SCKS Unsolicited Result Code (URC) to detect SIM hot + swap, and trigger SIM redetection. + + plugins/cinterion/mm-broadband-modem-cinterion.c | 120 + +++++++++++++++++++++++ + 1 file changed, 120 insertions(+) + +commit b1679b58939fc2563b827d478ac0eea937fd16c8 Author: Jessy Diamond Exum Date: Wed Aug 26 13:52:04 2020 -0700 @@ -889,13 +4891,47 @@ on both modems, it is necessary to explicitly set the URC reporting port to APPLICATION. - (cherry picked from commit b1679b58939fc2563b827d478ac0eea937fd16c8) - plugins/cinterion/mm-broadband-modem-cinterion.c | 29 ++++++++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) -commit 1cd78cc28a9c82be70b56731636bb9299bdd1fb2 +commit af5c242e9234a7061ec0d6624e3712153c7c2c6b +Author: Aleksander Morgado +Date: Fri Sep 11 10:21:03 2020 +0200 + + iface-modem: don't reconfigure sim hot swap context on SIM PIN unlock + + If we had already successfully run the sim hot swap context setup + during the initial initialization, make sure we don't re-run on SIM + PIN unlock, because we may be re-creating signal handlers and such. + + src/mm-iface-modem.c | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +commit ab4160afa676404859d4e9fdb751217cbff8a0bb +Author: Aleksander Morgado +Date: Fri Sep 11 10:15:50 2020 +0200 + + quectel: minor refactor in the sim hot swap setup logic + + plugins/quectel/mm-shared-quectel.c | 81 + ++++++++++++++++++------------------- + 1 file changed, 39 insertions(+), 42 deletions(-) + +commit 06148aba480a3a336092b5675483e9d6268c50d6 +Author: Teijo Kinnunen +Date: Tue Sep 8 09:52:31 2020 +0000 + + iface-modem: add mm_iface_modem_check_for_sim_swap function + + The function shall be needed for profile switch checking. + + src/mm-iface-modem.c | 76 + ++++++++++++++++++++++++++++++++++++++++++++++++++++ + src/mm-iface-modem.h | 10 +++++++ + 2 files changed, 86 insertions(+) + +commit 958ca74391481616db41cd412a9e12556dd21971 Author: Aleksander Morgado Date: Mon Sep 7 10:55:02 2020 +0200 @@ -937,12 +4973,10 @@ | gateway: 10.182.100.1 | dns: 80.58.61.250, 80.58.61.254 - (cherry picked from commit 958ca74391481616db41cd412a9e12556dd21971) - src/mm-bearer-mbim.c | 5 +++++ 1 file changed, 5 insertions(+) -commit 4d78be6fd99ce4c20862eee921ad6c351d811b11 +commit f8eeab21213e4ec487ce3f91b0ca09f11e52cec0 Author: Aleksander Morgado Date: Mon Sep 7 10:46:38 2020 +0200 @@ -956,12 +4990,63 @@ We therefore change the logic to skip processing the nw_error unless the activation state is reported as ACTIVATED or ACTIVATING. - (cherry picked from commit f8eeab21213e4ec487ce3f91b0ca09f11e52cec0) - src/mm-bearer-mbim.c | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) -commit d195ee9d3399f8c7dc709e6893c268453768a792 +commit e52ad1cc88601b2da1946678a2743465362d88c6 +Author: Teijo Kinnunen +Date: Mon Sep 7 15:18:52 2020 +0300 + + iface-modem: add an optional iccid parameter to check_for_sim_swap + + If the new iccid is already available, reading the iccid from the + card can be skipped. + + plugins/quectel/mm-shared-quectel.c | 1 + + src/mm-broadband-modem.c | 23 ++++++++++++++++++++++- + src/mm-iface-modem.c | 1 + + src/mm-iface-modem.h | 1 + + 4 files changed, 25 insertions(+), 1 deletion(-) + +commit 49b4e6a6ff1104393edb53a812f4a23d32f04ff1 +Author: Aleksander Morgado +Date: Sun Aug 16 14:07:58 2020 +0200 + + quectel: prefer +CTZU=3 to +CTZU=1 if supported + + Some quectel modems, like the EC25, require +CTZU=3 in order to have + CCLK? report localtime instead of UTC time. + + Fixes + https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/233 + + plugins/quectel/mm-shared-quectel.c | 116 + +++++++++++++++++++++++++++++++----- + 1 file changed, 101 insertions(+), 15 deletions(-) + +commit e65175234b769cbf68f04e989948a428552c6740 +Author: Aleksander Morgado +Date: Sun Aug 16 11:07:20 2020 +0200 + + quectel: new custom +CTZU=? parser + + Some quectel devices, like the EC25 have a non-standard additional '3' + mode value: + + 0: Disable automatic time zone update via NITZ + 1: Enable automatic time zone update via NITZ + 3: Enable automatic time zone update via NITZ and update LOCAL + time to RTC + + plugins/Makefile.am | 23 ++++++ + plugins/quectel/mm-modem-helpers-quectel.c | 91 + +++++++++++++++++++++ + plugins/quectel/mm-modem-helpers-quectel.h | 32 ++++++++ + plugins/quectel/tests/test-modem-helpers-quectel.c | 93 + ++++++++++++++++++++++ + 4 files changed, 239 insertions(+) + +commit 42288fc2a10b5e1740d86ebe6249e21a2337d3bc Author: Aleksander Morgado Date: Fri Aug 28 18:45:59 2020 +0200 @@ -1029,12 +5114,350 @@ * ttyUSB4: DAM interface. * ttyUSB5: AT-capable port (data). - (cherry picked from commit 42288fc2a10b5e1740d86ebe6249e21a2337d3bc) - plugins/simtech/77-mm-simtech-port-types.rules | 14 ++++++++++++++ 1 file changed, 14 insertions(+) -commit 97e20d1e2b93e9908ebebb17c2d59f3c8fe4e781 +commit ddb5b0bb579ccd8783467afd0a569395bbb08a38 +Author: Aleksander Morgado +Date: Sat Aug 1 09:59:07 2020 +0200 + + libmm-glib,docs: add index for 1.16 + + docs/reference/libmm-glib/libmm-glib-docs.xml | 4 ++++ + 1 file changed, 4 insertions(+) + +commit e4fd17d8c30c5bacc5eedb8c48db7317089bbcef +Author: Aleksander Morgado +Date: Sat Aug 1 10:00:37 2020 +0200 + + shared-qmi: implement SIM slot switching + + Using the 'UIM switch slot' operation, this commit introduces the + ability to change which SIM slot to be active at any given time in a + Multi-SIM Single-Standby setup. + + There is no validation done on whether the selected SIM slot has a + valid SIM card inserted or not; if the user selects a slot without any + SIM card, the newly probed modem object will start in Failed state + right away. + + src/mm-broadband-modem-mbim.c | 2 + + src/mm-broadband-modem-qmi.c | 2 + + src/mm-shared-qmi.c | 127 + ++++++++++++++++++++++++++++++++++++++++++ + src/mm-shared-qmi.h | 8 +++ + 4 files changed, 139 insertions(+) + +commit 7c76450c15555204d14a8ce0550dc2c639d288b3 +Author: Aleksander Morgado +Date: Sat Aug 1 09:59:54 2020 +0200 + + shared-qmi: implement SIM slots loading during initialization + + This commit introduces Multi-SIM Single-Standby support in all QMI + capable devices that support multiple SIM slots. + + The 'UIM Get Slot Status' method is used to list all available + physical slots as well as the availability of SIM cards in the + different slots. This method also provides UICC already, so the SIM + objects are created early and exposed early in DBus. + + Once all slots are listed, the logic will briefly make each of the + available SIM cards active in order to read additional settings like + IMSI, MCCMNC or the Operator name. This brief switching is required + because in a Single-Standby setup only one SIM can be active at any + given time. + + The last slot to probe is always the one that was active originally, + making sure that the modem initialization logic can go on with the + correct SIM slot. + + src/mm-broadband-modem-mbim.c | 4 + + src/mm-broadband-modem-qmi.c | 2 + + src/mm-shared-qmi.c | 312 + ++++++++++++++++++++++++++++++++++++++++++ + src/mm-shared-qmi.h | 9 +- + 4 files changed, 326 insertions(+), 1 deletion(-) + +commit 48ca1aea3c12262307c2ce13fbdedb1d91c640c6 +Author: Aleksander Morgado +Date: Sat Aug 1 09:59:50 2020 +0200 + + sim-qmi: implement explicit wait for SIM readiness + + During the base SIM initialization process, where we ask the modem for + the properties of the currently primary active SIM, we need to make + sure that the SIM is ready before attempting to query this + information. + + This explicit wait is required when loading properties for non + active SIMs during the short period of time when they're made active. + + src/mm-sim-qmi.c | 128 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 128 insertions(+) + +commit b564d5f2e508537dc5b10fd5fe20497113226526 +Author: Aleksander Morgado +Date: Sat Aug 1 09:59:47 2020 +0200 + + sim-qmi: allow creating preinitialized SIM objects + + The default SIM creation method will attempt to initialize the SIM + properties during the object creation. + + This new method allows creating SIM objects with already known + property values, and therefore not explicitly running the + asynchronous initialization process. + + Completely equivalent to mm_base_sim_new_initialized() but creating a + subclassed MMSimQmi instead of the generic MMBaseSim. + + src/mm-sim-qmi.c | 31 +++++++++++++++++++++++++++++++ + src/mm-sim-qmi.h | 10 ++++++++++ + 2 files changed, 41 insertions(+) + +commit 89b6e811b984f2f9f6e0eea652246a58e3200c8f +Author: Aleksander Morgado +Date: Sat Aug 1 09:59:43 2020 +0200 + + helpers-qmi: fix detection of primary active SIM status + + The original logic that parsed the 'UIM Get Card Status Output' did a + bit of guessing to decide what was the current lock status to consider + in the modem. This guessing was fine on systems with a single SIM + slot, but it was very wrong as soon as multiple SIMs had to be + considered. + + In a Multi-SIM Multi-Standby setup, with multiple SIMs reported as + active, we should look for the one flagged as "GW primary" to consider + it the primary SIM card of the system,the one required to start a data + connection. + + We explicitly ignore the ones flagged as "1X primary", as we don't + consider a SIM card required in CDMA/EVDO setups. + + src/mm-modem-helpers-qmi.c | 175 + +++++++++++++++++++++------------------------ + 1 file changed, 80 insertions(+), 95 deletions(-) + +commit e6ab1182df861e1243f5b93ec334008bec84943e +Author: Aleksander Morgado +Date: Sat Aug 1 09:59:40 2020 +0200 + + helpers-qmi: move 'UIM Get Card Status Output' parsing to helpers + + This is going to be used in handling the multi-SIM setup, so make it a + common helper. + + src/mm-broadband-modem-qmi.c | 265 + ++----------------------------------------- + src/mm-modem-helpers-qmi.c | 244 + +++++++++++++++++++++++++++++++++++++++ + src/mm-modem-helpers-qmi.h | 12 ++ + 3 files changed, 267 insertions(+), 254 deletions(-) + +commit 924cf1af3c5e1aec1df680d50e4b9ae6dd8e0ba9 +Author: Aleksander Morgado +Date: Sat Aug 1 09:59:37 2020 +0200 + + api,modem: new 'SetPrimarySimSlot' method + + This new method allows changing the SIM slot considered as primary, + when the modem supports multiple SIM slots. + + The generic handling of this method will make sure that the modem + object and all its SIM objects are re-probed from scratch as soon as a + successful SIM slot switch happens. + + Implementations may report MM_CORE_ERROR_EXISTS when the switch + doesn't need to happen (e.g. if the requested SIM slot is already the + active one). + + cli/mmcli-modem.c | 51 ++++++++++ + docs/man/mmcli.1 | 6 ++ + docs/reference/libmm-glib/libmm-glib-sections.txt | 7 ++ + .../org.freedesktop.ModemManager1.Modem.xml | 18 ++++ + libmm-glib/mm-modem.c | 87 ++++++++++++++++ + libmm-glib/mm-modem.h | 13 +++ + src/mm-iface-modem.c | 112 + +++++++++++++++++++++ + src/mm-iface-modem.h | 9 ++ + 8 files changed, 303 insertions(+) + +commit 5041b9c99b8587185b629715e3466d31a619abf3 +Author: Aleksander Morgado +Date: Sat Aug 1 09:59:33 2020 +0200 + + mmcli: also lookup SIM objects in the 'SimSlots' property + + If the device supports multiple SIM slots, when the user provides a + PATH or INDEX of a SIM card to use, don't look for the SIM object only + in the 'Sim' property, also look for it in the 'SimSlots' property. + + cli/mmcli-common.c | 102 + ++++++++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 97 insertions(+), 5 deletions(-) + +commit e20eebff473c37868b528f5031809c18645309ac +Author: Aleksander Morgado +Date: Sat Aug 1 09:59:30 2020 +0200 + + base-modem: SIM switch handling at base modem level + + When the SIM switch doesn't happen as part of an async hot swap + detection, we should trigger the switch handling at base modem level, + which e.g. doesn't require explicit cleanup of the SIM hot swap + detection port context. + + src/mm-base-modem.c | 22 ++++++++++++++++++++++ + src/mm-base-modem.h | 2 ++ + src/mm-broadband-modem.c | 19 +------------------ + 3 files changed, 25 insertions(+), 18 deletions(-) + +commit e7409b689876488594409e945687486adb1d9514 +Author: Aleksander Morgado +Date: Sat Aug 1 09:59:27 2020 +0200 + + api,modem: new 'SimSlots' and 'PrimarySimSlot' properties + + The 'SimSlots' property exposes an array of SIM object paths, with one + array item for each available SIM slot in the system. If a valid SIM + card is found in a given slot, the path of the SIM object will be + exposed in the array item; if no valid SIM card is found, the empty + object path ("/") will be exposed instead. + + The 'PrimarySimSlot' property exposes which of the SIM slots available + in the system is the one configured as being primary. In a Multi-SIM + Single-Standby setup, the primary slot will be the one corresponding + to the single active SIM in the system. In a Multi-SIM Multi-Standby + setup, the primary slot will be the one configured to act as primary + (e.g. the one that will be used for the data connection) among all the + active SIM cards found. + + cli/mmcli-modem.c | 2 + + cli/mmcli-output.c | 35 ++- + cli/mmcli-output.h | 20 +- + docs/reference/libmm-glib/libmm-glib-sections.txt | 11 + + .../org.freedesktop.ModemManager1.Modem.xml | 47 ++- + libmm-glib/mm-modem.c | 316 + +++++++++++++++++++++ + libmm-glib/mm-modem.h | 16 ++ + src/mm-broadband-modem.c | 14 + + src/mm-iface-modem.c | 94 +++++- + src/mm-iface-modem.h | 11 + + src/mm-private-boxed-types.c | 29 ++ + src/mm-private-boxed-types.h | 3 + + 12 files changed, 587 insertions(+), 11 deletions(-) + +commit b2979c63eb2d724512c7a96c071f3d4b422e79cb +Author: Aleksander Morgado +Date: Sat Aug 1 09:59:24 2020 +0200 + + base-sim: allow explicit wait for SIM readiness during initialization + + Before attempting to load any SIM property value, allow checking + whether the SIM is ready for operation or not. + + This action is implicitly done by the "unlock required check" step + that is triggered before initializing the primary SIM card, but it + would not be done when initializing other available SIM cards. + + src/mm-base-sim.c | 30 ++++++++++++++++++++++++++++++ + src/mm-base-sim.h | 8 ++++++++ + 2 files changed, 38 insertions(+) + +commit 18084f89394491d4a363a90354000c55af1490c8 +Author: Aleksander Morgado +Date: Sat Aug 1 09:59:21 2020 +0200 + + base-sim: allow creating preinitialized SIM objects + + The default SIM creation method will attempt to initialize the SIM + properties during the object creation. + + This new method allows creating SIM objects with already known + property values, and therefore not explicitly running the + asynchronous initialization process. + + src/mm-base-sim.c | 29 +++++++++++++++++++++++++++++ + src/mm-base-sim.h | 9 +++++++++ + 2 files changed, 38 insertions(+) + +commit c999c8e9cf54a6ef34b16325c32a03aa1e31db2d +Author: Aleksander Morgado +Date: Sat Aug 1 09:59:19 2020 +0200 + + base-sim: new 'slot number' property + + This new property helps us identify in which SIM slot the SIM card is + inserted, when multiple slots are available, in the [1,N] range. + + For the single-SIM systems this value will always be '0'. + + This property is not publicly exposed in DBus, it is considered an + implementation detail. + + src/mm-base-sim.c | 25 +++++++++++++++++++++++++ + src/mm-base-sim.h | 9 ++++++--- + 2 files changed, 31 insertions(+), 3 deletions(-) + +commit 842ad4bd64404e4a98d089c9a8fa60715c7018c6 +Author: Aleksander Morgado +Date: Sat Aug 1 09:59:16 2020 +0200 + + base-sim: only allow operations on active SIMs + + If a SIM is inactive we cannot perform any SIM-PIN or SIM-PUK related + operation with it. + + src/mm-base-sim.c | 56 + +++++++++++++++++++++++++++++++++++++++++++++++-------- + 1 file changed, 48 insertions(+), 8 deletions(-) + +commit 86a183778b5b123f6556ecbe53ec7d06d6e7c575 +Author: Aleksander Morgado +Date: Sat Aug 1 09:59:13 2020 +0200 + + api,sim: new 'Active' property + + In preparation for the multi-SIM setup, we need a way to tell whether + a given SIM card is active or not in the system. + + On systems with one single SIM slot, the available SIM card will + always be active. + + On Multi-SIM Single-Standby setups we may have multiple SIM slots with + multiple SIM cards, but only one of them will be active at any given + time. + + On Multi-SIM Multi-Standby setups we may have multiple SIM slots with + multiple SIM cards that may be active at the same time. E.g. the QMI + protocol allows up to 5 different active SIM cards (primary, + secondary, tertiary...). + + cli/mmcli-output.c | 1 + + cli/mmcli-output.h | 1 + + cli/mmcli-sim.c | 1 + + docs/reference/libmm-glib/libmm-glib-sections.txt | 3 +++ + introspection/org.freedesktop.ModemManager1.Sim.xml | 13 +++++++++++++ + libmm-glib/mm-sim.c | 20 + ++++++++++++++++++++ + libmm-glib/mm-sim.h | 2 ++ + plugins/huawei/mm-sim-huawei.c | 1 + + plugins/iridium/mm-sim-iridium.c | 1 + + plugins/mbm/mm-sim-mbm.c | 1 + + plugins/nokia/mm-sim-nokia.c | 1 + + plugins/novatel/mm-sim-novatel-lte.c | 1 + + plugins/pantech/mm-sim-pantech.c | 1 + + plugins/sierra/mm-sim-sierra.c | 1 + + plugins/ublox/mm-sim-ublox.c | 1 + + src/mm-base-sim.c | 1 + + src/mm-sim-mbim.c | 1 + + src/mm-sim-qmi.c | 1 + + 18 files changed, 52 insertions(+) + +commit 48973e3d72307ca84375d1c7811eb0b04def91ce Author: David Leonard Date: Wed Aug 26 14:37:10 2020 +1000 @@ -1053,12 +5476,10 @@ Fix thanks to Peter Hunt - (cherry picked from commit 48973e3d72307ca84375d1c7811eb0b04def91ce) - src/mm-sms-part-cdma.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 5bbef22215bf3cfead5436a431543c17a6ffa29f +commit 599f545c0d905505516c6546ff77caced2aa14f1 Author: Aleksander Morgado Date: Thu Aug 20 12:18:05 2020 +0200 @@ -1078,15 +5499,13 @@ Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/250 - (cherry picked from commit 599f545c0d905505516c6546ff77caced2aa14f1) - src/mm-sms-part-3gpp.c | 159 +++++++++++++++++++++-------------------- src/mm-sms-part.h | 18 ++++- src/tests/test-sms-part-3gpp.c | 78 ++++++++++++++++---- 3 files changed, 165 insertions(+), 90 deletions(-) -commit f38c3bf7615b9d8366598f32cdd645d0bc503363 +commit 81162df15dc9a409d0979ff8d472a026f31ed883 Author: Aleksander Morgado Date: Thu Aug 20 11:32:18 2020 +0200 @@ -1095,14 +5514,12 @@ Mostly to use GLib types like gchar or gint, and also to use G_N_ELEMENTS() instead of custom end of array terminating items. - (cherry picked from commit 81162df15dc9a409d0979ff8d472a026f31ed883) - src/mm-charsets.c | 290 ++++++++++++++++++++++++++++-------------------------- src/mm-charsets.h | 42 ++++---- 2 files changed, 170 insertions(+), 162 deletions(-) -commit 901426c3ac3e52971e06530066ac6527ab7cb08f +commit eb5443b197464e55c85d7a8af67a28f2088506a3 Author: Aleksander Morgado Date: Thu Aug 20 10:58:24 2020 +0200 @@ -1111,75 +5528,99 @@ Just as an implementation detail to be taken as an extension of UCS2BE, never really to be used as a real modem charset. - (cherry picked from commit eb5443b197464e55c85d7a8af67a28f2088506a3) - src/mm-charsets.c | 16 ++++++++++++++-- src/mm-charsets.h | 3 ++- src/tests/test-charsets.c | 18 ++++++++++-------- 3 files changed, 26 insertions(+), 11 deletions(-) -commit 55f90b1dafcd50fec79b20e4ecd73a31b2a86339 +commit 93686510d737bc373100beaeeb3edb7ca091a3f0 Author: Aleksander Morgado Date: Thu Aug 20 10:57:01 2020 +0200 sms-part-3gpp: minor refactor in text split logic - (cherry picked from commit 93686510d737bc373100beaeeb3edb7ca091a3f0) - src/mm-sms-part-3gpp.c | 167 ++++++++++++++++++++++++++++--------------------- 1 file changed, 94 insertions(+), 73 deletions(-) -commit 028b359d0365f6750834aed90bd545c1a5768cc3 +commit d43d595c0270ff5fdbe62626679493d97824c668 Author: Aleksander Morgado -Date: Wed Aug 19 18:34:04 2020 +0200 - - build: post-release version bump to 1.14.3 +Date: Wed Aug 19 14:55:41 2020 +0200 - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + broadband-modem-qmi: avoid unused functions -commit 88bbae4fe8b2b3b4dfca6bf4370a8124810ed74f -Author: Aleksander Morgado -Date: Wed Aug 19 18:09:32 2020 +0200 + Only applicable when building with WITH_NEWEST_QMI_COMMANDS. - release: bump version to 1.14.2 + mm-broadband-modem-qmi.c:4741:1: error: + โ€˜common_enable_disable_unsolicited_events_signal_strengthโ€™ + defined but not used [-Werror=unused-function] + 4741 | common_enable_disable_unsolicited_events_signal_strength + (GTask *task) + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + mm-broadband-modem-qmi.c:4528:1: error: + โ€˜serving_system_indication_cbโ€™ defined but not used + [-Werror=unused-function] + 4528 | serving_system_indication_cb (QmiClientNas *client, + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ + mm-broadband-modem-qmi.c:3468:1: error: + โ€˜common_enable_disable_unsolicited_registration_events_serving_systemโ€™ + defined but not used [-Werror=unused-function] + 3468 | + common_enable_disable_unsolicited_registration_events_serving_system + (GTask *task) + | + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + mm-broadband-modem-qmi.c:2812:1: error: + โ€˜get_serving_system_3gpp_readyโ€™ defined but not used + [-Werror=unused-function] + 2812 | get_serving_system_3gpp_ready (QmiClientNas *client, + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + mm-broadband-modem-qmi.c:1652:1: error: + โ€˜get_signal_strength_readyโ€™ defined but not used + [-Werror=unused-function] + 1652 | get_signal_strength_ready (QmiClientNas *client, - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/mm-broadband-modem-qmi.c | 23 ++++++++++++++++++----- + 1 file changed, 18 insertions(+), 5 deletions(-) -commit d2b1beb9ea73af92555e173bb84d1092ac36f06f +commit 9b8fb447b0b2b967fe7fbb980ed2debd12be67ed Author: Aleksander Morgado -Date: Wed Aug 19 18:08:31 2020 +0200 +Date: Wed Aug 19 14:48:12 2020 +0200 - NEWS: update for 1.14.2 + broadband-modem-qmi: fix type comparison - NEWS | 29 +++++++++++++++++++++++++++++ - 1 file changed, 29 insertions(+) + Only applicable when building with WITH_NEWEST_QMI_COMMANDS. -commit 901d994a1291864ac0ec493401f95f7148c139c5 -Author: root -Date: Thu Aug 13 11:25:59 2020 +0800 + mm-broadband-modem-qmi.c: In function โ€˜process_common_infoโ€™: + mm-broadband-modem-qmi.c:2924:20: error: comparison is always + false due to limited range of data type [-Werror=type-limits] + 2924 | if (mnc[2] == 0xFF) { + | ^~ - quectel: allow MBIM devices + src/mm-broadband-modem-qmi.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) - (cherry picked from commit d9a64c74ff0244b96a44fa27abcdc411d29f4874) +commit 65f56122b53f52dfd9b5ffdcce53d829d80b31e7 +Author: Aleksander Morgado +Date: Wed Aug 19 14:59:01 2020 +0200 - plugins/quectel/mm-plugin-quectel.c | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) + ci: add build test for WITH_NEWEST_QMI_COMMANDS -commit ec1ddf30828adc743d09412d64bd36b83b84e5bd + We keep this logic around, so lets add a build test as well. + + .gitlab-ci.yml | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +commit 5346d3c55c7ffc38af58c879fd426a2c3accd489 Author: carlyin Date: Sun Aug 16 16:55:25 2020 +0800 quectel: add port type hints for the Quectel 5G RM500 - (cherry picked from commit 5346d3c55c7ffc38af58c879fd426a2c3accd489) - plugins/quectel/77-mm-quectel-port-types.rules | 10 ++++++++++ 1 file changed, 10 insertions(+) -commit f192ffc3774a02dc451216b7ad0fae2d0df47b80 +commit de23b53ee4d91367b50a960f8b19b2e29449e49a Author: Aleksander Morgado Date: Sun Aug 16 11:13:26 2020 +0200 @@ -1189,24 +5630,29 @@ If splitting the +CPMS=? response in groups fails, make sure we set the GError when returning FALSE. - (cherry picked from commit de23b53ee4d91367b50a960f8b19b2e29449e49a) - src/mm-modem-helpers.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) -commit 37af15eba298c0676225d4dded01a65495655028 +commit 55ae47a3bb874991ca621e4aa17cf16b08d28139 Author: Aleksander Morgado Date: Sun Aug 16 11:06:57 2020 +0200 quectel: add udev rules unit tester - (cherry picked from commit 55ae47a3bb874991ca621e4aa17cf16b08d28139) - plugins/Makefile.am | 5 +++-- plugins/tests/test-udev-rules.c | 11 +++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) -commit 0d53df68c78203bc2f2f4ee279a20f0306a6b41b +commit d9a64c74ff0244b96a44fa27abcdc411d29f4874 +Author: root +Date: Thu Aug 13 11:25:59 2020 +0800 + + quectel: allow MBIM devices + + plugins/quectel/mm-plugin-quectel.c | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +commit 7cd373589cb7d81633a5df279e0b63c405cc2bb6 Author: Aleksander Morgado Date: Tue Aug 4 16:33:11 2020 +0200 @@ -1314,13 +5760,11 @@ (0x01) <<<<<< length = 4 <<<<<< value = 00:00:00:00 <<<<<< translated = 0 - (cherry picked from commit 7cd373589cb7d81633a5df279e0b63c405cc2bb6) - src/mm-bearer-qmi.c | 65 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 43 insertions(+), 22 deletions(-) -commit 8c0872fb554dc4bd07b3498d34be1b8ed5d082dc +commit 16e3bb892d25e3cb7796889082943b073924a695 Author: Aleksander Morgado Date: Tue Aug 4 14:13:45 2020 +0200 @@ -1382,12 +5826,10 @@ 3GPP unregistration' timeout expires, as that will force the bearer to be disconnected. - (cherry picked from commit 16e3bb892d25e3cb7796889082943b073924a695) - src/mm-iface-modem.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -commit b7852f658775c903192f1065d5e938ec6319c27d +commit 2f684ce92ea9cc772a36db2e7bd9d48e677d3935 Author: Giacinto Cifelli Date: Tue Aug 11 14:26:13 2020 +0200 @@ -1403,23 +5845,78 @@ af2d6c1c4b7f815862313bf0f84b1ff0e91ccd60, but we didn't remove the IPv4 limitation at that point. - (cherry picked from commit 2f684ce92ea9cc772a36db2e7bd9d48e677d3935) - plugins/cinterion/mm-broadband-bearer-cinterion.c | 8 -------- - 1 file changed, 8 deletions(-) + plugins/cinterion/mm-broadband-modem-cinterion.c | 7 ------- + 2 files changed, 15 deletions(-) -commit 660e8612b3f77fd1074b91e9586a3a5c5d63fc67 +commit a36beb0a958f65bcaa5939e04bf340d98d4180a1 Author: Giacinto Cifelli Date: Tue Aug 11 07:10:36 2020 +0200 cinterion: clarify role of the AT ports for the ELS61/PLS62 family - (cherry picked from commit a36beb0a958f65bcaa5939e04bf340d98d4180a1) - plugins/cinterion/77-mm-cinterion-port-types.rules | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) -commit e34d1fffa16cf931736425509559db6f156c4226 +commit e2ab49db0f5078716156c70a23f8f5d5b6d27848 +Author: Giacinto Cifelli +Date: Mon Jul 27 10:29:14 2020 +0200 + + cinterion: setup initial LTE parameters + + plugins/cinterion/mm-broadband-bearer-cinterion.c | 37 +- + plugins/cinterion/mm-broadband-bearer-cinterion.h | 7 + + plugins/cinterion/mm-broadband-modem-cinterion.c | 563 + ++++++++++++++++++++- + plugins/cinterion/mm-modem-helpers-cinterion.c | 52 ++ + plugins/cinterion/mm-modem-helpers-cinterion.h | 9 + + .../cinterion/tests/test-modem-helpers-cinterion.c | 66 +++ + 6 files changed, 722 insertions(+), 12 deletions(-) + +commit 28ad994e372dc58e474567c70adbb0f58022cb22 +Author: Aleksander Morgado +Date: Mon Aug 10 19:26:56 2020 +0200 + + sierra: XMM-specific features in XMM based modems (e.g. EM7345) + + We create XMM-based modems like the EM7345 with XMM-specific features + like the AT+XLCSLSR based GNSS support. E.g.: + + $ mmcli -m a --location-status + ------------------------ + Location | capabilities: 3gpp-lac-ci, gps-raw, gps-nmea, + agps-msa, agps-msb + | enabled: 3gpp-lac-ci + | signals: no + ------------------------ + GPS | refresh rate: 30 seconds + + $ sudo mmcli -m a --location-enable-gps-nmea + successfully setup location gathering + + $ sudo mmcli -m a --location-get + -------------------------- + 3GPP | operator code: 214 + | operator name: 7 + | location area code: 0000 + | tracking area code: 6FFE + | cell id: 0465CD20 + -------------------------- + GPS | nmea: $GPGSA,A,1,,,,,,,,,,,,,,,*1E + | $GNGSA,A,1,,,,,,,,,,,,,,,,1*1D + | $GNRMC,235951.000,V,,,,,,,,,,N,V*20 + | $GNVTG,,T,,M,,N,,K,N*32 + | $GNGGA,235951.000,,,,,0,0,,,M,,M,,*5F + + Fixes + https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/25 + + configure.ac | 3 ++- + plugins/Makefile.am | 1 + + plugins/sierra/mm-plugin-sierra.c | 20 ++++++++++++++++++++ + 3 files changed, 23 insertions(+), 1 deletion(-) + +commit 422a9070c40c48847870cb2cf141fe102cd72cba Author: Giacinto Cifelli Date: Tue Aug 4 11:04:17 2020 +0200 @@ -1429,38 +5926,41 @@ (ctx->modem here) and not to a *MMBaseBearer (self here) - (cherry picked from commit 422a9070c40c48847870cb2cf141fe102cd72cba) - plugins/cinterion/mm-broadband-bearer-cinterion.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 0e57e5ce93f39ad1cf8d18be6e3aaeee4c49cad0 +commit 1620f04b9b1b3166c37ca7e9170322df1e185258 +Author: Aleksander Morgado +Date: Sat Aug 1 09:59:10 2020 +0200 + + mmcli,output: use 'path' instead of 'dbus path' in field descriptions + + cli/mmcli-output.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit 74dd28c4e31cca38d0b4c7ed034af4226566b404 Author: Aleksander Morgado Date: Sat Aug 1 09:59:05 2020 +0200 broadband-modem: minor method rename - (cherry picked from commit 74dd28c4e31cca38d0b4c7ed034af4226566b404) - plugins/telit/mm-broadband-modem-telit.c | 2 +- src/mm-broadband-modem-mbim.c | 2 +- src/mm-broadband-modem.c | 4 ++-- src/mm-broadband-modem.h | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) -commit 38151a0c8fe131ec3a23a9f8961ec97d2c6b3733 +commit 130ea74cc953e9029a9a1662a788048ac765a0b3 Author: Aleksander Morgado Date: Sat Aug 1 09:59:01 2020 +0200 iface-modem: move sim hot swap ready to correct place in sequence - (cherry picked from commit 130ea74cc953e9029a9a1662a788048ac765a0b3) - src/mm-iface-modem.c | 53 +++++++++++++++++++++++++--------------------------- 1 file changed, 25 insertions(+), 28 deletions(-) -commit 47074c17a2b0ff32b122069307a98173a6fcf8d3 +commit 4f1da8797213fb79856a5e8e1c6e6dca7236c2e0 Author: Giacinto Cifelli Date: Mon Jul 27 12:27:26 2020 +0200 @@ -1472,24 +5972,20 @@ Fortunately, all modules of the IMT family tolerate this syntax, so it can be adopted for the entire family. - (cherry picked from commit 4f1da8797213fb79856a5e8e1c6e6dca7236c2e0) - plugins/cinterion/mm-broadband-bearer-cinterion.c | 2 ++ 1 file changed, 2 insertions(+) -commit 6ad247f89840f5bc245a6c9e65f8ccf8fed1709a +commit 07ac85e2f70706e377c2019b07ce29958c70668c Author: Giacinto Cifelli Date: Mon Jul 27 12:24:17 2020 +0200 cinterion: ignore ^SYSSTART urc - (cherry picked from commit 07ac85e2f70706e377c2019b07ce29958c70668c) - plugins/cinterion/mm-broadband-modem-cinterion.c | 35 ++++++++++++++++++++++++ 1 file changed, 35 insertions(+) -commit 8b3eac8323129565b007f5460972086170e67204 +commit 408ec530e0442137194cf048de72183011fdc40b Author: Giacinto Cifelli Date: Mon Jul 27 06:23:52 2020 +0200 @@ -1499,15 +5995,13 @@ AT^SGAUTH=cid,type,user,pwd for the IMT family AT^SGAUTH=cid,type,pwd,user for the rest - (cherry picked from commit 408ec530e0442137194cf048de72183011fdc40b) - plugins/cinterion/mm-broadband-bearer-cinterion.c | 19 +++++++++++++++++-- plugins/cinterion/mm-broadband-modem-cinterion.c | 8 ++++++++ plugins/cinterion/mm-broadband-modem-cinterion.h | 3 +++ 3 files changed, 28 insertions(+), 2 deletions(-) -commit bd940922ed623d27b0266a411f6dfc808274b8c9 +commit cec6fe9cce4f7f49f941262d48d081e30f8ea444 Author: Giacinto Cifelli Date: Fri Jul 24 16:25:03 2020 +0200 @@ -1520,14 +6014,34 @@ at the time of this operation, and therefore the string was unchanged anyway. - (cherry picked from commit cec6fe9cce4f7f49f941262d48d081e30f8ea444) - plugins/cinterion/mm-modem-helpers-cinterion.c | 13 ++----------- plugins/cinterion/tests/test-modem-helpers-cinterion.c | 18 ------------------ 2 files changed, 2 insertions(+), 29 deletions(-) -commit ddcac7fda32ed6da7781966ab5ed08c473b21ffe +commit 4d58278d7ffd65375e93b0da85ca88c08cba96c2 +Author: Giacinto Cifelli +Date: Wed Jul 22 06:58:22 2020 +0200 + + changed default authentication algorithm to CHAP + + CHAP is almost universal nowadays, and so it is a better default + than PAP + + Not changed for uBlox, that prefers an error if not specified, + and for Huawei, which uses NONE with user/pwd and has 2 CHAP choices + + plugins/cinterion/mm-broadband-bearer-cinterion.c | 6 +++--- + plugins/huawei/mm-broadband-bearer-huawei.c | 12 ++++++------ + plugins/icera/mm-broadband-bearer-icera.c | 10 +++++----- + plugins/option/mm-broadband-bearer-hso.c | 10 +++++----- + plugins/sierra/mm-broadband-bearer-sierra.c | 10 +++++----- + plugins/ublox/mm-broadband-bearer-ublox.c | 4 ++-- + src/mm-bearer-qmi.c | 6 +++--- + src/mm-modem-helpers-mbim.c | 8 ++++---- + 8 files changed, 33 insertions(+), 33 deletions(-) + +commit c70b3557184fdf1472ff0cb36e9fd937cc7f9024 Author: Sven Schwermer Date: Fri Jul 3 15:16:26 2020 +0200 @@ -1541,13 +6055,12 @@ Signed-off-by: Sven Schwermer - (cherry picked from commit c70b3557184fdf1472ff0cb36e9fd937cc7f9024) src/mm-shared-qmi.c | 138 +++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 105 insertions(+), 33 deletions(-) -commit 83f2717ea4794ef92f5dc93d8a93d3d92602372e +commit 47a28114baa2504c16bf2bca2325cefe426aea95 Author: Justin Standring Date: Thu Jul 16 13:21:23 2020 +1200 @@ -1560,73 +6073,11 @@ ^ Signed-off-by: Justin Standring - (cherry picked from commit 47a28114baa2504c16bf2bca2325cefe426aea95) src/mm-broadband-modem-qmi.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -commit c4c840fca4fda4f24492c39e7145abeadd9e73ce -Author: Aleksander Morgado -Date: Wed Aug 19 14:55:41 2020 +0200 - - broadband-modem-qmi: avoid unused functions - - Only applicable when building with WITH_NEWEST_QMI_COMMANDS. - - mm-broadband-modem-qmi.c:4741:1: error: - โ€˜common_enable_disable_unsolicited_events_signal_strengthโ€™ - defined but not used [-Werror=unused-function] - 4741 | common_enable_disable_unsolicited_events_signal_strength - (GTask *task) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - mm-broadband-modem-qmi.c:4528:1: error: - โ€˜serving_system_indication_cbโ€™ defined but not used - [-Werror=unused-function] - 4528 | serving_system_indication_cb (QmiClientNas *client, - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ - mm-broadband-modem-qmi.c:3468:1: error: - โ€˜common_enable_disable_unsolicited_registration_events_serving_systemโ€™ - defined but not used [-Werror=unused-function] - 3468 | - common_enable_disable_unsolicited_registration_events_serving_system - (GTask *task) - | - ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - mm-broadband-modem-qmi.c:2812:1: error: - โ€˜get_serving_system_3gpp_readyโ€™ defined but not used - [-Werror=unused-function] - 2812 | get_serving_system_3gpp_ready (QmiClientNas *client, - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - mm-broadband-modem-qmi.c:1652:1: error: - โ€˜get_signal_strength_readyโ€™ defined but not used - [-Werror=unused-function] - 1652 | get_signal_strength_ready (QmiClientNas *client, - - (cherry picked from commit 0f60b225a21cc69291b7783c58e8f957ff426ee4) - - src/mm-broadband-modem-qmi.c | 23 ++++++++++++++++++----- - 1 file changed, 18 insertions(+), 5 deletions(-) - -commit 53a787a531215ccd46eb8f8709f87ecc02d8d60d -Author: Aleksander Morgado -Date: Wed Aug 19 14:48:12 2020 +0200 - - broadband-modem-qmi: fix type comparison - - Only applicable when building with WITH_NEWEST_QMI_COMMANDS. - - mm-broadband-modem-qmi.c: In function โ€˜process_common_infoโ€™: - mm-broadband-modem-qmi.c:2924:20: error: comparison is always - false due to limited range of data type [-Werror=type-limits] - 2924 | if (mnc[2] == 0xFF) { - | ^~ - - (cherry picked from commit 0a5ab352e137e9c18a0c59be0533fde0bd307f03) - - src/mm-broadband-modem-qmi.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 1fca2c2b492a29488ae117c9f9f2b3be83d90b2e +commit 6ec12add1ba6625a8470ae3cf7b30cefcf28d503 Author: Justin Standring Date: Thu Jul 16 12:55:31 2020 +1200 @@ -1665,12 +6116,11 @@ ^~~~ Signed-off-by: Justin Standring - (cherry picked from commit 6ec12add1ba6625a8470ae3cf7b30cefcf28d503) - src/mm-broadband-modem-qmi.c | 26 +++++++++++++++++--------- - 1 file changed, 17 insertions(+), 9 deletions(-) + src/mm-broadband-modem-qmi.c | 30 +++++++++++++++++++----------- + 1 file changed, 19 insertions(+), 11 deletions(-) -commit e519cac608c2e28a60dc9fc8d54d49c8def36b8d +commit e98bc7cc0803595db8eb498817fb0d5f99d25813 Author: Aleksander Morgado Date: Wed Jul 8 11:40:41 2020 +0200 @@ -1679,12 +6129,10 @@ Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/240 - (cherry picked from commit e98bc7cc0803595db8eb498817fb0d5f99d25813) - src/mm-broadband-modem-qmi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 864b8cdae76c7be976a3b61599318e44cb7ca5aa +commit a131c6953a0a24a6ed8c365cb5e398fa5e52afcf Author: Aleksander Morgado Date: Mon Jul 6 16:53:08 2020 +0200 @@ -1698,12 +6146,10 @@ [modem6/ttyACM1/at] --> 'AT^SGAUTH=8,1,"t-mobile","tm"' [modem6/ttyACM1/at] <-- 'OK' - (cherry picked from commit a131c6953a0a24a6ed8c365cb5e398fa5e52afcf) - plugins/cinterion/mm-broadband-bearer-cinterion.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) -commit 44175db16c4ad83a35a0661a3758c90b3cf2ce8c +commit 0a89a9ae4ee62ba36b616fc444a866d61c203696 Author: Aleksander Morgado Date: Mon Jul 6 16:23:57 2020 +0200 @@ -1714,12 +6160,10 @@ We should use an empty string instead. - (cherry picked from commit 0a89a9ae4ee62ba36b616fc444a866d61c203696) - plugins/cinterion/mm-broadband-bearer-cinterion.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) -commit d544b93d484b315a7e04bd93343d30963ca04a92 +commit e933fe14130b20785b6ddd2993a8fc982976c7af Author: Aleksander Morgado Date: Thu Jun 25 18:43:57 2020 +0200 @@ -1737,12 +6181,20 @@ ModemManager[26829]: [1593098091.167987] [modem1] port ttyACM0 timed out 10 consecutive times, marking modem as invalid - (cherry picked from commit e933fe14130b20785b6ddd2993a8fc982976c7af) - plugins/cinterion/mm-broadband-bearer-cinterion.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit ca66500716d798a91a617ca6c4c502e2f75c25d7 +commit bdbd0fc049f7e818b8ac29285bcbf187d9a0b8ed +Author: Aleksander Morgado +Date: Sat Jul 4 06:08:40 2020 +0200 + + iface-modem-signal: port skeleton update logic to use g_autoptr + + src/mm-iface-modem-signal.c | 112 + +++++++++++++++++--------------------------- + 1 file changed, 44 insertions(+), 68 deletions(-) + +commit 3d138f9f80823d2caafbc5117329b43472fe7d45 Author: Aleksander Morgado Date: Sat Jul 4 06:02:37 2020 +0200 @@ -1751,45 +6203,66 @@ It won't do anything because clear_values() tries to get the skeleton from the modem object, and the skeleton hasn't been set at that point. - (cherry picked from commit 3d138f9f80823d2caafbc5117329b43472fe7d45) - src/mm-iface-modem-signal.c | 1 - 1 file changed, 1 deletion(-) -commit 4b4350e10197695742778949d8069b7d7f890838 +commit c79dcf794041724b5504a9576b07c1e53ca0affb Author: Aleksander Morgado Date: Sat Jul 4 05:47:25 2020 +0200 cinterion,signal: ^SMONI=? support check may be cached - (cherry picked from commit c79dcf794041724b5504a9576b07c1e53ca0affb) - plugins/cinterion/mm-broadband-modem-cinterion.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit ac79b07699ae4a2ece6771bd222e266839887217 +commit ee262a473dcfd5702f66c532d42285c2763bad11 Author: Aleksander Morgado Date: Sat Jul 4 05:46:56 2020 +0200 cinterion,signal: report error from parent signal support check - (cherry picked from commit ee262a473dcfd5702f66c532d42285c2763bad11) - plugins/cinterion/mm-broadband-modem-cinterion.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) -commit 20c63bc0a354b32255526d25d8bc51456b99c762 +commit 2cb8e5ef5d30330442af152fa7d65ec7cc612e89 Author: Aleksander Morgado Date: Sat Jul 4 05:45:28 2020 +0200 cinterion,signal: minor coding style fixes - (cherry picked from commit 2cb8e5ef5d30330442af152fa7d65ec7cc612e89) - plugins/cinterion/mm-broadband-modem-cinterion.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) -commit 71573a4ef93b5d3e828c16fba6b755411f5a1939 +commit 900f318d535f5775a544ae8b1551efb931460392 +Author: Aleksander Morgado +Date: Sat Jul 4 06:32:04 2020 +0200 + + docs,libmm-glib: add missing nr5g methods in signal interface + + docs/reference/libmm-glib/libmm-glib-sections.txt | 3 +++ + 1 file changed, 3 insertions(+) + +commit 6f6c09007667828d70708cedc04bbb9b680504ec +Author: Aleksander Morgado +Date: Sat Jul 4 05:55:17 2020 +0200 + + broadband-modem: remove misleading comment + + 5GNR is not 3GPP2 + + src/mm-broadband-modem.c | 1 - + 1 file changed, 1 deletion(-) + +commit 24670498bc1431388d670f07284e3a1c339b08fc +Author: Aleksander Morgado +Date: Sat Jul 4 05:53:43 2020 +0200 + + broadband-modem-qmi: minor alignment updates + + src/mm-broadband-modem-qmi.c | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +commit 10ee7f4cd9d8af46822959fc84055bac45f5c56b Author: Aleksander Morgado Date: Sat Jul 4 05:37:59 2020 +0200 @@ -1798,12 +6271,58 @@ E.g. if 'gsm' pointer is given, make sure it's always set (either to a MMSignal or to NULL). - (cherry picked from commit 10ee7f4cd9d8af46822959fc84055bac45f5c56b) + src/mm-broadband-modem-mbim.c | 27 ++++++++------------------- + 1 file changed, 8 insertions(+), 19 deletions(-) - src/mm-broadband-modem-mbim.c | 20 ++++++-------------- - 1 file changed, 6 insertions(+), 14 deletions(-) +commit 0dd1f122221aae8d4c5b16802f5f47601ff99e10 +Author: Aleksander Morgado +Date: Sat Jul 4 05:35:00 2020 +0200 + + mbim,signal: provide 5G signal info if loaded by parent implementation + + src/mm-broadband-modem-mbim.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit 88923ffe3996fdef83dc13a7a4762855af77706d +Author: Walter Hagstrom +Date: Tue Jun 23 11:14:43 2020 -0400 + + iface-modem-signal: added 5G signal information + + Extended the ModemManager Signal interface to include 5G signal + information for RSRP, RSRQ and SINR via libqmi. Also extended mmci + to print 5G signal info. + + cli/mmcli-modem-signal.c | 16 ++++++ + cli/mmcli-output.c | 4 ++ + cli/mmcli-output.h | 4 ++ + docs/reference/libmm-glib/libmm-glib-sections.txt | 2 + + .../org.freedesktop.ModemManager1.Modem.Signal.xml | 38 +++++++++++++ + libmm-glib/mm-modem-signal.c | 62 + +++++++++++++++++++++- + libmm-glib/mm-modem-signal.h | 3 ++ + plugins/cinterion/mm-broadband-modem-cinterion.c | 5 +- + plugins/huawei/mm-broadband-modem-huawei.c | 3 ++ + plugins/xmm/mm-shared-xmm.c | 3 ++ + plugins/xmm/mm-shared-xmm.h | 1 + + src/mm-broadband-modem-mbim.c | 6 ++- + src/mm-broadband-modem-qmi.c | 54 + +++++++++++++------ + src/mm-broadband-modem.c | 4 ++ + src/mm-iface-modem-signal.c | 12 +++++ + src/mm-iface-modem-signal.h | 1 + + 16 files changed, 198 insertions(+), 20 deletions(-) -commit 1b78d254fa15150cd14057e5ade48fe5b5328243 +commit 711b17278edecbc474418ecf95e7582f515711cb +Author: Aleksander Morgado +Date: Sat Jul 4 05:29:36 2020 +0200 + + build: require 5G signal info support from libqmi 1.27.1 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6df9cc084489a3aa8ab06b1e87f597b96dc79ffa Author: Adrien Plazas Date: Fri Jul 3 08:26:57 2020 +0200 @@ -1811,12 +6330,10 @@ This satisfies -Werror=maybe-uninitialized. - (cherry picked from commit 6df9cc084489a3aa8ab06b1e87f597b96dc79ffa) - src/mm-plugin.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 5f8bf97021ec23f7a61a6d690cd8a7f819c54d70 +commit fff47478cc5887176830a5debe2c4204434c222f Author: Daniele Palmas Date: Thu Jul 2 13:09:19 2020 +0200 @@ -1826,12 +6343,56 @@ in order to differentiate between ME910C1 (based on MDM9206) and MEx10G1 (based on MDM9205). - (cherry picked from commit fff47478cc5887176830a5debe2c4204434c222f) - plugins/telit/77-mm-telit-port-types.rules | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) -commit f5bd1807197696266fe492669a0d63cdef999096 +commit 23f8b580c3f394c10404ea346202cbe8997026db +Author: Aleksander Morgado +Date: Tue Jun 30 13:11:17 2020 +0200 + + quectel,shared: implement custom time support check + + We require CTZU=3 during the time support check, instead of CTZU=1, so + that the Quectel modem reports localtime instead of UTC time in +CCLK. + + Fixes + https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/233 + + plugins/quectel/mm-broadband-modem-qmi-quectel.c | 15 ++++++++-- + plugins/quectel/mm-broadband-modem-quectel.c | 14 ++++++++-- + plugins/quectel/mm-shared-quectel.c | 35 + +++++++++++++++++++++++- + plugins/quectel/mm-shared-quectel.h | 10 ++++++- + 4 files changed, 68 insertions(+), 6 deletions(-) + +commit ffca45d9cc416879881b75fb93880aee8c7563d2 +Author: Aleksander Morgado +Date: Mon Jun 29 10:46:47 2020 +0200 + + quectel,shared: add GPS trace handler + + plugins/quectel/mm-shared-quectel.c | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +commit 70b7218b7b303ba01f0be20ee14f1e4186884f79 +Author: Aleksander Morgado +Date: Mon Jun 29 10:23:37 2020 +0200 + + huawei: only flag GPS source as enabled if it was successful + + plugins/huawei/mm-broadband-modem-huawei.c | 22 ++++++++++++++-------- + 1 file changed, 14 insertions(+), 8 deletions(-) + +commit af8afcc6c9fd6eb6b88d43c88dee013d4a02c0cf +Author: Aleksander Morgado +Date: Mon Jun 29 10:13:44 2020 +0200 + + quectel,shared: only flag GPS source as enabled if it was successful + + plugins/quectel/mm-shared-quectel.c | 16 ++++++++++++---- + 1 file changed, 12 insertions(+), 4 deletions(-) + +commit 619b054e5c874844a73594a724b4e5ce5ec18b6d Author: Aleksander Morgado Date: Mon Jun 29 10:06:18 2020 +0200 @@ -1866,16 +6427,253 @@ (gdb) p traces $1 = (GStrv) 0x0 - (cherry picked from commit 619b054e5c874844a73594a724b4e5ce5ec18b6d) - libmm-glib/mm-location-gps-nmea.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) -commit 19416aa725131865c6af8ce76f35e0116f7d0de8 +commit 60211b51b112db23c07dfd62dd6336a964a287e0 +Author: Aleksander Morgado +Date: Mon Jun 29 09:57:28 2020 +0200 + + quectel,shared: use QGPS=? test to check capabilities + + plugins/quectel/mm-shared-quectel.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 58dbb68fa0c0a30d33d93969016f39880b142920 +Author: Aleksander Morgado +Date: Sun Jun 28 15:05:14 2020 +0200 + + quectel,qmi: add QGPS based fallback support + + plugins/quectel/mm-broadband-modem-qmi-quectel.c | 28 + ++++++++++++++++++++++-- + 1 file changed, 26 insertions(+), 2 deletions(-) + +commit 78d19c10ba50bbe6525e7f58d28e96e3e4614d86 +Author: Aleksander Morgado +Date: Sun Jun 28 14:57:49 2020 +0200 + + quectel,shared: port GPS enabling to use AT sequence + + plugins/quectel/mm-shared-quectel.c | 101 + ++++++++++++++---------------------- + 1 file changed, 38 insertions(+), 63 deletions(-) + +commit 41ba7d667ab7b6e7161a96b559823c832a3b8ba5 +Author: Aleksander Morgado +Date: Sun Jun 28 14:41:47 2020 +0200 + + huawei: simplify GPS stop logic + + The NMEA data port is closed right before stopping the engine. + + plugins/huawei/mm-broadband-modem-huawei.c | 69 + +++++++++++++----------------- + 1 file changed, 29 insertions(+), 40 deletions(-) + +commit aa4851ed03932fed5e4401e6d3e8c4fa0a20f589 +Author: Aleksander Morgado +Date: Sun Jun 28 14:22:24 2020 +0200 + + huawei: port GPS enabling to use AT sequence + + plugins/huawei/mm-broadband-modem-huawei.c | 143 + +++++++++++------------------ + 1 file changed, 53 insertions(+), 90 deletions(-) + +commit bbca65d682d6de03ba199a5a0a5c388e90e2764c +Author: Aleksander Morgado +Date: Sun Jun 28 11:43:51 2020 +0200 + + quectel,shared: skip QGPS? check after enabling/disabling failures + + If any enabling/disabling command fails, we consider the operation + failed, regardless of the QGPS status. This is because e.g. enabling + involves more operations than just QGPS=1, and so we should treat a + failure in the command sequence as a failure in the whole operation. + + plugins/quectel/mm-shared-quectel.c | 290 + ++++++++++++------------------------ + 1 file changed, 96 insertions(+), 194 deletions(-) + +commit bbfc10d7c5246b120e71143f59e1ea66e052a018 +Author: Aleksander Morgado +Date: Sun Jun 28 11:38:48 2020 +0200 + + huawei: minor refactor in GPS enabling/disabling logic + + plugins/huawei/mm-broadband-modem-huawei.c | 131 + ++++++++++++++--------------- + 1 file changed, 65 insertions(+), 66 deletions(-) + +commit 538ed3f24e9ec5d64abc1543476e5ee34b504455 +Author: Aleksander Morgado +Date: Sun Jun 28 11:06:06 2020 +0200 + + quectel,shared: don't report GPS capabilities if no GPS port found + + The QGPS based implementation needs the existence of a port flagged as + GPS data; if there is no such port, we cannot provide GPS support. + + plugins/quectel/mm-shared-quectel.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 77f6637750362a8c319e2debc6f781ceb217675a +Author: Aleksander Morgado +Date: Sun Jun 28 11:04:20 2020 +0200 + + quectel,shared: fix reporting supported location capabilities + + The method that reports what location capabilities are supported must + report the capabilities provided by the parent interface plus the + additional capabilities supported by the shared implementation. + + Also, simplify the logic a bit reducing the amount of implemented + methods. + + plugins/quectel/mm-shared-quectel.c | 78 + ++++++++++++++----------------------- + 1 file changed, 29 insertions(+), 49 deletions(-) + +commit 0f9d69fd355a05b51b8367fa75dbd49440a9bd7e +Author: Aleksander Morgado +Date: Sun Jun 28 10:55:15 2020 +0200 + + quectel,shared: private context at beginning of source file + + plugins/quectel/mm-shared-quectel.c | 83 + +++++++++++++++++++------------------ + 1 file changed, 43 insertions(+), 40 deletions(-) + +commit 234ba4544b324765a3ba9f7d468715378c585106 +Author: Aleksander Morgado +Date: Sun Jun 28 10:53:33 2020 +0200 + + quectel: coding style fixes in the QGPS logic + + plugins/quectel/mm-broadband-modem-quectel.c | 38 ++--- + plugins/quectel/mm-shared-quectel.c | 203 + +++++++++++++++------------ + plugins/quectel/mm-shared-quectel.h | 50 +++---- + 3 files changed, 149 insertions(+), 142 deletions(-) + +commit 5a9d321346df5e964780def158072df794c604dd +Author: Aleksander Morgado +Date: Sun Jun 28 10:35:57 2020 +0200 + + quectel,shared: fix parent location disabling + + The GTask must be passed as user_data. + + plugins/quectel/mm-shared-quectel.c | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +commit df393df1479ab79f028b17eb3df0ea0eb96b9140 +Author: ArenM +Date: Fri Jun 5 15:25:54 2020 -0400 + + quectel: implement GPS support with +QGPS + + Quectel modems allow provide location information via AT commands. + Add this as a location source. + + plugins/quectel/mm-broadband-modem-quectel.c | 29 +- + plugins/quectel/mm-shared-quectel.c | 504 + +++++++++++++++++++++++++++ + plugins/quectel/mm-shared-quectel.h | 36 ++ + 3 files changed, 567 insertions(+), 2 deletions(-) + +commit 4b37b7d3cfd8c8e98af25eed334b1880b6b6c597 +Author: Aleksander Morgado +Date: Sun Jun 28 14:05:58 2020 +0200 + + base-modem,at: response processors return a more specific enum + + Instead of using the FALSE return of the method to indicate either a + fatal error (if result_error was set) or the continuation request (if + result_error wasn't set), provide a enum that has explicit states for + all three possible values (failure, success or continue). + + plugins/altair/mm-broadband-modem-altair-lte.c | 27 +--- + plugins/huawei/mm-broadband-modem-huawei.c | 22 +-- + plugins/icera/mm-broadband-modem-icera.c | 29 ++-- + plugins/novatel/mm-broadband-modem-novatel-lte.c | 61 ++++--- + plugins/sierra/mm-broadband-modem-sierra.c | 28 ++-- + plugins/telit/mm-broadband-modem-telit.c | 81 ++++++---- + src/mm-base-modem-at.c | 189 + +++++++++++++--------- + src/mm-base-modem-at.h | 112 +++++++------ + src/mm-broadband-modem.c | 192 + +++++++++++------------ + 9 files changed, 402 insertions(+), 339 deletions(-) + +commit c4d82aaf1e7cf10475204102533ac7784f83f0d3 +Author: Aleksander Morgado +Date: Sun Jun 28 12:06:51 2020 +0200 + + base-modem,at: improve documentation on response processor methods + + src/mm-base-modem-at.c | 68 ++++++++++++++++++----------------- + src/mm-base-modem-at.h | 98 + +++++++++++++++++++++++++++++++------------------- + 2 files changed, 98 insertions(+), 68 deletions(-) + +commit 7e3863897e73227a7de54db967fd95b40a8833d1 +Author: Aleksander Morgado +Date: Sun Jun 7 15:16:49 2020 +0200 + + broadband-modem: run implicit disabling if enabling fails + + The disabling sequence is updated so that the steps to disable the + interfaces never fail. This is done so that the modem is not left + in an "inconsistent" enabled state, if e.g. the modem is enabled and + one of the disabling steps for the interfaces ends up failing. In this + case, it is preferred to say that the modem is disabled, than having + it wrongly enabled. + + The enabling sequence is updated so that if any of the steps to enable + the interfaces fail, we end up running an implicit disabling operation + to disable all the interfaces. This is to attempt to cleanup whatever + we had enabled during the enabling operation, including e.g. the open + ports context. + + src/mm-broadband-modem.c | 270 + ++++++++++++++++++++++++++++++----------------- + 1 file changed, 175 insertions(+), 95 deletions(-) + +commit 408e9f327e09cda73ab87c92aab34176186d2c3d +Author: Aleksander Morgado +Date: Wed Jun 24 09:31:30 2020 +0200 + + broadband-modem-qmi: fix assertion when disabling unsolicited events + + Fixes + https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/230 + + src/mm-broadband-modem-qmi.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit c6d213d6523a70aa8504bda4dbd1796a0b1cd4c7 +Author: Aleksander Morgado +Date: Thu Jun 11 14:41:44 2020 +0200 + + broadband-modem-qmi,bearer-qmi: avoid depending on the client version + + The QMI client version is an information provided by the QMI protocol + only when QMUX or MBIM backends are used, it won't be available when + e.g. QRTR is used. The logic in ModemManager should not rely on this + information. + + src/mm-bearer-qmi.c | 39 ++-- + src/mm-broadband-modem-qmi.c | 542 + +++++++++++++++++-------------------------- + 2 files changed, 230 insertions(+), 351 deletions(-) + +commit 62956b5c7a1bcfa143e6f5915562c55c4923eec4 Author: Aleksander Morgado -Date: Tue Jun 23 14:22:04 2020 +0200 +Date: Tue Jun 23 14:22:39 2020 +0200 - build: post-release version bump to 1.14.1 + build: post-release version bump to 1.15.0 configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) @@ -37144,7 +41942,7 @@ 31 files changed, 69 insertions(+), 60 deletions(-) commit 55f3ab80835114342618083664c4fa585455b9e0 -Merge: 830b6ebca ba097f1a4 +Merge: 830b6ebc ba097f1a Author: Dan Williams Date: Fri May 27 12:39:56 2016 -0500 @@ -43232,7 +48030,7 @@ 1 file changed, 6 insertions(+), 4 deletions(-) commit 6e490944d07061ca15837963552d023807958feb -Merge: ff4e45791 02f9b926c +Merge: ff4e4579 02f9b926 Author: Dan Williams Date: Fri Jun 13 14:57:08 2014 -0500 @@ -87937,7 +92735,7 @@ 1 file changed, 4 insertions(+), 4 deletions(-) commit 7762d401e8201efc05d643b9da32f3e60a42c470 -Merge: 881f928c4 7e69d2cf3 +Merge: 881f928c 7e69d2cf Author: Aleksander Morgado Date: Thu Jun 30 19:48:23 2011 +0200 @@ -89280,7 +94078,7 @@ 1 file changed, 15 insertions(+), 4 deletions(-) commit 5dadfa4c214be79e704eb61c135893f93a705d3a -Merge: 487972c1a 765da63ad +Merge: 487972c1 765da63a Author: Dan Williams Date: Thu Apr 14 14:20:43 2011 -0500 @@ -90047,7 +94845,7 @@ 1 file changed, 2 insertions(+), 2 deletions(-) commit 2b2ca316a1ef9c9b30e68b44446abfe76cb1bbce -Merge: 12f1b351e f047ca66a +Merge: 12f1b351 f047ca66 Author: Dan Williams Date: Mon Jan 24 13:56:40 2011 -0600 @@ -92081,7 +96879,7 @@ 3 files changed, 108 insertions(+) commit 6e79d153efc30fb2030536f7f795c19ad4a0661a -Merge: 72a1a6caf 5fc9f259e +Merge: 72a1a6ca 5fc9f259 Author: Dan Williams Date: Thu Jun 24 11:09:33 2010 -0700 @@ -94235,7 +99033,7 @@ 1 file changed, 1 insertion(+), 1 deletion(-) commit 936533cfcc34b1bba797688049316bb8994443bd -Merge: 9d9150133 3e760488b +Merge: 9d915013 3e760488 Author: Dan Williams Date: Fri Mar 12 12:40:00 2010 -0800 @@ -94252,7 +99050,7 @@ 2 files changed, 2 insertions(+), 2 deletions(-) commit 9d91501330514d8bbd83c8f729ec5231e862e226 -Merge: 4d1e00c49 7aa6d03d9 +Merge: 4d1e00c4 7aa6d03d Author: Dan Williams Date: Fri Mar 12 12:21:29 2010 -0800 @@ -94323,7 +99121,7 @@ 3 files changed, 6 insertions(+), 7 deletions(-) commit 3ec7e89f112cb65a584de84b76e207d7a804bd6f -Merge: 479937cbb 749f9c0eb +Merge: 479937cb 749f9c0e Author: Dan Williams Date: Thu Mar 11 13:43:06 2010 -0800 @@ -94452,7 +99250,7 @@ 1 file changed, 10 insertions(+), 9 deletions(-) commit 479937cbbba560c77ec37ebf6468fe0e568986bd -Merge: 6a32d374c e3c87e4e1 +Merge: 6a32d374 e3c87e4e Author: Dan Williams Date: Wed Mar 10 15:04:49 2010 -0800 @@ -94470,7 +99268,7 @@ 1 file changed, 8 insertions(+), 7 deletions(-) commit 1979512d8dfb6428353e6bf358f908973a318095 -Merge: 8dde6bb8d b7858ba23 +Merge: 8dde6bb8 b7858ba2 Author: Dan Williams Date: Wed Mar 10 14:50:41 2010 -0800 @@ -94743,7 +99541,7 @@ 1 file changed, 2 insertions(+), 1 deletion(-) commit f3721a5674ef7899d9a6ef0f4c5b356720bb9833 -Merge: f6c514897 9e231c3d4 +Merge: f6c51489 9e231c3d Author: Dan Williams Date: Mon Mar 8 20:01:22 2010 -0800 @@ -95290,7 +100088,7 @@ 5 files changed, 24 insertions(+), 14 deletions(-) commit f6c514897e40e768b180963f2782ed60527ffaa6 -Merge: 7a0373afe 9d7cb0ddc +Merge: 7a0373af 9d7cb0dd Author: Dan Williams Date: Mon Mar 1 09:07:05 2010 -0800 @@ -95673,7 +100471,7 @@ 2 files changed, 12 insertions(+), 4 deletions(-) commit 2cdefeb6dafa9d8405ddd1247967ca6e3267b1a7 -Merge: a8c7bba19 b9958e6ec +Merge: a8c7bba1 b9958e6e Author: Dan Williams Date: Sat Feb 20 14:58:04 2010 -0800 @@ -95740,7 +100538,7 @@ 1 file changed, 9 insertions(+), 3 deletions(-) commit 9d8e892ffe602a123697a5f65393b5752129de09 -Merge: c916ea7b4 9185ce987 +Merge: c916ea7b 9185ce98 Author: Dan Williams Date: Sat Feb 20 12:49:22 2010 -0800 @@ -96112,7 +100910,7 @@ 4 files changed, 16 deletions(-) commit ed885b7595294115b5cde8755c754515294f27cc -Merge: a919c8358 e98401440 +Merge: a919c835 e9840144 Author: Dan Williams Date: Tue Jan 19 15:07:03 2010 -0800 @@ -96248,7 +101046,7 @@ 1 file changed, 13 insertions(+), 9 deletions(-) commit 28eca600f7f1a0387a99c51d35179d81dc3fec59 -Merge: 50ad39b28 b1992f903 +Merge: 50ad39b2 b1992f90 Author: Dan Williams Date: Tue Jan 19 00:21:10 2010 -0800 @@ -96715,7 +101513,7 @@ 1 file changed, 1 insertion(+), 1 deletion(-) commit dd057d28e4ab3812eebd41a7df1c2f80d90d8600 -Merge: f715e0d49 a9e062442 +Merge: f715e0d4 a9e06244 Author: Dan Williams Date: Mon Dec 7 22:04:28 2009 -0800 @@ -96948,7 +101746,7 @@ 1 file changed, 1 insertion(+), 1 deletion(-) commit 881a725ea47e059023a268404368346d232dd15a -Merge: 909b8b7c8 b46ac89ff +Merge: 909b8b7c b46ac89f Author: Dan Williams Date: Tue Dec 1 11:22:00 2009 -0800 @@ -96990,7 +101788,7 @@ 1 file changed, 24 insertions(+) commit 909b8b7c8dbe2de97d9550004641c70411d92c56 -Merge: c463b5a40 0f595adb7 +Merge: c463b5a4 0f595adb Author: Dan Williams Date: Mon Nov 30 15:44:20 2009 -0800 @@ -97250,7 +102048,7 @@ 1 file changed, 1 insertion(+), 1 deletion(-) commit c463b5a4005b9e55d0faeb887debe327118ef230 -Merge: 3be4a1518 9e92bceb0 +Merge: 3be4a151 9e92bceb Author: Dan Williams Date: Tue Nov 24 00:20:52 2009 -0800 @@ -97270,7 +102068,7 @@ 1 file changed, 20 insertions(+), 32 deletions(-) commit 3be4a15189aef361187b86df64f62ca70284dee3 -Merge: d8ff5f74e e5b5c8339 +Merge: d8ff5f74 e5b5c833 Author: Dan Williams Date: Mon Nov 23 23:48:26 2009 -0800 @@ -97333,7 +102131,7 @@ 1 file changed, 1 insertion(+), 1 deletion(-) commit 3c6e4056e7cded28e612a76d9321f54fb1b51ce2 -Merge: 9bbc6ab53 74f679acd +Merge: 9bbc6ab5 74f679ac Author: Dan Williams Date: Fri Nov 6 15:11:01 2009 -0800 @@ -97861,7 +102659,7 @@ 3 files changed, 77 insertions(+), 13 deletions(-) commit 912b98723b2965b9aaf1f0328781a2730d7cc178 -Merge: 3b19a8572 aa78b5f5e +Merge: 3b19a857 aa78b5f5 Author: Dan Williams Date: Mon Oct 5 09:52:01 2009 -0700 @@ -98447,7 +103245,7 @@ 2 files changed, 6 insertions(+), 1 deletion(-) commit 5298be26ddf580681a4a506cf0379996d7eb9d4d -Merge: 5a563d56d 8e3da6359 +Merge: 5a563d56 8e3da635 Author: Dan Williams Date: Mon Jun 29 22:54:32 2009 -0400 @@ -98567,7 +103365,7 @@ 2 files changed, 25 insertions(+), 32 deletions(-) commit c106368ce7c06e0ae5b64cc6146ad05c3b9fa819 -Merge: ff58936f1 c397247c0 +Merge: ff58936f c397247c Author: Dan Williams Date: Mon Jun 29 13:14:11 2009 -0400 @@ -98656,7 +103454,7 @@ 1 file changed, 9 insertions(+), 11 deletions(-) commit 504b4991cd3aecd358d92a9c39233e6ca09036fa -Merge: 6077763d9 ef0a604dc +Merge: 6077763d ef0a604d Author: Dan Williams Date: Mon Jun 29 07:29:57 2009 -0400 @@ -99152,7 +103950,7 @@ 2 files changed, 8 insertions(+), 7 deletions(-) commit 92041d5f750ab440d278c95c1f65483aa8ebf192 -Merge: 2a3acc7a3 58a48405c +Merge: 2a3acc7a 58a48405 Author: Dan Williams Date: Mon May 11 06:43:43 2009 -0400 @@ -99747,7 +104545,7 @@ 12 files changed, 199 insertions(+), 182 deletions(-) commit a504fb408aa2ba3bb495a08d948ae97bdcb1cdd6 -Merge: 793044b57 1673c6c99 +Merge: 793044b5 1673c6c9 Author: Tambet Ingo Date: Fri Dec 5 15:57:55 2008 +0200 diff -Nru modemmanager-1.14.10/Makefile.am modemmanager-1.16.6/Makefile.am --- modemmanager-1.14.10/Makefile.am 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/Makefile.am 2021-06-06 21:40:59.000000000 +0800 @@ -13,6 +13,7 @@ vapi \ introspection \ test \ + tools \ examples \ docs \ $(NULL) diff -Nru modemmanager-1.14.10/Makefile.in modemmanager-1.16.6/Makefile.in --- modemmanager-1.14.10/Makefile.in 2021-01-16 21:19:54.000000000 +0800 +++ modemmanager-1.16.6/Makefile.in 2021-06-06 21:43:42.000000000 +0800 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 Free Software Foundation, Inc. @@ -108,7 +108,8 @@ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = +CONFIG_CLEAN_FILES = \ + tools/tests/services/org.freedesktop.ModemManager1.service CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) @@ -168,6 +169,7 @@ CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(top_srcdir)/tools/tests/services/org.freedesktop.ModemManager1.service.in \ ABOUT-NLS AUTHORS COPYING COPYING.LIB ChangeLog INSTALL NEWS \ README TODO compile config.guess config.rpath config.sub \ install-sh ltmain.sh missing @@ -209,6 +211,8 @@ GZIP_ENV = --best DIST_ARCHIVES = $(distdir).tar.xz DIST_TARGETS = dist-xz +# Exists only to be overridden by the user if desired. +AM_DISTCHECK_DVI_TARGET = dvi distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' @@ -278,6 +282,8 @@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBELOGIND_CFLAGS = @LIBELOGIND_CFLAGS@ +LIBELOGIND_LIBS = @LIBELOGIND_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBMM_GLIB_CFLAGS = @LIBMM_GLIB_CFLAGS@ @@ -402,6 +408,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -424,6 +431,7 @@ vapi \ introspection \ test \ + tools \ examples \ docs \ $(NULL) @@ -493,6 +501,8 @@ distclean-hdr: -rm -f config.h stamp-h1 +tools/tests/services/org.freedesktop.ModemManager1.service: $(top_builddir)/config.status $(top_srcdir)/tools/tests/services/org.freedesktop.ModemManager1.service.in + cd $(top_builddir) && $(SHELL) ./config.status $@ mostlyclean-libtool: -rm -f *.lo @@ -754,7 +764,7 @@ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ diff -Nru modemmanager-1.14.10/NEWS modemmanager-1.16.6/NEWS --- modemmanager-1.14.10/NEWS 2021-01-16 21:10:47.000000000 +0800 +++ modemmanager-1.16.6/NEWS 2021-06-06 21:41:15.000000000 +0800 @@ -1,127 +1,230 @@ -ModemManager 1.14.10 +ModemManager 1.16.6 ------------------------------------------- -This is a new bugfix release of ModemManager. - * Modem interface: - ** Plug MmGdbusModem leak when bearers are updated. - ** Don't consider charset setup failure as fatal. - - * Messaging interface: - ** Fix 7-bit ASCII decoding in CDMA SMS messages. + * Build: + ** Require libqmi >= 1.28.6 (for the optional QMI support). + ** Fix error with GCC 11 and -Wincompatible-pointer-types. + ** Fix warning with GCC 11 and -Wmaybe-uninitialized. * QMI: - ** Fix reporting of signal strengh indications. + ** Increased device open timeout to 45s. + ** Added support to handle transfer-route messages. - * MBIM: - ** Plug memleak when processing USSD in GSM7. + * Base manager: + ** Added support for Qualcomm based PCI devices in the new WWAN subsystem in + kernel 5.13. + ** Fix segfault on rare conditions when ports reported don't have a proper + subsystem or name. + ** Fix segfault when trying to create device id after device is already gone. - * mmcli: - ** Don't assume that mm_object_peek|get_modem() return always non-NULL. - - * Plugins: - ** cinterion: add PLS83 port type hints. - ** cinterion: add QCDM and GPS port type hints for PLS26. - ** cinterion: add AT primary/secondary port type hints for PLS8. - ** telit: plug GPS data port leak. - ** zte: add after SIM unlock delay. + * plugins: + ** foxconn: added support for the T99W175 module. + ** foxconn: fix segfault when attempting to use parent location support. + ** quectel: ignore QLWURC URCs. * Several other minor improvements and fixes. - -ModemManager 1.14.8 +ModemManager 1.16.4 ------------------------------------------- -This is a new bugfix release of ModemManager. - * Build: - ** Fixed distcheck with new gtk-doc releases. - ** ModemManager-names.h was being included in the dist tarball, but then - removed on the 'clean' target. Fix that, by only removing it on the - 'maintainer-clean' target. Therefore, 'xsltproc' is now only needed in - git builds, not needed when building from a dist tarball. + * Fix build when using libgudev < 232, which is when autoptr support was + introduced in the GUdev* types. We'll keep the 1.16.x branch depending on + libgudev 147, and only bump the requirement in git master. + + * This version comes with an overall rework of the charset encoding handling + inside the ModemManager daemon, which was already available in git master + for some time and has been proved to be very useful. + ** The charset conversion is now strict, except for a few cases where we + would try to do our best (e.g. operator name normalization). + ** The charset methods are cleaned up, with clear distinction between the + ones that allow NUL-finished C strings and the ones that may have valid + embedded NUL bytes. + ** The //TRANSLIT extension is completely avoided, as not all implementations + out there have it (e.g. unavailable in musl libc), and we now use + g_convert_with_fallback() instead where appropriate. - * QMI: - ** Fix daemon crash when the device is removed during the initialization - sequence. + * Modem interface: + ** Fixed crash triggered when attempting to update lock info on an already + removed DBus skeleton. - * Several other minor improvements and fixes. + * Time interface: + ** Fixed invalid memory read when loading network timezone fails. + * Base bearer: + ** Ignored forced disconnections after some time unregistered when PPP is + being used, so that we don't end up hijacking the TTY while pppd is using + it. -ModemManager 1.14.6 -------------------------------------------- -This is a new bugfix release of ModemManager. + * Kernel device: + ** Fix segfault when processing event for non-existing port. * QMI: - ** Fix missing GError initialization. + ** Fixed allowed modes setup when using the "Acquisition Order Preference" + TLV in the "NAS System Selection Preference" messages. 3GPP+3GPP2 + multimode devices like the MC73xx series were affected. + + * libmm-glib: + ** Fixed comparison of 'allowed auth' and 'rm protocol' settings in bearer + properties. - * plugins: - ** xmm: fix missing GError initialization. - ** cinterion: fix missing GError initialization. - ** simtech: fix missing GError initialization. + * Plugins: + ** cinterion: allow '*' in Prov/Cfg response. + ** cinterion: fixed several FALSE returns without GError set. + ** quectel: ignore +QGPSURC URCs. + * Several other minor improvements and fixes. -ModemManager 1.14.4 +ModemManager 1.16.2 ------------------------------------------- -This is a new bugfix release of ModemManager. - * Location interface: - ** Allow cell ID only updates. + * build: fixed with GLib < 2.54. + * qmi: fixed network regitration cancellation when asserts disabled. + * libmm-glib: fix allow-roaming setting comparison in bearer properties. - * Messaging interface: - ** Fixed memory leak when SMS parts being processed but device goes away. - ** Fixed CDMA SMS UTF-8 translation. - ** Allow sending UTF-16 as if it were UCS-2. +ModemManager 1.16.0 +------------------------------------------- +This is a new stable release of ModemManager. - * QMI: - ** Increased port probing timeout to 25s. - ** Return error in facility locks loading if PIN status check fails. - ** Return FIXED_DIALING lock status when checking PIN2. +The following notes are directed to package maintainers: - * MBIM: - ** Don't fail IPv4 connection if IPv4v6 was requested. + * This version now requires: + ** libqmi >= 1.28.0 (for the optional QMI support) - * Plugins: - ** telit: new ID_MM_TELIT_PORT_DELAY tag to flag devices that require - extended AT probing. - ** telit: added FN980 and LM9x0 MBIM compositions rules. - ** telit: fixed LM9x0 udev rules. - ** cinterion: configure the PLAS9 to correctly send URCs. - ** simtech: add SIM7070/SIM7080/SIM7090 port type hints - - * i18n: - ** Updated Swedish and Slovak translations. - ** Updated package bugreport to use the gitlab issues URL. + * The 1.16.x branch will be the last one supporting the 'LEGACY' and 'PARANOID' + filter modes; standard distributions are advised to use the default 'STRICT' + mode if they aren't using it already (i.e. running the daemon without any + explicit '--filter-policy' option). + + * A new 'qcom-soc' plugin is implemented to be able to use ModemManager in + Qualcomm SoCs like the MSM8916 or MSM8974. This plugin uses a combination of + RPMSG based control ports plus BAM-DMUX based network ports. This plugin is + disabled by default, even when `--enable-all-plugins` is used, and if wanted + it must be explicitly enabled with `--enable-plugin-qcom-soc`. Systems + targeting this kind of SoCs, like postmarketos, should enable it. Standard + distributions may or may not include it, up to the targeted hardware in each + distribution. - * Several other minor improvements and fixes. + * Gentoo's 'libelogind' library may now be used to detect the systemd + suspend/resume support. - -ModemManager 1.14.2 -------------------------------------------- -This is a new bugfix release of ModemManager. +The API is backwards compatible with the previous releases, the only updates +are the following: * Modem interface: - ** Avoid connection status flapping if briefly unregistered. + ** Updated the 'Ports' property so that it exposes all ports that are + owned by the modem even if they are explicitly ignored and not used. + ** New 'SimSlots' property that exposes the available SIM slots in the modem, + including the SIM object paths in each of them if the cards are present. + ** New 'PrimarySimSlot' property indicating which of the slots in the + 'SimSlots' array is the one currently active. + ** New 'SetPrimarySimSlot' method to select which SIM slot in the 'SimSlots' + array should be considered active. When the switch happens, the modem will + be fully re-probed. + + * Signal interface: + ** New 'Nr5g' dictionary property including signal information for the 5GNR + access technology. + + * SIM interface: + ** New 'Active' boolean property, indicating whether the SIM object is the + currently active one. + ** New 'Eid' string property, indicating the EID of the card, if any. + + * New udev tags: + ** New 'ID_MM_PORT_TYPE_QMI' tag to explicitly flag a port as being QMI, when + there is no other way to guess the type of port; e.g. this tag is not + needed for ports exposed by the qmi_wwan driver. + ** New 'ID_MM_PORT_TYPE_MBIM' tag to explicitly flag a port as being MBIM, + when there is no other way to guess the type of port; e.g. this tag is not + needed for ports exposed by the cdc_mbim driver. + +The most important features and changes in this release are the following: + + * Implemented support for Multi SIM Single Standby support, for systems that + have multiple SIM slots and they can select which of them (only one) is + active at any given time. Currently implemented for QMI modems only. + + * If the modem enabling phase fails in a fatal way, an implicit disabling + sequence is now run, in order to avoid leaving the modem in an inconsistent + state. + + * If the connection attempt includes user/password information but no explicit + authentication type, CHAP will now be used by default instead of PAP. + + * Full USB device removal events reported via udev are no longer used. The + device removal logic relies exclusively on independent port removal events, + as that logic is supported for all subsystems and kernel device backends + (e.g. also working for non-USB devices and for systems without udev like + OpenWRT). + + * Added support to monitor the 'rpmsg' subsystem, but only in plugins that + explicitly require its use (e.g. the 'qcom-soc' plugin). + + * New options in the ModemManager daemon: + ** Added new '--test-no-suspend-resume' option to disable the runtime + suspend/resume support even if the daemon was built with it. + ** Added new '--test-no-udev' option to disable the runtime udev support even + if the daemon was built with it. + + * Serial: + ** Also match OK or ERROR responses that are not at end of line. + + * SIM: + ** Force reprobing the modem if a new SIM is detected in a modem that + initially started in Failed state without SIM. + ** Force reprobing the modem if the lock status cannot be read after sending + SIM-PUK, so that it transitions to the Failed state. + ** Force reprobing the modem if a PUK lock is discovered after sending + SIM-PIN, so that it transitions to the Failed state. * QMI: - ** Fixed parsing of USSD indications with UTF-16 data. - ** Perform network registration using SSSP if possible, so that settings like - allowed modes are not silently modified. - ** Fixed connection sequence so that early attempt aborts end up correctly - releasing network handles that may have been allocated already. - - * Plugins: - ** telit: added port type hints for the default MEx10G1 composition. - ** quectel: added port type hints for the Quectel 5G RM500. - ** quectel: added support for MBIM devices. - ** cinterion: increased SWWAN connection attempt timeout to 120s. - ** cinterion: if user OR password given, don't set the other as (null). - ** cinterion: quote user/password strings in AT^SGAUTH calls. - ** cinterion: support ^SGAUTH syntax in IMT family. - ** cinterion: ignore ^SYSSTART URC. - ** cinterion: simplify parsing of radio/band single SCFG line. - ** cinterion: remove limitation to IPv4 only PDP contexts. + ** The logic no longer depends on the service version reported by each + client, the support for each feature is explicitly probed instead. + ** Implemented SIM profile (eUICC) change detection. + ** Support for QMI modems on kernels < 3.6 is dropped. Only kernels where the + QMI control ports are exposed in the 'usbmisc' subsystem are supported. + ** Implemented additional step in the connection logic to allow binding the + WDS client to a given SIO port, required in the BAM-DMUX driver setup. + ** Implemented support for the initial EPS bearer settings logic. + ** Disabled explicit signal and access technology polling if indications have + been correctly enabled. + + * MBIM: + ** Enable SIM hot swap detection logic with QMI over MBIM. + ** Allow plugins to specify explicitly that QMI over MBIM is not supported. + + * libmm-glib: + ** Added missing APIs to get/set RM protocol in the Simple connect settings. - * Several other minor improvements and fixes. + * Plugins: + ** gosuncn: new plugin, for now just with port type hints for the GM800. + ** quectel: implemented GPS support with +QGPS. + ** quectel: implemented custom time support check to prefer +CTZU=3 instead + of +CTZU=1 so that the modem reports localtime instead of UTC in +CCLK. + ** sierra: added support for XMM-specific features (e.g. EM7345). + ** cinterion: implemented support for the initial EPS bearer settings logic. + ** cinterion: added SIM hot swap support to AT-based modems. + ** huawei: updated to avoid applying multiple port type hint methods. + ** huawei: updated the ^GETPORTMODE logic so that we don't assume the hints + in the response apply to specific USB interfaces. + +The following features which were backported to 1.14.x releases are also present +in ModemManager 1.16.0: + + * location: allow CID only updates. + * sms: allow sending/receiving UTF-16 as if it were UCS-2. + * modem: don't consider charset setup failure as fatal. + * QMI: fix reporting signal strength indications. + * QMI: fix parsing of USSD indications with UTF-16 data. + * QMI: run network registration with NAS Set System Selection Preference. + * QMI: when connection aborted, ensure network handles are released. + * MBIM: don't fail IPv4v6 connection attempt if only IPv4 succeeds. + * cinterion: improve user/password handling in AT^SGAUTH calls. + * cinterion: removed limitation to IPv4 only PDP contexts. + * cinterion: configure the PLAS9 to send URCs correctly. + * quectel: add support for MBIM devices. + * telit: add initial delay for AT ports to become responsive. ModemManager 1.14.0 diff -Nru modemmanager-1.14.10/README modemmanager-1.16.6/README --- modemmanager-1.14.10/README 2020-09-28 16:25:21.000000000 +0800 +++ modemmanager-1.16.6/README 2021-06-06 21:40:59.000000000 +0800 @@ -34,3 +34,11 @@ License. The ModemManager and mmcli binaries are both GPLv2+. The libmm-glib library is LGPLv2+. + +Code of Conduct. +Please note that this project is released with a Contributor Code of Conduct. +By participating in this project you agree to abide by its terms, which you can +find in the following link: + https://www.freedesktop.org/wiki/CodeOfConduct +CoC issues may be raised to the project maintainers at the following address: + modemmanager-devel-owner@lists.freedesktop.org diff -Nru modemmanager-1.14.10/aclocal.m4 modemmanager-1.16.6/aclocal.m4 --- modemmanager-1.14.10/aclocal.m4 2021-01-16 21:19:53.000000000 +0800 +++ modemmanager-1.16.6/aclocal.m4 2021-06-06 21:43:41.000000000 +0800 @@ -1,4 +1,4 @@ -# generated automatically by aclocal 1.16.2 -*- Autoconf -*- +# generated automatically by aclocal 1.16.3 -*- Autoconf -*- # Copyright (C) 1996-2020 Free Software Foundation, Inc. @@ -14,8 +14,8 @@ m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, -[m4_warning([this file was generated for autoconf 2.69. +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.71],, +[m4_warning([this file was generated for autoconf 2.71. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) @@ -1243,7 +1243,7 @@ [am__api_version='1.16' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.16.2], [], +m4_if([$1], [1.16.3], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -1259,7 +1259,7 @@ # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.16.2])dnl +[AM_AUTOMAKE_VERSION([1.16.3])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) @@ -1947,12 +1947,7 @@ [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac + MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then diff -Nru modemmanager-1.14.10/autogen.sh modemmanager-1.16.6/autogen.sh --- modemmanager-1.14.10/autogen.sh 2020-09-28 16:25:21.000000000 +0800 +++ modemmanager-1.16.6/autogen.sh 2021-06-06 21:40:59.000000000 +0800 @@ -14,7 +14,7 @@ } (cd $srcdir; - autoreconf --force --install --verbose + GTKDOCIZE="true" autoreconf --force --install --verbose ) if test -z "$NOCONFIGURE"; then diff -Nru modemmanager-1.14.10/build-aux/Makefile.in modemmanager-1.16.6/build-aux/Makefile.in --- modemmanager-1.14.10/build-aux/Makefile.in 2021-01-16 21:19:54.000000000 +0800 +++ modemmanager-1.16.6/build-aux/Makefile.in 2021-06-06 21:43:42.000000000 +0800 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 Free Software Foundation, Inc. @@ -194,6 +194,8 @@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBELOGIND_CFLAGS = @LIBELOGIND_CFLAGS@ +LIBELOGIND_LIBS = @LIBELOGIND_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBMM_GLIB_CFLAGS = @LIBMM_GLIB_CFLAGS@ @@ -318,6 +320,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff -Nru modemmanager-1.14.10/build-aux/mm-enums-template.c modemmanager-1.16.6/build-aux/mm-enums-template.c --- modemmanager-1.14.10/build-aux/mm-enums-template.c 2020-09-28 16:25:21.000000000 +0800 +++ modemmanager-1.16.6/build-aux/mm-enums-template.c 2021-06-06 21:40:59.000000000 +0800 @@ -24,16 +24,16 @@ GType @enum_name@_get_type (void) { - static volatile gsize g_define_type_id__volatile = 0; + static gsize g_define_type_id_initialized = 0; - if (g_once_init_enter (&g_define_type_id__volatile)) { + if (g_once_init_enter (&g_define_type_id_initialized)) { GType g_define_type_id = g_@type@_register_static (g_intern_static_string ("@EnumName@"), @enum_name@_values); - g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + g_once_init_leave (&g_define_type_id_initialized, g_define_type_id); } - return g_define_type_id__volatile; + return g_define_type_id_initialized; } /** diff -Nru modemmanager-1.14.10/build-aux/mm-errors-template.c modemmanager-1.16.6/build-aux/mm-errors-template.c --- modemmanager-1.14.10/build-aux/mm-errors-template.c 2014-09-17 14:46:07.000000000 +0800 +++ modemmanager-1.16.6/build-aux/mm-errors-template.c 2021-06-06 21:40:59.000000000 +0800 @@ -12,9 +12,9 @@ GType @enum_name@_get_type (void) { - static volatile gsize g_define_type_id__volatile = 0; + static gsize g_define_type_id_initialized = 0; - if (g_once_init_enter (&g_define_type_id__volatile)) + if (g_once_init_enter (&g_define_type_id_initialized)) { static const G@Type@Value values[] = { /*** END value-header ***/ @@ -28,10 +28,10 @@ }; GType g_define_type_id = g_@type@_register_static (g_intern_static_string ("@EnumName@"), values); - g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + g_once_init_leave (&g_define_type_id_initialized, g_define_type_id); } - return g_define_type_id__volatile; + return g_define_type_id_initialized; } /*** END value-tail ***/ diff -Nru modemmanager-1.14.10/cli/Makefile.in modemmanager-1.16.6/cli/Makefile.in --- modemmanager-1.14.10/cli/Makefile.in 2021-01-16 21:19:55.000000000 +0800 +++ modemmanager-1.16.6/cli/Makefile.in 2021-06-06 21:43:42.000000000 +0800 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 Free Software Foundation, Inc. @@ -281,6 +281,8 @@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBELOGIND_CFLAGS = @LIBELOGIND_CFLAGS@ +LIBELOGIND_LIBS = @LIBELOGIND_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBMM_GLIB_CFLAGS = @LIBMM_GLIB_CFLAGS@ @@ -405,6 +407,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff -Nru modemmanager-1.14.10/cli/mmcli-common.c modemmanager-1.16.6/cli/mmcli-common.c --- modemmanager-1.14.10/cli/mmcli-common.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/cli/mmcli-common.c 2021-06-06 21:40:59.000000000 +0800 @@ -750,6 +750,53 @@ } static void +list_sim_slots_ready (MMModem *modem, + GAsyncResult *res, + GTask *task) +{ + g_autoptr(GPtrArray) sim_slots = NULL; + GetSimContext *ctx; + GetSimResults *results = NULL; + guint i; + GError *error = NULL; + + ctx = g_task_get_task_data (task); + + sim_slots = mm_modem_list_sim_slots_finish (modem, res, &error); + if (error) { + g_printerr ("error: couldn't list SIM slots at '%s': '%s'\n", + mm_modem_get_path (modem), + error->message); + exit (EXIT_FAILURE); + } + + for (i = 0; i < sim_slots->len; i++) { + MMSim *sim; + + sim = MM_SIM (g_ptr_array_index (sim_slots, i)); + if (sim && g_str_equal (mm_sim_get_path (sim), ctx->sim_path)) { + /* Found! */ + results = g_new (GetSimResults, 1); + results->manager = g_object_ref (ctx->manager); + results->object = g_object_ref (ctx->current); + results->sim = g_object_ref (sim); + break; + } + } + + if (results) { + g_task_return_pointer (task, results, (GDestroyNotify) get_sim_results_free); + g_object_unref (task); + return; + } + + g_printerr ("error: couldn't get additional SIM '%s' at '%s'\n", + ctx->sim_path, + mm_modem_get_path (modem)); + exit (EXIT_FAILURE); +} + +static void get_sim_ready (MMModem *modem, GAsyncResult *res, GTask *task) @@ -800,11 +847,13 @@ } for (l = modems; l && !ctx->current; l = g_list_next (l)) { - MMObject *object; - MMModem *modem; + MMObject *object; + MMModem *modem; + const gchar *const *sim_slot_paths; object = MM_OBJECT (l->data); modem = mm_object_get_modem (object); + sim_slot_paths = mm_modem_get_sim_slot_paths (modem); /* check if we can match the first object found */ if (ctx->sim_any) { @@ -828,6 +877,19 @@ g_task_get_cancellable (task), (GAsyncReadyCallback)get_sim_ready, task); + } else if (sim_slot_paths) { + guint i; + + for (i = 0; sim_slot_paths[i]; i++) { + if (g_str_equal (ctx->sim_path, sim_slot_paths[i])) { + ctx->current = g_object_ref (object); + mm_modem_list_sim_slots (modem, + g_task_get_cancellable (task), + (GAsyncReadyCallback)list_sim_slots_ready, + task); + break; + } + } } g_object_unref (modem); } @@ -890,12 +952,14 @@ } for (l = modems; !found && l; l = g_list_next (l)) { - GError *error = NULL; - MMObject *object; - MMModem *modem; + GError *error = NULL; + MMObject *object; + MMModem *modem; + const gchar *const *sim_slot_paths; object = MM_OBJECT (l->data); modem = mm_object_get_modem (object); + sim_slot_paths = mm_modem_get_sim_slot_paths (modem); /* check if we can match the first object found */ if (sim_any) { @@ -925,6 +989,34 @@ if (found && o_object) *o_object = g_object_ref (object); + } else if (sim_slot_paths) { + guint i; + + for (i = 0; !found && sim_slot_paths[i]; i++) { + if (g_str_equal (sim_path, sim_slot_paths[i])) { + g_autoptr(GPtrArray) sim_slots = NULL; + guint j; + + sim_slots = mm_modem_list_sim_slots_sync (modem, NULL, &error); + if (error) { + g_printerr ("error: couldn't get SIM slots in modem '%s': '%s'\n", + mm_modem_get_path (modem), + error->message); + exit (EXIT_FAILURE); + } + + for (j = 0; j < sim_slots->len; j++) { + MMSim *sim; + + sim = MM_SIM (g_ptr_array_index (sim_slots, j)); + if (sim && g_str_equal (sim_path, mm_sim_get_path (sim))) { + found = g_object_ref (sim); + if (o_object) + *o_object = g_object_ref (object); + } + } + } + } } g_object_unref (modem); diff -Nru modemmanager-1.14.10/cli/mmcli-manager.c modemmanager-1.16.6/cli/mmcli-manager.c --- modemmanager-1.14.10/cli/mmcli-manager.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/cli/mmcli-manager.c 2021-06-06 21:40:59.000000000 +0800 @@ -449,7 +449,7 @@ #if defined WITH_UDEV if (report_kernel_event_auto_scan) { - const gchar *subsys[] = { "tty", "usbmisc", "net", NULL }; + const gchar *subsys[] = { "tty", "usbmisc", "net", "rpmsg", NULL }; guint i; ctx->udev = g_udev_client_new (subsys); diff -Nru modemmanager-1.14.10/cli/mmcli-modem-signal.c modemmanager-1.16.6/cli/mmcli-modem-signal.c --- modemmanager-1.14.10/cli/mmcli-modem-signal.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/cli/mmcli-modem-signal.c 2021-06-06 21:40:59.000000000 +0800 @@ -153,6 +153,9 @@ gchar *lte_rsrp = NULL; gchar *lte_rsrq = NULL; gchar *lte_snr = NULL; + gchar *nr5g_rsrp = NULL; + gchar *nr5g_rsrq = NULL; + gchar *nr5g_snr = NULL; refresh_rate = g_strdup_printf ("%u", mm_modem_signal_get_rate (ctx->modem_signal)); @@ -204,6 +207,16 @@ lte_snr = g_strdup_printf ("%.2lf", value); } + signal = mm_modem_signal_peek_nr5g (ctx->modem_signal); + if (signal) { + if ((value = mm_signal_get_rsrq (signal)) != MM_SIGNAL_UNKNOWN) + nr5g_rsrq = g_strdup_printf ("%.2lf", value); + if ((value = mm_signal_get_rsrp (signal)) != MM_SIGNAL_UNKNOWN) + nr5g_rsrp = g_strdup_printf ("%.2lf", value); + if ((value = mm_signal_get_snr (signal)) != MM_SIGNAL_UNKNOWN) + nr5g_snr = g_strdup_printf ("%.2lf", value); + } + mmcli_output_string_take_typed (MMC_F_SIGNAL_REFRESH_RATE, refresh_rate, "seconds"); mmcli_output_string_take_typed (MMC_F_SIGNAL_CDMA1X_RSSI, cdma1x_rssi, "dBm"); mmcli_output_string_take_typed (MMC_F_SIGNAL_CDMA1X_ECIO, cdma1x_ecio, "dBm"); @@ -219,6 +232,9 @@ mmcli_output_string_take_typed (MMC_F_SIGNAL_LTE_RSRQ, lte_rsrq, "dB"); mmcli_output_string_take_typed (MMC_F_SIGNAL_LTE_RSRP, lte_rsrp, "dBm"); mmcli_output_string_take_typed (MMC_F_SIGNAL_LTE_SNR, lte_snr, "dB"); + mmcli_output_string_take_typed (MMC_F_SIGNAL_5G_RSRQ, nr5g_rsrq, "dB"); + mmcli_output_string_take_typed (MMC_F_SIGNAL_5G_RSRP, nr5g_rsrp, "dBm"); + mmcli_output_string_take_typed (MMC_F_SIGNAL_5G_SNR, nr5g_snr, "dB"); mmcli_output_dump (); } diff -Nru modemmanager-1.14.10/cli/mmcli-modem.c modemmanager-1.16.6/cli/mmcli-modem.c --- modemmanager-1.14.10/cli/mmcli-modem.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/cli/mmcli-modem.c 2021-06-06 21:40:59.000000000 +0800 @@ -63,6 +63,7 @@ static gchar *set_allowed_modes_str; static gchar *set_preferred_mode_str; static gchar *set_current_bands_str; +static gint set_primary_sim_slot_int; static gboolean inhibit_flag; static GOptionEntry entries[] = { @@ -126,6 +127,10 @@ "Set bands to be used by a given modem.", "[BAND1|BAND2...]" }, + { "set-primary-sim-slot", 0, 0, G_OPTION_ARG_INT, &set_primary_sim_slot_int, + "Switch to the selected SIM slot", + "[SLOT NUMBER]" + }, { "inhibit", 0, 0, G_OPTION_ARG_NONE, &inhibit_flag, "Inhibit the modem", NULL @@ -173,6 +178,7 @@ !!set_allowed_modes_str + !!set_preferred_mode_str + !!set_current_bands_str + + (set_primary_sim_slot_int > 0) + inhibit_flag); if (n_actions == 0 && mmcli_get_common_modem_string ()) { @@ -475,6 +481,8 @@ sim_path = mm_modem_get_sim_path (ctx->modem); mmcli_output_string (MMC_F_SIM_PATH, g_strcmp0 (sim_path, "/") != 0 ? sim_path : NULL); + mmcli_output_sim_slots (mm_modem_dup_sim_slot_paths (ctx->modem), + mm_modem_get_primary_sim_slot (ctx->modem)); bearer_paths = (const gchar **) mm_modem_get_bearer_paths (ctx->modem); mmcli_output_string_array (MMC_F_BEARER_PATHS, (bearer_paths && bearer_paths[0]) ? bearer_paths : NULL, TRUE); @@ -889,6 +897,32 @@ } static void +set_primary_sim_slot_process_reply (gboolean result, + const GError *error) +{ + if (!result) { + g_printerr ("error: couldn't request primary SIM switch: '%s'\n", + error ? error->message : "unknown error"); + exit (EXIT_FAILURE); + } + + g_print ("successfully requested primary SIM switch in modem\n"); +} + +static void +set_primary_sim_slot_ready (MMModem *modem, + GAsyncResult *result) +{ + gboolean operation_result; + g_autoptr(GError) error = NULL; + + operation_result = mm_modem_set_primary_sim_slot_finish (modem, result, &error); + set_primary_sim_slot_process_reply (operation_result, error); + + mmcli_async_operation_done (); +} + +static void state_changed (MMModem *modem, MMModemState old_state, MMModemState new_state, @@ -1130,6 +1164,16 @@ return; } + /* Request to switch SIM? */ + if (set_primary_sim_slot_int > 0) { + mm_modem_set_primary_sim_slot (ctx->modem, + set_primary_sim_slot_int, + ctx->cancellable, + (GAsyncReadyCallback)set_primary_sim_slot_ready, + NULL); + return; + } + /* Request to inhibit the modem? */ if (inhibit_flag) { gchar *uid; @@ -1389,5 +1433,14 @@ return; } + /* Request to switch current SIM? */ + if (set_primary_sim_slot_int > 0) { + gboolean result; + + result = mm_modem_set_primary_sim_slot_sync (ctx->modem, set_primary_sim_slot_int, NULL, &error); + set_primary_sim_slot_process_reply (result, error); + return; + } + g_warn_if_reached (); } diff -Nru modemmanager-1.14.10/cli/mmcli-output.c modemmanager-1.16.6/cli/mmcli-output.c --- modemmanager-1.14.10/cli/mmcli-output.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/cli/mmcli-output.c 2021-06-06 21:40:59.000000000 +0800 @@ -57,6 +57,7 @@ [MMC_S_MODEM_SIGNAL_GSM] = { "GSM" }, [MMC_S_MODEM_SIGNAL_UMTS] = { "UMTS" }, [MMC_S_MODEM_SIGNAL_LTE] = { "LTE" }, + [MMC_S_MODEM_SIGNAL_5G] = { "5G" }, [MMC_S_MODEM_OMA] = { "OMA" }, [MMC_S_MODEM_OMA_CURRENT] = { "Current session" }, [MMC_S_MODEM_OMA_PENDING] = { "Pending sessions" }, @@ -93,7 +94,7 @@ } FieldInfo; static FieldInfo field_infos[] = { - [MMC_F_GENERAL_DBUS_PATH] = { "modem.dbus-path", "dbus path", MMC_S_MODEM_GENERAL, }, + [MMC_F_GENERAL_DBUS_PATH] = { "modem.dbus-path", "path", MMC_S_MODEM_GENERAL, }, [MMC_F_GENERAL_DEVICE_ID] = { "modem.generic.device-identifier", "device id", MMC_S_MODEM_GENERAL, }, [MMC_F_HARDWARE_MANUFACTURER] = { "modem.generic.manufacturer", "manufacturer", MMC_S_MODEM_HARDWARE, }, [MMC_F_HARDWARE_MODEL] = { "modem.generic.model", "model", MMC_S_MODEM_HARDWARE, }, @@ -130,7 +131,7 @@ [MMC_F_3GPP_REGISTRATION] = { "modem.3gpp.registration-state", "registration", MMC_S_MODEM_3GPP, }, [MMC_F_3GPP_PCO] = { "modem.3gpp.pco", "pco", MMC_S_MODEM_3GPP, }, [MMC_F_3GPP_EPS_UE_MODE] = { "modem.3gpp.eps.ue-mode-operation", "ue mode of operation", MMC_S_MODEM_3GPP_EPS, }, - [MMC_F_3GPP_EPS_INITIAL_BEARER_PATH] = { "modem.3gpp.eps.initial-bearer.dbus-path", "initial bearer dbus path", MMC_S_MODEM_3GPP_EPS, }, + [MMC_F_3GPP_EPS_INITIAL_BEARER_PATH] = { "modem.3gpp.eps.initial-bearer.dbus-path", "initial bearer path", MMC_S_MODEM_3GPP_EPS, }, [MMC_F_3GPP_EPS_BEARER_SETTINGS_APN] = { "modem.3gpp.eps.initial-bearer.settings.apn", "initial bearer apn", MMC_S_MODEM_3GPP_EPS, }, [MMC_F_3GPP_EPS_BEARER_SETTINGS_IP_TYPE] = { "modem.3gpp.eps.initial-bearer.settings.ip-type", "initial bearer ip type", MMC_S_MODEM_3GPP_EPS, }, [MMC_F_3GPP_EPS_BEARER_SETTINGS_USER] = { "modem.3gpp.eps.initial-bearer.settings.user", "initial bearer user", MMC_S_MODEM_3GPP_EPS, }, @@ -146,8 +147,10 @@ [MMC_F_CDMA_REGISTRATION_CDMA1X] = { "modem.cdma.cdma1x-registration-state", "registration cdma1x", MMC_S_MODEM_CDMA, }, [MMC_F_CDMA_REGISTRATION_EVDO] = { "modem.cdma.evdo-registration-state", "registration evdo", MMC_S_MODEM_CDMA, }, [MMC_F_CDMA_ACTIVATION] = { "modem.cdma.activation-state", "activation", MMC_S_MODEM_CDMA, }, - [MMC_F_SIM_PATH] = { "modem.generic.sim", "dbus path", MMC_S_MODEM_SIM, }, - [MMC_F_BEARER_PATHS] = { "modem.generic.bearers", "dbus path", MMC_S_MODEM_BEARER, }, + [MMC_F_SIM_PATH] = { "modem.generic.sim", "primary sim path", MMC_S_MODEM_SIM, }, + [MMC_F_SIM_PRIMARY_SLOT] = { "modem.generic.primary-sim-slot", NULL, MMC_S_MODEM_SIM, }, + [MMC_F_SIM_SLOT_PATHS] = { "modem.generic.sim-slots", "sim slot paths", MMC_S_MODEM_SIM, }, + [MMC_F_BEARER_PATHS] = { "modem.generic.bearers", "paths", MMC_S_MODEM_BEARER, }, [MMC_F_TIME_CURRENT] = { "modem.time.current", "current", MMC_S_MODEM_TIME, }, [MMC_F_TIMEZONE_CURRENT] = { "modem.timezone.current", "current", MMC_S_MODEM_TIMEZONE, }, [MMC_F_TIMEZONE_DST_OFFSET] = { "modem.time.dst-offset", "dst offset", MMC_S_MODEM_TIMEZONE, }, @@ -169,6 +172,9 @@ [MMC_F_SIGNAL_LTE_RSRQ] = { "modem.signal.lte.rsrq", "rsrq", MMC_S_MODEM_SIGNAL_LTE, }, [MMC_F_SIGNAL_LTE_RSRP] = { "modem.signal.lte.rsrp", "rsrp", MMC_S_MODEM_SIGNAL_LTE, }, [MMC_F_SIGNAL_LTE_SNR] = { "modem.signal.lte.snr", "s/n", MMC_S_MODEM_SIGNAL_LTE, }, + [MMC_F_SIGNAL_5G_RSRQ] = { "modem.signal.5g.rsrq", "rsrq", MMC_S_MODEM_SIGNAL_5G, }, + [MMC_F_SIGNAL_5G_RSRP] = { "modem.signal.5g.rsrp", "rsrp", MMC_S_MODEM_SIGNAL_5G, }, + [MMC_F_SIGNAL_5G_SNR] = { "modem.signal.5g.snr", "s/n", MMC_S_MODEM_SIGNAL_5G, }, [MMC_F_OMA_FEATURES] = { "modem.oma.features", "features", MMC_S_MODEM_OMA, }, [MMC_F_OMA_CURRENT_TYPE] = { "modem.oma.current.type", "type", MMC_S_MODEM_OMA_CURRENT, }, [MMC_F_OMA_CURRENT_STATE] = { "modem.oma.current.state", "state", MMC_S_MODEM_OMA_CURRENT, }, @@ -198,7 +204,7 @@ [MMC_F_FIRMWARE_VERSION] = { "modem.firmware.version", "version", MMC_S_MODEM_FIRMWARE, }, [MMC_F_FIRMWARE_FASTBOOT_AT] = { "modem.firmware.fastboot.at", "at command", MMC_S_MODEM_FIRMWARE_FASTBOOT, }, [MMC_F_VOICE_EMERGENCY_ONLY] = { "modem.voice.emergency-only", "emergency only", MMC_S_MODEM_VOICE, }, - [MMC_F_BEARER_GENERAL_DBUS_PATH] = { "bearer.dbus-path", "dbus path", MMC_S_BEARER_GENERAL, }, + [MMC_F_BEARER_GENERAL_DBUS_PATH] = { "bearer.dbus-path", "path", MMC_S_BEARER_GENERAL, }, [MMC_F_BEARER_GENERAL_TYPE] = { "bearer.type", "type", MMC_S_BEARER_GENERAL, }, [MMC_F_BEARER_STATUS_CONNECTED] = { "bearer.status.connected", "connected", MMC_S_BEARER_STATUS, }, [MMC_F_BEARER_STATUS_SUSPENDED] = { "bearer.status.suspended", "suspended", MMC_S_BEARER_STATUS, }, @@ -232,7 +238,7 @@ [MMC_F_BEARER_STATS_TOTAL_DURATION] = { "bearer.stats.total-duration", "total-duration", MMC_S_BEARER_STATS, }, [MMC_F_BEARER_STATS_TOTAL_BYTES_RX] = { "bearer.stats.total-bytes-rx", "total-bytes rx", MMC_S_BEARER_STATS, }, [MMC_F_BEARER_STATS_TOTAL_BYTES_TX] = { "bearer.stats.total-bytes-tx", "total-bytes tx", MMC_S_BEARER_STATS, }, - [MMC_F_CALL_GENERAL_DBUS_PATH] = { "call.dbus-path", "dbus path", MMC_S_CALL_GENERAL, }, + [MMC_F_CALL_GENERAL_DBUS_PATH] = { "call.dbus-path", "path", MMC_S_CALL_GENERAL, }, [MMC_F_CALL_PROPERTIES_NUMBER] = { "call.properties.number", "number", MMC_S_CALL_PROPERTIES, }, [MMC_F_CALL_PROPERTIES_DIRECTION] = { "call.properties.direction", "direction", MMC_S_CALL_PROPERTIES, }, [MMC_F_CALL_PROPERTIES_MULTIPARTY] = { "call.properties.multiparty", "multiparty", MMC_S_CALL_PROPERTIES, }, @@ -242,7 +248,7 @@ [MMC_F_CALL_AUDIO_FORMAT_ENCODING] = { "call.audio-format.encoding", "encoding", MMC_S_CALL_AUDIO_FORMAT, }, [MMC_F_CALL_AUDIO_FORMAT_RESOLUTION] = { "call.audio-format.resolution", "resolution", MMC_S_CALL_AUDIO_FORMAT, }, [MMC_F_CALL_AUDIO_FORMAT_RATE] = { "call.audio-format.rate", "rate", MMC_S_CALL_AUDIO_FORMAT, }, - [MMC_F_SMS_GENERAL_DBUS_PATH] = { "sms.dbus-path", "dbus path", MMC_S_SMS_GENERAL, }, + [MMC_F_SMS_GENERAL_DBUS_PATH] = { "sms.dbus-path", "path", MMC_S_SMS_GENERAL, }, [MMC_F_SMS_CONTENT_NUMBER] = { "sms.content.number", "number", MMC_S_SMS_CONTENT, }, [MMC_F_SMS_CONTENT_TEXT] = { "sms.content.text", "text", MMC_S_SMS_CONTENT, }, [MMC_F_SMS_CONTENT_DATA] = { "sms.content.data", "data", MMC_S_SMS_CONTENT, }, @@ -259,9 +265,11 @@ [MMC_F_SMS_PROPERTIES_TIMESTAMP] = { "sms.properties.timestamp", "timestamp", MMC_S_SMS_PROPERTIES, }, [MMC_F_SMS_PROPERTIES_DELIVERY_STATE] = { "sms.properties.delivery-state", "delivery state", MMC_S_SMS_PROPERTIES, }, [MMC_F_SMS_PROPERTIES_DISCH_TIMESTAMP] = { "sms.properties.discharge-timestamp", "discharge timestamp", MMC_S_SMS_PROPERTIES, }, - [MMC_F_SIM_GENERAL_DBUS_PATH] = { "sim.dbus-path", "dbus path", MMC_S_SIM_GENERAL, }, + [MMC_F_SIM_GENERAL_DBUS_PATH] = { "sim.dbus-path", "path", MMC_S_SIM_GENERAL, }, + [MMC_F_SIM_PROPERTIES_ACTIVE] = { "sim.properties.active", "active", MMC_S_SIM_PROPERTIES, }, [MMC_F_SIM_PROPERTIES_IMSI] = { "sim.properties.imsi", "imsi", MMC_S_SIM_PROPERTIES, }, [MMC_F_SIM_PROPERTIES_ICCID] = { "sim.properties.iccid", "iccid", MMC_S_SIM_PROPERTIES, }, + [MMC_F_SIM_PROPERTIES_EID] = { "sim.properties.eid", "eid", MMC_S_SIM_PROPERTIES, }, [MMC_F_SIM_PROPERTIES_OPERATOR_ID] = { "sim.properties.operator-code", "operator id", MMC_S_SIM_PROPERTIES, }, [MMC_F_SIM_PROPERTIES_OPERATOR_NAME] = { "sim.properties.operator-name", "operator name", MMC_S_SIM_PROPERTIES, }, [MMC_F_SIM_PROPERTIES_EMERGENCY_NUMBERS] = { "sim.properties.emergency-numbers", "emergency numbers", MMC_S_SIM_PROPERTIES, }, @@ -565,6 +573,37 @@ } /******************************************************************************/ +/* (Custom) SIM slots output */ + +void +mmcli_output_sim_slots (gchar **sim_slot_paths, + guint primary_sim_slot) +{ + guint i; + + if (selected_type != MMC_OUTPUT_TYPE_HUMAN || !sim_slot_paths) { + mmcli_output_string_take (MMC_F_SIM_PRIMARY_SLOT, primary_sim_slot ? g_strdup_printf ("%u", primary_sim_slot) : NULL); + mmcli_output_string_array_take (MMC_F_SIM_SLOT_PATHS, sim_slot_paths ? sim_slot_paths : NULL, TRUE); + return; + } + + /* Include SIM slot number in each item */ + for (i = 0; sim_slot_paths[i]; i++) { + gchar *aux; + guint slot_number = i + 1; + + aux = g_strdup_printf ("slot %u: %s%s", + slot_number, + g_str_equal (sim_slot_paths[i], "/") ? "none" : sim_slot_paths[i], + (primary_sim_slot == slot_number) ? " (active)" : ""); + g_free (sim_slot_paths[i]); + sim_slot_paths[i] = aux; + } + + mmcli_output_string_array_take (MMC_F_SIM_SLOT_PATHS, sim_slot_paths, TRUE); +} + +/******************************************************************************/ /* (Custom) Network scan output */ static gchar * diff -Nru modemmanager-1.14.10/cli/mmcli-output.h modemmanager-1.16.6/cli/mmcli-output.h --- modemmanager-1.14.10/cli/mmcli-output.h 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/cli/mmcli-output.h 2021-06-06 21:40:59.000000000 +0800 @@ -54,6 +54,7 @@ MMC_S_MODEM_SIGNAL_GSM, MMC_S_MODEM_SIGNAL_UMTS, MMC_S_MODEM_SIGNAL_LTE, + MMC_S_MODEM_SIGNAL_5G, MMC_S_MODEM_OMA, MMC_S_MODEM_OMA_CURRENT, MMC_S_MODEM_OMA_PENDING, @@ -153,6 +154,8 @@ MMC_F_CDMA_ACTIVATION, /* SIM section */ MMC_F_SIM_PATH, + MMC_F_SIM_PRIMARY_SLOT, + MMC_F_SIM_SLOT_PATHS, /* Bearer section */ MMC_F_BEARER_PATHS, /* Time section */ @@ -179,6 +182,9 @@ MMC_F_SIGNAL_LTE_RSRQ, MMC_F_SIGNAL_LTE_RSRP, MMC_F_SIGNAL_LTE_SNR, + MMC_F_SIGNAL_5G_RSRQ, + MMC_F_SIGNAL_5G_RSRP, + MMC_F_SIGNAL_5G_SNR, /* OMA section */ MMC_F_OMA_FEATURES, MMC_F_OMA_CURRENT_TYPE, @@ -277,8 +283,10 @@ MMC_F_SMS_PROPERTIES_DELIVERY_STATE, MMC_F_SMS_PROPERTIES_DISCH_TIMESTAMP, MMC_F_SIM_GENERAL_DBUS_PATH, + MMC_F_SIM_PROPERTIES_ACTIVE, MMC_F_SIM_PROPERTIES_IMSI, MMC_F_SIM_PROPERTIES_ICCID, + MMC_F_SIM_PROPERTIES_EID, MMC_F_SIM_PROPERTIES_OPERATOR_ID, MMC_F_SIM_PROPERTIES_OPERATOR_NAME, MMC_F_SIM_PROPERTIES_EMERGENCY_NUMBERS, @@ -333,14 +341,16 @@ /******************************************************************************/ /* Custom output management */ -void mmcli_output_signal_quality (guint value, - gboolean recent); -void mmcli_output_state (MMModemState state, - MMModemStateFailedReason reason); -void mmcli_output_scan_networks (GList *network_list); -void mmcli_output_firmware_list (GList *firmware_list, - MMFirmwareProperties *selected); -void mmcli_output_pco_list (GList *pco_list); +void mmcli_output_signal_quality (guint value, + gboolean recent); +void mmcli_output_state (MMModemState state, + MMModemStateFailedReason reason); +void mmcli_output_sim_slots (gchar **sim_slot_paths, + guint primary_sim_slot); +void mmcli_output_scan_networks (GList *network_list); +void mmcli_output_firmware_list (GList *firmware_list, + MMFirmwareProperties *selected); +void mmcli_output_pco_list (GList *pco_list); /******************************************************************************/ /* Dump output */ diff -Nru modemmanager-1.14.10/cli/mmcli-sim.c modemmanager-1.16.6/cli/mmcli-sim.c --- modemmanager-1.14.10/cli/mmcli-sim.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/cli/mmcli-sim.c 2021-06-06 21:40:59.000000000 +0800 @@ -159,8 +159,10 @@ print_sim_info (MMSim *sim) { mmcli_output_string (MMC_F_SIM_GENERAL_DBUS_PATH, mm_sim_get_path (sim)); + mmcli_output_string (MMC_F_SIM_PROPERTIES_ACTIVE, mm_sim_get_active (sim) ? "yes" : "no"); mmcli_output_string (MMC_F_SIM_PROPERTIES_IMSI, mm_sim_get_imsi (sim)); mmcli_output_string (MMC_F_SIM_PROPERTIES_ICCID, mm_sim_get_identifier (sim)); + mmcli_output_string (MMC_F_SIM_PROPERTIES_EID, mm_sim_get_eid (sim)); mmcli_output_string (MMC_F_SIM_PROPERTIES_OPERATOR_ID, mm_sim_get_operator_identifier (sim)); mmcli_output_string (MMC_F_SIM_PROPERTIES_OPERATOR_NAME, mm_sim_get_operator_name (sim)); mmcli_output_string_array (MMC_F_SIM_PROPERTIES_EMERGENCY_NUMBERS, (const gchar **) mm_sim_get_emergency_numbers (sim), FALSE); diff -Nru modemmanager-1.14.10/cli/mmcli.c modemmanager-1.16.6/cli/mmcli.c --- modemmanager-1.14.10/cli/mmcli.c 2020-09-28 16:25:21.000000000 +0800 +++ modemmanager-1.16.6/cli/mmcli.c 2021-06-06 21:40:59.000000000 +0800 @@ -148,7 +148,7 @@ print_version_and_exit (void) { g_print (PROGRAM_NAME " " PROGRAM_VERSION "\n" - "Copyright (2011 - 2020) Aleksander Morgado\n" + "Copyright (2011 - 2021) Aleksander Morgado\n" "License GPLv2+: GNU GPL version 2 or later \n" "This is free software: you are free to change and redistribute it.\n" "There is NO WARRANTY, to the extent permitted by law.\n" @@ -188,7 +188,8 @@ void mmcli_force_operation_timeout (GDBusProxy *proxy) { - g_dbus_proxy_set_default_timeout (proxy, timeout * 1000); + if (proxy) + g_dbus_proxy_set_default_timeout (proxy, timeout * 1000); } gint diff -Nru modemmanager-1.14.10/config.guess modemmanager-1.16.6/config.guess --- modemmanager-1.14.10/config.guess 2021-01-16 21:19:54.000000000 +0800 +++ modemmanager-1.16.6/config.guess 2021-06-06 21:43:43.000000000 +0800 @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2020 Free Software Foundation, Inc. +# Copyright 1992-2021 Free Software Foundation, Inc. -timestamp='2020-01-01' +timestamp='2021-01-25' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -27,12 +27,12 @@ # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to . -me=`echo "$0" | sed -e 's,.*/,,'` +me=$(echo "$0" | sed -e 's,.*/,,') usage="\ Usage: $0 [OPTION] @@ -50,7 +50,7 @@ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2020 Free Software Foundation, Inc. +Copyright 1992-2021 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -103,7 +103,7 @@ test "$tmp" && return 0 : "${TMPDIR=/tmp}" # shellcheck disable=SC2039 - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { tmp=$( (umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null) && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } @@ -131,16 +131,14 @@ PATH=$PATH:/.attbin ; export PATH fi -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown +UNAME_MACHINE=$( (uname -m) 2>/dev/null) || UNAME_MACHINE=unknown +UNAME_RELEASE=$( (uname -r) 2>/dev/null) || UNAME_RELEASE=unknown +UNAME_SYSTEM=$( (uname -s) 2>/dev/null) || UNAME_SYSTEM=unknown +UNAME_VERSION=$( (uname -v) 2>/dev/null) || UNAME_VERSION=unknown case "$UNAME_SYSTEM" in Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu + LIBC=unknown set_cc_for_build cat <<-EOF > "$dummy.c" @@ -149,17 +147,29 @@ LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc - #else + #elif defined(__GLIBC__) LIBC=gnu + #else + #include + /* First heuristic to detect musl libc. */ + #ifdef __DEFINED_va_list + LIBC=musl + #endif #endif EOF - eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" + eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g')" - # If ldd exists, use it to detect musl libc. - if command -v ldd >/dev/null && \ - ldd --version 2>&1 | grep -q ^musl - then - LIBC=musl + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi + + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu fi ;; esac @@ -178,20 +188,20 @@ # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ - "/sbin/$sysctl" 2>/dev/null || \ - "/usr/sbin/$sysctl" 2>/dev/null || \ - echo unknown)` + UNAME_MACHINE_ARCH=$( (uname -p 2>/dev/null || \ + /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + echo unknown)) case "$UNAME_MACHINE_ARCH" in + aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) - arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` - endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + arch=$(echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,') + endian=$(echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p') machine="${arch}${endian}"-unknown ;; *) machine="$UNAME_MACHINE_ARCH"-unknown ;; @@ -222,7 +232,7 @@ case "$UNAME_MACHINE_ARCH" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' - abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` + abi=$(echo "$UNAME_MACHINE_ARCH" | sed -e "$expr") ;; esac # The OS release @@ -235,7 +245,7 @@ release='-gnu' ;; *) - release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` + release=$(echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2) ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: @@ -244,15 +254,15 @@ echo "$machine-${os}${release}${abi-}" exit ;; *:Bitrig:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + UNAME_MACHINE_ARCH=$(arch | sed 's/Bitrig.//') echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" exit ;; *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + UNAME_MACHINE_ARCH=$(arch | sed 's/OpenBSD.//') echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" exit ;; *:LibertyBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + UNAME_MACHINE_ARCH=$(arch | sed 's/^.*BSD\.//') echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" exit ;; *:MidnightBSD:*:*) @@ -288,17 +298,17 @@ alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $3}') ;; *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $4}') ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + ALPHA_CPU_TYPE=$(/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1) case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE=alpha ;; @@ -336,7 +346,7 @@ # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" + echo "$UNAME_MACHINE"-dec-osf"$(echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)" # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 @@ -370,7 +380,7 @@ exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then + if test "$( (/bin/universe) 2>/dev/null)" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd @@ -383,17 +393,17 @@ echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case `/usr/bin/uname -p` in + case $(/usr/bin/uname -p) in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) - echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" + echo "$UNAME_MACHINE"-ibm-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')" exit ;; sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + echo sparc-hal-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')" exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" + echo sparc-sun-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')" exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux"$UNAME_RELEASE" @@ -404,7 +414,7 @@ # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. - if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null @@ -412,30 +422,30 @@ SUN_ARCH=x86_64 fi fi - echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + echo "$SUN_ARCH"-pc-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')" exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + echo sparc-sun-solaris3"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')" exit ;; sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in + case "$(/usr/bin/arch -k)" in Series*|S4*) - UNAME_RELEASE=`uname -v` + UNAME_RELEASE=$(uname -v) ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" + echo sparc-sun-sunos"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/')" exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos"$UNAME_RELEASE" exit ;; sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + UNAME_RELEASE=$( (sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null) test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 - case "`/bin/arch`" in + case "$(/bin/arch)" in sun3) echo m68k-sun-sunos"$UNAME_RELEASE" ;; @@ -515,8 +525,8 @@ } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && - dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`"$dummy" "$dummyarg"` && + dummyarg=$(echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p') && + SYSTEM_NAME=$("$dummy" "$dummyarg") && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos"$UNAME_RELEASE" exit ;; @@ -543,11 +553,11 @@ exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] + UNAME_PROCESSOR=$(/usr/bin/uname -p) + if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 then - if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ - [ "$TARGET_BINARY_INTERFACE"x = x ] + if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ + test "$TARGET_BINARY_INTERFACE"x = x then echo m88k-dg-dgux"$UNAME_RELEASE" else @@ -571,17 +581,17 @@ echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) - echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" + echo mips-sgi-irix"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/g')" exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + exit ;; # Note that: echo "'$(uname -s)'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` + if test -x /usr/bin/oslevel ; then + IBM_REV=$(/usr/bin/oslevel) else IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi @@ -601,7 +611,7 @@ exit(0); } EOF - if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy") then echo "$SYSTEM_NAME" else @@ -614,15 +624,15 @@ fi exit ;; *:AIX:*:[4567]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + IBM_CPU_ID=$(/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }') if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi - if [ -x /usr/bin/lslpp ] ; then - IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | - awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + if test -x /usr/bin/lslpp ; then + IBM_REV=$(/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/) else IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi @@ -650,14 +660,14 @@ echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//') case "$UNAME_MACHINE" in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + if test -x /usr/bin/getconf; then + sc_cpu_version=$(/usr/bin/getconf SC_CPU_VERSION 2>/dev/null) + sc_kernel_bits=$(/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null) case "$sc_cpu_version" in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 @@ -669,7 +679,7 @@ esac ;; esac fi - if [ "$HP_ARCH" = "" ]; then + if test "$HP_ARCH" = ""; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" @@ -704,11 +714,11 @@ exit (0); } EOF - (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=$("$dummy") test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ "$HP_ARCH" = hppa2.0w ] + if test "$HP_ARCH" = hppa2.0w then set_cc_for_build @@ -732,7 +742,7 @@ echo "$HP_ARCH"-hp-hpux"$HPUX_REV" exit ;; ia64:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//') echo ia64-hp-hpux"$HPUX_REV" exit ;; 3050*:HI-UX:*:*) @@ -762,7 +772,7 @@ exit (0); } EOF - $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy") && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; @@ -782,7 +792,7 @@ echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then + if test -x /usr/sbin/sysversion ; then echo "$UNAME_MACHINE"-unknown-osf1mk else echo "$UNAME_MACHINE"-unknown-osf1 @@ -831,14 +841,14 @@ echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` - FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` - FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` + FUJITSU_PROC=$(uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz) + FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///') + FUJITSU_REL=$(echo "$UNAME_RELEASE" | sed -e 's/ /_/') echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` - FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///') + FUJITSU_REL=$(echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/') echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) @@ -851,25 +861,25 @@ echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" exit ;; arm:FreeBSD:*:*) - UNAME_PROCESSOR=`uname -p` + UNAME_PROCESSOR=$(uname -p) set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi + echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabi else - echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf + echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabihf fi exit ;; *:FreeBSD:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` + UNAME_PROCESSOR=$(/usr/bin/uname -p) case "$UNAME_PROCESSOR" in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac - echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" + echo "$UNAME_PROCESSOR"-unknown-freebsd"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')" exit ;; i*:CYGWIN*:*) echo "$UNAME_MACHINE"-pc-cygwin @@ -905,15 +915,15 @@ echo x86_64-pc-cygwin exit ;; prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + echo powerpcle-unknown-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')" exit ;; *:GNU:*:*) # the GNU system - echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" + echo "$(echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,')-unknown-$LIBC$(echo "$UNAME_RELEASE"|sed -e 's,/.*$,,')" exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" + echo "$UNAME_MACHINE-unknown-$(echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]")$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')-$LIBC" exit ;; *:Minix:*:*) echo "$UNAME_MACHINE"-unknown-minix @@ -926,7 +936,7 @@ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in + case $(sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null) in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; @@ -985,6 +995,9 @@ k1om:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; m32r*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; @@ -1035,7 +1048,7 @@ #endif #endif EOF - eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`" + eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI')" test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) @@ -1055,7 +1068,7 @@ exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + case $(grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2) in PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; *) echo hppa-unknown-linux-"$LIBC" ;; @@ -1073,7 +1086,7 @@ ppcle:Linux:*:*) echo powerpcle-unknown-linux-"$LIBC" exit ;; - riscv32:Linux:*:* | riscv64:Linux:*:*) + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; s390:Linux:*:* | s390x:Linux:*:*) @@ -1095,7 +1108,17 @@ echo "$UNAME_MACHINE"-dec-linux-"$LIBC" exit ;; x86_64:Linux:*:*) - echo "$UNAME_MACHINE"-pc-linux-"$LIBC" + set_cc_for_build + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_X32 >/dev/null + then + LIBCABI="$LIBC"x32 + fi + fi + echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI" exit ;; xtensa*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" @@ -1135,7 +1158,7 @@ echo "$UNAME_MACHINE"-pc-msdosdjgpp exit ;; i*86:*:4.*:*) - UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` + UNAME_REL=$(echo "$UNAME_RELEASE" | sed 's/\/MP$//') if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" else @@ -1144,7 +1167,7 @@ exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in + case $(/bin/uname -X | grep "^Machine") in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; @@ -1153,10 +1176,10 @@ exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + UNAME_REL=$( (/bin/uname -X|grep Release|sed -e 's/.*= //')) (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 @@ -1206,7 +1229,7 @@ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ @@ -1217,7 +1240,7 @@ NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ @@ -1250,7 +1273,7 @@ exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` + UNAME_MACHINE=$( (uname -p) 2>/dev/null) echo "$UNAME_MACHINE"-sni-sysv4 else echo ns32k-sni-sysv @@ -1284,7 +1307,7 @@ echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then + if test -d /usr/nec; then echo mips-nec-sysv"$UNAME_RELEASE" else echo mips-unknown-sysv"$UNAME_RELEASE" @@ -1332,8 +1355,11 @@ *:Rhapsody:*:*) echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" exit ;; + arm64:Darwin:*:*) + echo aarch64-apple-darwin"$UNAME_RELEASE" + exit ;; *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` + UNAME_PROCESSOR=$(uname -p) case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac @@ -1346,7 +1372,7 @@ else set_cc_for_build fi - if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null @@ -1370,7 +1396,7 @@ echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` + UNAME_PROCESSOR=$(uname -p) if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc @@ -1438,10 +1464,10 @@ echo mips-sei-seiux"$UNAME_RELEASE" exit ;; *:DragonFly:*:*) - echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" + echo "$UNAME_MACHINE"-unknown-dragonfly"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')" exit ;; *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` + UNAME_MACHINE=$( (uname -p) 2>/dev/null) case "$UNAME_MACHINE" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; @@ -1451,13 +1477,13 @@ echo i386-pc-xenix exit ;; i*86:skyos:*:*) - echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" + echo "$UNAME_MACHINE"-pc-skyos"$(echo "$UNAME_RELEASE" | sed -e 's/ .*$//')" exit ;; i*86:rdos:*:*) echo "$UNAME_MACHINE"-pc-rdos exit ;; - i*86:AROS:*:*) - echo "$UNAME_MACHINE"-pc-aros + *:AROS:*:*) + echo "$UNAME_MACHINE"-unknown-aros exit ;; x86_64:VMkernel:*:*) echo "$UNAME_MACHINE"-unknown-esx @@ -1509,7 +1535,7 @@ #define __ARCHITECTURE__ "m68k" #endif int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + version=$( (hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null); if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else @@ -1601,7 +1627,7 @@ } EOF -$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`$dummy` && +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=$($dummy) && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. @@ -1626,9 +1652,15 @@ operating system you are using. If your script is old, overwrite *all* copies of config.guess and config.sub with the latest versions from: - https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess + https://git.savannah.gnu.org/cgit/config.git/plain/config.guess and - https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + https://git.savannah.gnu.org/cgit/config.git/plain/config.sub +EOF + +year=$(echo $timestamp | sed 's,-.*,,') +# shellcheck disable=SC2003 +if test "$(expr "$(date +%Y)" - "$year")" -lt 3 ; then + cat >&2 </dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` +uname -m = $( (uname -m) 2>/dev/null || echo unknown) +uname -r = $( (uname -r) 2>/dev/null || echo unknown) +uname -s = $( (uname -s) 2>/dev/null || echo unknown) +uname -v = $( (uname -v) 2>/dev/null || echo unknown) + +/usr/bin/uname -p = $( (/usr/bin/uname -p) 2>/dev/null) +/bin/uname -X = $( (/bin/uname -X) 2>/dev/null) + +hostinfo = $( (hostinfo) 2>/dev/null) +/bin/universe = $( (/bin/universe) 2>/dev/null) +/usr/bin/arch -k = $( (/usr/bin/arch -k) 2>/dev/null) +/bin/arch = $( (/bin/arch) 2>/dev/null) +/usr/bin/oslevel = $( (/usr/bin/oslevel) 2>/dev/null) +/usr/convex/getsysinfo = $( (/usr/convex/getsysinfo) 2>/dev/null) UNAME_MACHINE = "$UNAME_MACHINE" UNAME_RELEASE = "$UNAME_RELEASE" UNAME_SYSTEM = "$UNAME_SYSTEM" UNAME_VERSION = "$UNAME_VERSION" EOF +fi exit 1 diff -Nru modemmanager-1.14.10/config.h.in modemmanager-1.16.6/config.h.in --- modemmanager-1.14.10/config.h.in 2021-01-16 21:19:54.000000000 +0800 +++ modemmanager-1.16.6/config.h.in 2021-06-06 21:43:42.000000000 +0800 @@ -31,6 +31,9 @@ /* Define if generic plugin is enabled */ #undef ENABLE_PLUGIN_GENERIC +/* Define if gosuncn plugin is enabled */ +#undef ENABLE_PLUGIN_GOSUNCN + /* Define if haier plugin is enabled */ #undef ENABLE_PLUGIN_HAIER @@ -76,6 +79,9 @@ /* Define if pantech plugin is enabled */ #undef ENABLE_PLUGIN_PANTECH +/* Define if qcom-soc plugin is enabled */ +#undef ENABLE_PLUGIN_QCOM_SOC + /* Define if quectel plugin is enabled */ #undef ENABLE_PLUGIN_QUECTEL @@ -142,12 +148,15 @@ /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H +/* Define to 1 if you have the header file. */ +#undef HAVE_MINIX_CONFIG_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H +/* Define to 1 if you have the header file. */ +#undef HAVE_STDIO_H + /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H @@ -166,6 +175,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H +/* Define to 1 if you have the header file. */ +#undef HAVE_WCHAR_H + /* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR @@ -193,28 +205,96 @@ /* Define to the version of this package. */ #undef PACKAGE_VERSION -/* Define to 1 if you have the ANSI C header files. */ +/* Define to 1 if all of the C90 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ #undef STDC_HEADERS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif +/* Enable general extensions on macOS. */ +#ifndef _DARWIN_C_SOURCE +# undef _DARWIN_C_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif -/* Enable threading extensions on Solaris. */ +/* Enable X/Open compliant socket functions that do not require linking + with -lxnet on HP-UX 11.11. */ +#ifndef _HPUX_ALT_XOPEN_SOCKET_API +# undef _HPUX_ALT_XOPEN_SOCKET_API +#endif +/* Identify the host operating system as Minix. + This macro does not affect the system headers' behavior. + A future release of Autoconf may stop defining this macro. */ +#ifndef _MINIX +# undef _MINIX +#endif +/* Enable general extensions on NetBSD. + Enable NetBSD compatibility extensions on Minix. */ +#ifndef _NETBSD_SOURCE +# undef _NETBSD_SOURCE +#endif +/* Enable OpenBSD compatibility extensions on NetBSD. + Oddly enough, this does nothing on OpenBSD. */ +#ifndef _OPENBSD_SOURCE +# undef _OPENBSD_SOURCE +#endif +/* Define to 1 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_SOURCE +# undef _POSIX_SOURCE +#endif +/* Define to 2 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_1_SOURCE +# undef _POSIX_1_SOURCE +#endif +/* Enable POSIX-compatible threading on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif +/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ +#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ +#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ +# undef __STDC_WANT_IEC_60559_BFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ +#ifndef __STDC_WANT_IEC_60559_DFP_EXT__ +# undef __STDC_WANT_IEC_60559_DFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ +#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ +# undef __STDC_WANT_IEC_60559_FUNCS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */ +#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ +# undef __STDC_WANT_IEC_60559_TYPES_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ +#ifndef __STDC_WANT_LIB_EXT2__ +# undef __STDC_WANT_LIB_EXT2__ +#endif +/* Enable extensions specified by ISO/IEC 24747:2009. */ +#ifndef __STDC_WANT_MATH_SPEC_FUNCS__ +# undef __STDC_WANT_MATH_SPEC_FUNCS__ +#endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif -/* Enable general extensions on Solaris. */ -#ifndef __EXTENSIONS__ -# undef __EXTENSIONS__ +/* Enable X/Open extensions. Define to 500 only if necessary + to make mbstate_t available. */ +#ifndef _XOPEN_SOURCE +# undef _XOPEN_SOURCE #endif @@ -262,13 +342,3 @@ /* Define if you want udev support */ #undef WITH_UDEV - -/* Define to 1 if on MINIX. */ -#undef _MINIX - -/* Define to 2 if the system does not provide POSIX.1 features except with - this defined. */ -#undef _POSIX_1_SOURCE - -/* Define to 1 if you need to in order for `stat' and other things to work. */ -#undef _POSIX_SOURCE diff -Nru modemmanager-1.14.10/config.sub modemmanager-1.16.6/config.sub --- modemmanager-1.14.10/config.sub 2021-01-16 21:19:54.000000000 +0800 +++ modemmanager-1.16.6/config.sub 2021-06-06 21:43:43.000000000 +0800 @@ -1,8 +1,8 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2020 Free Software Foundation, Inc. +# Copyright 1992-2021 Free Software Foundation, Inc. -timestamp='2020-01-01' +timestamp='2021-01-08' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -33,7 +33,7 @@ # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: -# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub +# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases @@ -50,7 +50,7 @@ # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. -me=`echo "$0" | sed -e 's,.*/,,'` +me=$(echo "$0" | sed -e 's,.*/,,') usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS @@ -67,7 +67,7 @@ version="\ GNU config.sub ($timestamp) -Copyright 1992-2020 Free Software Foundation, Inc. +Copyright 1992-2021 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -124,28 +124,27 @@ ;; *-*-*-*) basic_machine=$field1-$field2 - os=$field3-$field4 + basic_os=$field3-$field4 ;; *-*-*) # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two # parts maybe_os=$field2-$field3 case $maybe_os in - nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \ - | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \ + nto-qnx* | linux-* | uclinux-uclibc* \ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ | storm-chaos* | os2-emx* | rtmk-nova*) basic_machine=$field1 - os=$maybe_os + basic_os=$maybe_os ;; android-linux) basic_machine=$field1-unknown - os=linux-android + basic_os=linux-android ;; *) basic_machine=$field1-$field2 - os=$field3 + basic_os=$field3 ;; esac ;; @@ -154,7 +153,7 @@ case $field1-$field2 in decstation-3100) basic_machine=mips-dec - os= + basic_os= ;; *-*) # Second component is usually, but not always the OS @@ -162,7 +161,7 @@ # Prevent following clause from handling this valid os sun*os*) basic_machine=$field1 - os=$field2 + basic_os=$field2 ;; # Manufacturers dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ @@ -175,11 +174,11 @@ | microblaze* | sim | cisco \ | oki | wec | wrs | winbond) basic_machine=$field1-$field2 - os= + basic_os= ;; *) basic_machine=$field1 - os=$field2 + basic_os=$field2 ;; esac ;; @@ -191,447 +190,451 @@ case $field1 in 386bsd) basic_machine=i386-pc - os=bsd + basic_os=bsd ;; a29khif) basic_machine=a29k-amd - os=udi + basic_os=udi ;; adobe68k) basic_machine=m68010-adobe - os=scout + basic_os=scout ;; alliant) basic_machine=fx80-alliant - os= + basic_os= ;; altos | altos3068) basic_machine=m68k-altos - os= + basic_os= ;; am29k) basic_machine=a29k-none - os=bsd + basic_os=bsd ;; amdahl) basic_machine=580-amdahl - os=sysv + basic_os=sysv ;; amiga) basic_machine=m68k-unknown - os= + basic_os= ;; amigaos | amigados) basic_machine=m68k-unknown - os=amigaos + basic_os=amigaos ;; amigaunix | amix) basic_machine=m68k-unknown - os=sysv4 + basic_os=sysv4 ;; apollo68) basic_machine=m68k-apollo - os=sysv + basic_os=sysv ;; apollo68bsd) basic_machine=m68k-apollo - os=bsd + basic_os=bsd ;; aros) basic_machine=i386-pc - os=aros + basic_os=aros ;; aux) basic_machine=m68k-apple - os=aux + basic_os=aux ;; balance) basic_machine=ns32k-sequent - os=dynix + basic_os=dynix ;; blackfin) basic_machine=bfin-unknown - os=linux + basic_os=linux ;; cegcc) basic_machine=arm-unknown - os=cegcc + basic_os=cegcc ;; convex-c1) basic_machine=c1-convex - os=bsd + basic_os=bsd ;; convex-c2) basic_machine=c2-convex - os=bsd + basic_os=bsd ;; convex-c32) basic_machine=c32-convex - os=bsd + basic_os=bsd ;; convex-c34) basic_machine=c34-convex - os=bsd + basic_os=bsd ;; convex-c38) basic_machine=c38-convex - os=bsd + basic_os=bsd ;; cray) basic_machine=j90-cray - os=unicos + basic_os=unicos ;; crds | unos) basic_machine=m68k-crds - os= + basic_os= ;; da30) basic_machine=m68k-da30 - os= + basic_os= ;; decstation | pmax | pmin | dec3100 | decstatn) basic_machine=mips-dec - os= + basic_os= ;; delta88) basic_machine=m88k-motorola - os=sysv3 + basic_os=sysv3 ;; dicos) basic_machine=i686-pc - os=dicos + basic_os=dicos ;; djgpp) basic_machine=i586-pc - os=msdosdjgpp + basic_os=msdosdjgpp ;; ebmon29k) basic_machine=a29k-amd - os=ebmon + basic_os=ebmon ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson - os=ose + basic_os=ose ;; gmicro) basic_machine=tron-gmicro - os=sysv + basic_os=sysv ;; go32) basic_machine=i386-pc - os=go32 + basic_os=go32 ;; h8300hms) basic_machine=h8300-hitachi - os=hms + basic_os=hms ;; h8300xray) basic_machine=h8300-hitachi - os=xray + basic_os=xray ;; h8500hms) basic_machine=h8500-hitachi - os=hms + basic_os=hms ;; harris) basic_machine=m88k-harris - os=sysv3 + basic_os=sysv3 ;; hp300 | hp300hpux) basic_machine=m68k-hp - os=hpux + basic_os=hpux ;; hp300bsd) basic_machine=m68k-hp - os=bsd + basic_os=bsd ;; hppaosf) basic_machine=hppa1.1-hp - os=osf + basic_os=osf ;; hppro) basic_machine=hppa1.1-hp - os=proelf + basic_os=proelf ;; i386mach) basic_machine=i386-mach - os=mach + basic_os=mach ;; isi68 | isi) basic_machine=m68k-isi - os=sysv + basic_os=sysv ;; m68knommu) basic_machine=m68k-unknown - os=linux + basic_os=linux ;; magnum | m3230) basic_machine=mips-mips - os=sysv + basic_os=sysv ;; merlin) basic_machine=ns32k-utek - os=sysv + basic_os=sysv ;; mingw64) basic_machine=x86_64-pc - os=mingw64 + basic_os=mingw64 ;; mingw32) basic_machine=i686-pc - os=mingw32 + basic_os=mingw32 ;; mingw32ce) basic_machine=arm-unknown - os=mingw32ce + basic_os=mingw32ce ;; monitor) basic_machine=m68k-rom68k - os=coff + basic_os=coff ;; morphos) basic_machine=powerpc-unknown - os=morphos + basic_os=morphos ;; moxiebox) basic_machine=moxie-unknown - os=moxiebox + basic_os=moxiebox ;; msdos) basic_machine=i386-pc - os=msdos + basic_os=msdos ;; msys) basic_machine=i686-pc - os=msys + basic_os=msys ;; mvs) basic_machine=i370-ibm - os=mvs + basic_os=mvs ;; nacl) basic_machine=le32-unknown - os=nacl + basic_os=nacl ;; ncr3000) basic_machine=i486-ncr - os=sysv4 + basic_os=sysv4 ;; netbsd386) basic_machine=i386-pc - os=netbsd + basic_os=netbsd ;; netwinder) basic_machine=armv4l-rebel - os=linux + basic_os=linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony - os=newsos + basic_os=newsos ;; news1000) basic_machine=m68030-sony - os=newsos + basic_os=newsos ;; necv70) basic_machine=v70-nec - os=sysv + basic_os=sysv ;; nh3000) basic_machine=m68k-harris - os=cxux + basic_os=cxux ;; nh[45]000) basic_machine=m88k-harris - os=cxux + basic_os=cxux ;; nindy960) basic_machine=i960-intel - os=nindy + basic_os=nindy ;; mon960) basic_machine=i960-intel - os=mon960 + basic_os=mon960 ;; nonstopux) basic_machine=mips-compaq - os=nonstopux + basic_os=nonstopux ;; os400) basic_machine=powerpc-ibm - os=os400 + basic_os=os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson - os=ose + basic_os=ose ;; os68k) basic_machine=m68k-none - os=os68k + basic_os=os68k ;; paragon) basic_machine=i860-intel - os=osf + basic_os=osf ;; parisc) basic_machine=hppa-unknown - os=linux + basic_os=linux + ;; + psp) + basic_machine=mipsallegrexel-sony + basic_os=psp ;; pw32) basic_machine=i586-unknown - os=pw32 + basic_os=pw32 ;; rdos | rdos64) basic_machine=x86_64-pc - os=rdos + basic_os=rdos ;; rdos32) basic_machine=i386-pc - os=rdos + basic_os=rdos ;; rom68k) basic_machine=m68k-rom68k - os=coff + basic_os=coff ;; sa29200) basic_machine=a29k-amd - os=udi + basic_os=udi ;; sei) basic_machine=mips-sei - os=seiux + basic_os=seiux ;; sequent) basic_machine=i386-sequent - os= + basic_os= ;; sps7) basic_machine=m68k-bull - os=sysv2 + basic_os=sysv2 ;; st2000) basic_machine=m68k-tandem - os= + basic_os= ;; stratus) basic_machine=i860-stratus - os=sysv4 + basic_os=sysv4 ;; sun2) basic_machine=m68000-sun - os= + basic_os= ;; sun2os3) basic_machine=m68000-sun - os=sunos3 + basic_os=sunos3 ;; sun2os4) basic_machine=m68000-sun - os=sunos4 + basic_os=sunos4 ;; sun3) basic_machine=m68k-sun - os= + basic_os= ;; sun3os3) basic_machine=m68k-sun - os=sunos3 + basic_os=sunos3 ;; sun3os4) basic_machine=m68k-sun - os=sunos4 + basic_os=sunos4 ;; sun4) basic_machine=sparc-sun - os= + basic_os= ;; sun4os3) basic_machine=sparc-sun - os=sunos3 + basic_os=sunos3 ;; sun4os4) basic_machine=sparc-sun - os=sunos4 + basic_os=sunos4 ;; sun4sol2) basic_machine=sparc-sun - os=solaris2 + basic_os=solaris2 ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun - os= + basic_os= ;; sv1) basic_machine=sv1-cray - os=unicos + basic_os=unicos ;; symmetry) basic_machine=i386-sequent - os=dynix + basic_os=dynix ;; t3e) basic_machine=alphaev5-cray - os=unicos + basic_os=unicos ;; t90) basic_machine=t90-cray - os=unicos + basic_os=unicos ;; toad1) basic_machine=pdp10-xkl - os=tops20 + basic_os=tops20 ;; tpf) basic_machine=s390x-ibm - os=tpf + basic_os=tpf ;; udi29k) basic_machine=a29k-amd - os=udi + basic_os=udi ;; ultra3) basic_machine=a29k-nyu - os=sym1 + basic_os=sym1 ;; v810 | necv810) basic_machine=v810-nec - os=none + basic_os=none ;; vaxv) basic_machine=vax-dec - os=sysv + basic_os=sysv ;; vms) basic_machine=vax-dec - os=vms + basic_os=vms ;; vsta) basic_machine=i386-pc - os=vsta + basic_os=vsta ;; vxworks960) basic_machine=i960-wrs - os=vxworks + basic_os=vxworks ;; vxworks68) basic_machine=m68k-wrs - os=vxworks + basic_os=vxworks ;; vxworks29k) basic_machine=a29k-wrs - os=vxworks + basic_os=vxworks ;; xbox) basic_machine=i686-pc - os=mingw32 + basic_os=mingw32 ;; ymp) basic_machine=ymp-cray - os=unicos + basic_os=unicos ;; *) basic_machine=$1 - os= + basic_os= ;; esac ;; @@ -683,17 +686,17 @@ bluegene*) cpu=powerpc vendor=ibm - os=cnk + basic_os=cnk ;; decsystem10* | dec10*) cpu=pdp10 vendor=dec - os=tops10 + basic_os=tops10 ;; decsystem20* | dec20*) cpu=pdp10 vendor=dec - os=tops20 + basic_os=tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) @@ -703,7 +706,7 @@ dpx2*) cpu=m68k vendor=bull - os=sysv3 + basic_os=sysv3 ;; encore | umax | mmax) cpu=ns32k @@ -712,7 +715,7 @@ elxsi) cpu=elxsi vendor=elxsi - os=${os:-bsd} + basic_os=${basic_os:-bsd} ;; fx2800) cpu=i860 @@ -725,7 +728,7 @@ h3050r* | hiux*) cpu=hppa1.1 vendor=hitachi - os=hiuxwe2 + basic_os=hiuxwe2 ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) cpu=hppa1.0 @@ -766,38 +769,38 @@ vendor=hp ;; i*86v32) - cpu=`echo "$1" | sed -e 's/86.*/86/'` + cpu=$(echo "$1" | sed -e 's/86.*/86/') vendor=pc - os=sysv32 + basic_os=sysv32 ;; i*86v4*) - cpu=`echo "$1" | sed -e 's/86.*/86/'` + cpu=$(echo "$1" | sed -e 's/86.*/86/') vendor=pc - os=sysv4 + basic_os=sysv4 ;; i*86v) - cpu=`echo "$1" | sed -e 's/86.*/86/'` + cpu=$(echo "$1" | sed -e 's/86.*/86/') vendor=pc - os=sysv + basic_os=sysv ;; i*86sol2) - cpu=`echo "$1" | sed -e 's/86.*/86/'` + cpu=$(echo "$1" | sed -e 's/86.*/86/') vendor=pc - os=solaris2 + basic_os=solaris2 ;; j90 | j90-cray) cpu=j90 vendor=cray - os=${os:-unicos} + basic_os=${basic_os:-unicos} ;; iris | iris4d) cpu=mips vendor=sgi - case $os in + case $basic_os in irix*) ;; *) - os=irix4 + basic_os=irix4 ;; esac ;; @@ -808,26 +811,26 @@ *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) cpu=m68k vendor=atari - os=mint + basic_os=mint ;; news-3600 | risc-news) cpu=mips vendor=sony - os=newsos + basic_os=newsos ;; next | m*-next) cpu=m68k vendor=next - case $os in + case $basic_os in openstep*) ;; nextstep*) ;; ns2*) - os=nextstep2 + basic_os=nextstep2 ;; *) - os=nextstep3 + basic_os=nextstep3 ;; esac ;; @@ -838,12 +841,12 @@ op50n-* | op60c-*) cpu=hppa1.1 vendor=oki - os=proelf + basic_os=proelf ;; pa-hitachi) cpu=hppa1.1 vendor=hitachi - os=hiuxwe2 + basic_os=hiuxwe2 ;; pbd) cpu=sparc @@ -880,12 +883,12 @@ sde) cpu=mipsisa32 vendor=sde - os=${os:-elf} + basic_os=${basic_os:-elf} ;; simso-wrs) cpu=sparclite vendor=wrs - os=vxworks + basic_os=vxworks ;; tower | tower-32) cpu=m68k @@ -902,7 +905,7 @@ w89k-*) cpu=hppa1.1 vendor=winbond - os=proelf + basic_os=proelf ;; none) cpu=none @@ -914,7 +917,7 @@ ;; leon-*|leon[3-9]-*) cpu=sparc - vendor=`echo "$basic_machine" | sed 's/-.*//'` + vendor=$(echo "$basic_machine" | sed 's/-.*//') ;; *-*) @@ -955,11 +958,11 @@ # some cases the only manufacturer, in others, it is the most popular. craynv-unknown) vendor=cray - os=${os:-unicosmp} + basic_os=${basic_os:-unicosmp} ;; c90-unknown | c90-cray) vendor=cray - os=${os:-unicos} + basic_os=${Basic_os:-unicos} ;; fx80-unknown) vendor=alliant @@ -1003,7 +1006,7 @@ dpx20-unknown | dpx20-bull) cpu=rs6000 vendor=bull - os=${os:-bosx} + basic_os=${basic_os:-bosx} ;; # Here we normalize CPU types irrespective of the vendor @@ -1012,7 +1015,7 @@ ;; blackfin-*) cpu=bfin - os=linux + basic_os=linux ;; c54x-*) cpu=tic54x @@ -1025,7 +1028,7 @@ ;; e500v[12]-*) cpu=powerpc - os=$os"spe" + basic_os=${basic_os}"spe" ;; mips3*-*) cpu=mips64 @@ -1035,7 +1038,7 @@ ;; m68knommu-*) cpu=m68k - os=linux + basic_os=linux ;; m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) cpu=s12z @@ -1045,7 +1048,7 @@ ;; parisc-*) cpu=hppa - os=linux + basic_os=linux ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) cpu=i586 @@ -1081,7 +1084,7 @@ cpu=mipsisa64sb1el ;; sh5e[lb]-*) - cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` + cpu=$(echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/') ;; spur-*) cpu=spur @@ -1099,13 +1102,16 @@ cpu=x86_64 ;; xscale-* | xscalee[bl]-*) - cpu=`echo "$cpu" | sed 's/^xscale/arm/'` + cpu=$(echo "$cpu" | sed 's/^xscale/arm/') + ;; + arm64-*) + cpu=aarch64 ;; # Recognize the canonical CPU Types that limit and/or modify the # company names they are paired with. cr16-*) - os=${os:-elf} + basic_os=${basic_os:-elf} ;; crisv32-* | etraxfs*-*) cpu=crisv32 @@ -1116,7 +1122,7 @@ vendor=axis ;; crx-*) - os=${os:-elf} + basic_os=${basic_os:-elf} ;; neo-tandem) cpu=neo @@ -1138,16 +1144,12 @@ cpu=nsx vendor=tandem ;; - s390-*) - cpu=s390 - vendor=ibm - ;; - s390x-*) - cpu=s390x - vendor=ibm + mipsallegrexel-sony) + cpu=mipsallegrexel + vendor=sony ;; tile*-*) - os=${os:-linux-gnu} + basic_os=${basic_os:-linux-gnu} ;; *) @@ -1164,7 +1166,7 @@ | am33_2.0 \ | amdgcn \ | arc | arceb \ - | arm | arm[lb]e | arme[lb] | armv* \ + | arm | arm[lb]e | arme[lb] | armv* \ | avr | avr32 \ | asmjs \ | ba \ @@ -1183,6 +1185,7 @@ | k1om \ | le32 | le64 \ | lm32 \ + | loongarch32 | loongarch64 | loongarchx32 \ | m32c | m32r | m32rle \ | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ @@ -1227,8 +1230,9 @@ | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ | pru \ | pyramid \ - | riscv | riscv32 | riscv64 \ + | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ | rl78 | romp | rs6000 | rx \ + | s390 | s390x \ | score \ | sh | shl \ | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ @@ -1238,6 +1242,7 @@ | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ | spu \ | tahoe \ + | thumbv7* \ | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ | tron \ | ubicom32 \ @@ -1275,8 +1280,47 @@ # Decode manufacturer-specific aliases for certain operating systems. -if [ x$os != x ] +if test x$basic_os != x then + +# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just +# set os. +case $basic_os in + gnu/linux*) + kernel=linux + os=$(echo $basic_os | sed -e 's|gnu/linux|gnu|') + ;; + os2-emx) + kernel=os2 + os=$(echo $basic_os | sed -e 's|os2-emx|emx|') + ;; + nto-qnx*) + kernel=nto + os=$(echo $basic_os | sed -e 's|nto-qnx|qnx|') + ;; + *-*) + # shellcheck disable=SC2162 + IFS="-" read kernel os <&2 - exit 1 + # No normalization, but not necessarily accepted, that comes below. ;; esac + else # Here we handle the default operating systems that come with various machines. @@ -1528,6 +1499,7 @@ # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. +kernel= case $cpu-$vendor in score-*) os=elf @@ -1539,7 +1511,8 @@ os=riscix1.2 ;; arm*-rebel) - os=linux + kernel=linux + os=gnu ;; arm*-semi) os=aout @@ -1705,84 +1678,178 @@ os=none ;; esac + fi +# Now, validate our (potentially fixed-up) OS. +case $os in + # Sometimes we do "kernel-libc", so those need to count as OSes. + musl* | newlib* | uclibc*) + ;; + # Likewise for "kernel-abi" + eabi* | gnueabi*) + ;; + # VxWorks passes extra cpu info in the 4th filed. + simlinux | simwindows | spe) + ;; + # Now accept the basic system types. + # The portable systems comes first. + # Each alternative MUST end in a * to match a version number. + gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ + | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ + | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ + | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ + | hiux* | abug | nacl* | netware* | windows* \ + | os9* | macos* | osx* | ios* \ + | mpw* | magic* | mmixware* | mon960* | lnews* \ + | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ + | aos* | aros* | cloudabi* | sortix* | twizzler* \ + | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ + | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ + | mirbsd* | netbsd* | dicos* | openedition* | ose* \ + | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \ + | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ + | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ + | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ + | udi* | lites* | ieee* | go32* | aux* | hcos* \ + | chorusrdb* | cegcc* | glidix* \ + | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ + | midipix* | mingw32* | mingw64* | mint* \ + | uxpv* | beos* | mpeix* | udk* | moxiebox* \ + | interix* | uwin* | mks* | rhapsody* | darwin* \ + | openstep* | oskit* | conix* | pw32* | nonstopux* \ + | storm-chaos* | tops10* | tenex* | tops20* | its* \ + | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ + | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ + | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ + | skyos* | haiku* | rdos* | toppers* | drops* | es* \ + | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ + | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ + | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx*) + ;; + # This one is extra strict with allowed versions + sco3.2v2 | sco3.2v[4-9]* | sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + ;; + none) + ;; + *) + echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 + exit 1 + ;; +esac + +# As a final step for OS-related things, validate the OS-kernel combination +# (given a valid OS), if there is a kernel. +case $kernel-$os in + linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* ) + ;; + uclinux-uclibc* ) + ;; + -dietlibc* | -newlib* | -musl* | -uclibc* ) + # These are just libc implementations, not actual OSes, and thus + # require a kernel. + echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 + exit 1 + ;; + kfreebsd*-gnu* | kopensolaris*-gnu*) + ;; + vxworks-simlinux | vxworks-simwindows | vxworks-spe) + ;; + nto-qnx*) + ;; + os2-emx) + ;; + *-eabi* | *-gnueabi*) + ;; + -*) + # Blank kernel with real OS is always fine. + ;; + *-*) + echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 + exit 1 + ;; +esac + # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. case $vendor in unknown) - case $os in - riscix*) + case $cpu-$os in + *-riscix*) vendor=acorn ;; - sunos*) + *-sunos*) vendor=sun ;; - cnk*|-aix*) + *-cnk* | *-aix*) vendor=ibm ;; - beos*) + *-beos*) vendor=be ;; - hpux*) + *-hpux*) vendor=hp ;; - mpeix*) + *-mpeix*) vendor=hp ;; - hiux*) + *-hiux*) vendor=hitachi ;; - unos*) + *-unos*) vendor=crds ;; - dgux*) + *-dgux*) vendor=dg ;; - luna*) + *-luna*) vendor=omron ;; - genix*) + *-genix*) vendor=ns ;; - clix*) + *-clix*) vendor=intergraph ;; - mvs* | opened*) + *-mvs* | *-opened*) + vendor=ibm + ;; + *-os400*) vendor=ibm ;; - os400*) + s390-* | s390x-*) vendor=ibm ;; - ptx*) + *-ptx*) vendor=sequent ;; - tpf*) + *-tpf*) vendor=ibm ;; - vxsim* | vxworks* | windiss*) + *-vxsim* | *-vxworks* | *-windiss*) vendor=wrs ;; - aux*) + *-aux*) vendor=apple ;; - hms*) + *-hms*) vendor=hitachi ;; - mpw* | macos*) + *-mpw* | *-macos*) vendor=apple ;; - *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) + *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) vendor=atari ;; - vos*) + *-vos*) vendor=stratus ;; esac ;; esac -echo "$cpu-$vendor-$os" +echo "$cpu-$vendor-${kernel:+$kernel-}$os" exit # Local variables: diff -Nru modemmanager-1.14.10/configure modemmanager-1.16.6/configure --- modemmanager-1.14.10/configure 2021-01-16 21:19:53.000000000 +0800 +++ modemmanager-1.16.6/configure 2021-06-06 21:43:42.000000000 +0800 @@ -1,11 +1,12 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for ModemManager 1.14.10. +# Generated by GNU Autoconf 2.71 for ModemManager 1.16.6. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Inc. # # # This configure script is free software; the Free Software Foundation @@ -16,14 +17,16 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -33,46 +36,46 @@ fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -81,13 +84,6 @@ fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -96,8 +92,12 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS @@ -109,30 +109,10 @@ as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. @@ -154,20 +134,22 @@ exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else +else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( @@ -187,18 +169,20 @@ as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : -else +else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' @@ -206,31 +190,40 @@ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" - if (eval "$as_required") 2>/dev/null; then : + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null +then : as_have_required=yes -else +else $as_nop as_have_required=no fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : -else +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base + as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : break 2 fi fi @@ -238,14 +231,21 @@ esac as_found=false done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } IFS=$as_save_IFS +if $as_found +then : +else $as_nop + if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi +fi - if test "x$CONFIG_SHELL" != x; then : + + if test "x$CONFIG_SHELL" != x +then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also @@ -263,18 +263,19 @@ exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else - $as_echo "$0: Please tell bug-autoconf@gnu.org and + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and $0: https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or @@ -303,6 +304,7 @@ } as_unset=as_fn_unset + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -320,6 +322,14 @@ as_fn_set_status $1 exit $1 } # as_fn_exit +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_mkdir_p # ------------- @@ -334,7 +344,7 @@ as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -343,7 +353,7 @@ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -382,12 +392,13 @@ # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -399,18 +410,27 @@ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- @@ -422,9 +442,9 @@ as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error @@ -451,7 +471,7 @@ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -495,7 +515,7 @@ s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall @@ -509,6 +529,10 @@ exit } + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -522,6 +546,13 @@ ECHO_N='-n';; esac +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + + rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -591,47 +622,43 @@ # Identity of this package. PACKAGE_NAME='ModemManager' PACKAGE_TARNAME='ModemManager' -PACKAGE_VERSION='1.14.10' -PACKAGE_STRING='ModemManager 1.14.10' +PACKAGE_VERSION='1.16.6' +PACKAGE_STRING='ModemManager 1.16.6' PACKAGE_BUGREPORT='https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include +#include +#ifdef HAVE_STDIO_H +# include #endif -#ifdef STDC_HEADERS +#ifdef HAVE_STDLIB_H # include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif #endif #ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif # include #endif -#ifdef HAVE_STRINGS_H -# include -#endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif #ifdef HAVE_UNISTD_H # include #endif" +ac_header_c_list= gt_needs= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE @@ -677,6 +704,8 @@ ENABLE_PLUGIN_SAMSUNG_TRUE ENABLE_PLUGIN_QUECTEL_FALSE ENABLE_PLUGIN_QUECTEL_TRUE +ENABLE_PLUGIN_QCOM_SOC_FALSE +ENABLE_PLUGIN_QCOM_SOC_TRUE ENABLE_PLUGIN_PANTECH_FALSE ENABLE_PLUGIN_PANTECH_TRUE ENABLE_PLUGIN_OPTION_HSO_FALSE @@ -707,6 +736,8 @@ ENABLE_PLUGIN_HUAWEI_TRUE ENABLE_PLUGIN_HAIER_FALSE ENABLE_PLUGIN_HAIER_TRUE +ENABLE_PLUGIN_GOSUNCN_FALSE +ENABLE_PLUGIN_GOSUNCN_TRUE ENABLE_PLUGIN_FOXCONN_FALSE ENABLE_PLUGIN_FOXCONN_TRUE ENABLE_PLUGIN_FIBOCOM_FALSE @@ -745,6 +776,8 @@ WITH_SYSTEMD_JOURNAL_TRUE WITH_SYSTEMD_SUSPEND_RESUME_FALSE WITH_SYSTEMD_SUSPEND_RESUME_TRUE +LIBELOGIND_LIBS +LIBELOGIND_CFLAGS LIBSYSTEMD_LOGIN_LIBS LIBSYSTEMD_LOGIN_CFLAGS LIBSYSTEMD_LIBS @@ -799,6 +832,7 @@ LTLIBICONV LIBICONV INTL_MACOSX_LIBS +CPP XGETTEXT_EXTRA_OPTIONS MSGMERGE XGETTEXT_015 @@ -859,6 +893,8 @@ DUMPBIN LD FGREP +EGREP +GREP SED host_os host_vendor @@ -869,9 +905,6 @@ build_cpu build LIBTOOL -EGREP -GREP -CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE @@ -937,6 +970,7 @@ docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -1006,6 +1040,7 @@ enable_plugin_dlink enable_plugin_fibocom enable_plugin_foxconn +enable_plugin_gosuncn enable_plugin_haier enable_plugin_huawei enable_plugin_iridium @@ -1021,6 +1056,7 @@ enable_plugin_option enable_plugin_option_hso enable_plugin_pantech +enable_plugin_qcom_soc enable_plugin_quectel enable_plugin_samsung enable_plugin_sierra_legacy @@ -1043,13 +1079,13 @@ LDFLAGS LIBS CPPFLAGS -CPP LT_SYS_LIBRARY_PATH PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR GTKDOC_DEPS_CFLAGS GTKDOC_DEPS_LIBS +CPP MM_CFLAGS MM_LIBS LIBMM_GLIB_CFLAGS @@ -1062,6 +1098,8 @@ LIBSYSTEMD_LIBS LIBSYSTEMD_LOGIN_CFLAGS LIBSYSTEMD_LOGIN_LIBS +LIBELOGIND_CFLAGS +LIBELOGIND_LIBS POLKIT_CFLAGS POLKIT_LIBS MBIM_CFLAGS @@ -1106,6 +1144,7 @@ sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1135,8 +1174,6 @@ *) ac_optarg=yes ;; esac - # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; @@ -1177,9 +1214,9 @@ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -1203,9 +1240,9 @@ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -1358,6 +1395,15 @@ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1407,9 +1453,9 @@ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1423,9 +1469,9 @@ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1469,9 +1515,9 @@ *) # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; @@ -1487,7 +1533,7 @@ case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi @@ -1495,7 +1541,7 @@ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1551,7 +1597,7 @@ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | +printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -1608,7 +1654,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures ModemManager 1.14.10 to adapt to many kinds of systems. +\`configure' configures ModemManager 1.16.6 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1648,6 +1694,7 @@ --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1678,7 +1725,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of ModemManager 1.14.10:";; + short | recursive ) echo "Configuration of ModemManager 1.16.6:";; esac cat <<\_ACEOF @@ -1726,6 +1773,7 @@ --enable-plugin-dlink Build dlink plugin --enable-plugin-fibocom Build fibocom plugin --enable-plugin-foxconn Build foxconn plugin + --enable-plugin-gosuncn Build gosuncn plugin --enable-plugin-haier Build haier plugin --enable-plugin-huawei Build huawei plugin --enable-plugin-iridium Build iridium plugin @@ -1746,6 +1794,8 @@ --enable-plugin-option-hso Build option-hso plugin --enable-plugin-pantech Build pantech plugin + --enable-plugin-qcom-soc + Build qcom-soc plugin --enable-plugin-quectel Build quectel plugin --enable-plugin-samsung Build samsung plugin --enable-plugin-sierra-legacy @@ -1808,7 +1858,6 @@ LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory - CPP C preprocessor LT_SYS_LIBRARY_PATH User-defined run-time library search path. PKG_CONFIG path to pkg-config utility @@ -1820,6 +1869,7 @@ C compiler flags for GTKDOC_DEPS, overriding pkg-config GTKDOC_DEPS_LIBS linker flags for GTKDOC_DEPS, overriding pkg-config + CPP C preprocessor MM_CFLAGS C compiler flags for MM, overriding pkg-config MM_LIBS linker flags for MM, overriding pkg-config LIBMM_GLIB_CFLAGS @@ -1840,6 +1890,10 @@ C compiler flags for LIBSYSTEMD_LOGIN, overriding pkg-config LIBSYSTEMD_LOGIN_LIBS linker flags for LIBSYSTEMD_LOGIN, overriding pkg-config + LIBELOGIND_CFLAGS + C compiler flags for LIBELOGIND, overriding pkg-config + LIBELOGIND_LIBS + linker flags for LIBELOGIND, overriding pkg-config POLKIT_CFLAGS C compiler flags for POLKIT, overriding pkg-config POLKIT_LIBS linker flags for POLKIT, overriding pkg-config @@ -1867,9 +1921,9 @@ case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -1897,7 +1951,8 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive @@ -1905,7 +1960,7 @@ echo && $SHELL "$ac_srcdir/configure" --help=recursive else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done @@ -1914,10 +1969,10 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -ModemManager configure 1.14.10 -generated by GNU Autoconf 2.69 +ModemManager configure 1.16.6 +generated by GNU Autoconf 2.71 -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1934,14 +1989,14 @@ ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext + rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1949,14 +2004,15 @@ cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err - } && test -s conftest.$ac_objext; then : + } && test -s conftest.$ac_objext +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1966,176 +2022,6 @@ } # ac_fn_c_try_compile -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## ---------------------------------------------------------------------------------- ## -## Report this to https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues ## -## ---------------------------------------------------------------------------------- ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in @@ -2143,26 +2029,28 @@ ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$3=yes" -else +else $as_nop eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile @@ -2173,14 +2061,14 @@ ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -2188,17 +2076,18 @@ cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext - }; then : + } +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -2219,11 +2108,12 @@ ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. @@ -2231,16 +2121,9 @@ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif + which can conflict with char $2 (); below. */ +#include #undef $2 /* Override any GCC internal prototype to avoid an error. @@ -2258,35 +2141,137 @@ #endif int -main () +main (void) { return $2 (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$3=yes" -else +else $as_nop eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that +# executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: program exited with status $ac_status" >&5 + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by ModemManager $as_me 1.14.10, which was -generated by GNU Autoconf 2.69. Invocation command line was +It was created by ModemManager $as_me 1.16.6, which was +generated by GNU Autoconf 2.71. Invocation command line was - $ $0 $@ + $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log @@ -2319,8 +2304,12 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS @@ -2355,7 +2344,7 @@ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; @@ -2390,11 +2379,13 @@ # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo - $as_echo "## ---------------- ## + printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo @@ -2405,8 +2396,8 @@ case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -2430,7 +2421,7 @@ ) echo - $as_echo "## ----------------- ## + printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo @@ -2438,14 +2429,14 @@ do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## + printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo @@ -2453,15 +2444,15 @@ do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then - $as_echo "## ----------- ## + printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo @@ -2469,8 +2460,8 @@ echo fi test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && @@ -2484,63 +2475,48 @@ # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h -$as_echo "/* confdefs.h */" > confdefs.h +printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF +printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF +printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF +printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF +printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF +printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF +printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac + ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" + +for ac_site_file in $ac_site_files do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} + case $ac_site_file in #( + */*) : + ;; #( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi @@ -2550,20 +2526,437 @@ # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Does the compiler advertise C89 conformance? + Do not test the value of __STDC__, because some compilers set it to 0 + while being otherwise adequately conformant. */ +#if !defined __STDC__ +# error "Compiler does not advertise C89 conformance" +#endif + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + as an "x". The following induces an error, until -std is added to get + proper ANSI mode. Curiously \x00 != x always comes out true, for an + array size at least. It is necessary to write \x00 == 0 to get something + that is true only with -std. */ +int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) '\''x'\'' +int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), + int, int);' + +# Test code for whether the C compiler supports C89 (body of main). +ac_c_conftest_c89_main=' +ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); +' + +# Test code for whether the C compiler supports C99 (global declarations) +ac_c_conftest_c99_globals=' +// Does the compiler advertise C99 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# error "Compiler does not advertise C99 conformance" +#endif + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +// dprintf is used instead of fprintf to avoid needing to declare +// FILE and stderr. +#define debug(...) dprintf (2, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + #error "your preprocessor is broken" +#endif +#if BIG_OK +#else + #error "your preprocessor is broken" +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static bool +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str = ""; + int number = 0; + float fnumber = 0; + + while (*format) + { + switch (*format++) + { + case '\''s'\'': // string + str = va_arg (args_copy, const char *); + break; + case '\''d'\'': // int + number = va_arg (args_copy, int); + break; + case '\''f'\'': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); + + return *str && number && fnumber; +} +' + +# Test code for whether the C compiler supports C99 (body of main). +ac_c_conftest_c99_main=' + // Check bool. + _Bool success = false; + success |= (argc != 0); + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[0] = argv[0][0]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || dynamic_array[ni.number - 1] != 543); +' + +# Test code for whether the C compiler supports C11 (global declarations) +ac_c_conftest_c11_globals=' +// Does the compiler advertise C11 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L +# error "Compiler does not advertise C11 conformance" +#endif + +// Check _Alignas. +char _Alignas (double) aligned_as_double; +char _Alignas (0) no_special_alignment; +extern char aligned_as_int; +char _Alignas (0) _Alignas (int) aligned_as_int; + +// Check _Alignof. +enum +{ + int_alignment = _Alignof (int), + int_array_alignment = _Alignof (int[100]), + char_alignment = _Alignof (char) +}; +_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); + +// Check _Noreturn. +int _Noreturn does_not_return (void) { for (;;) continue; } + +// Check _Static_assert. +struct test_static_assert +{ + int x; + _Static_assert (sizeof (int) <= sizeof (long int), + "_Static_assert does not work in struct"); + long int y; +}; + +// Check UTF-8 literals. +#define u8 syntax error! +char const utf8_literal[] = u8"happens to be ASCII" "another string"; + +// Check duplicate typedefs. +typedef long *long_ptr; +typedef long int *long_ptr; +typedef long_ptr long_ptr; + +// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. +struct anonymous +{ + union { + struct { int i; int j; }; + struct { int k; long int l; } w; + }; + int m; +} v1; +' + +# Test code for whether the C compiler supports C11 (body of main). +ac_c_conftest_c11_main=' + _Static_assert ((offsetof (struct anonymous, i) + == offsetof (struct anonymous, w.k)), + "Anonymous union alignment botch"); + v1.i = 2; + v1.w.k = 5; + ok |= v1.i != 5; +' + +# Test code for whether the C compiler supports C11 (complete). +ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} +${ac_c_conftest_c11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + ${ac_c_conftest_c11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C99 (complete). +ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (complete). +ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + return ok; +} +" + +as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" +as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" +as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" +as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H" +as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H" gt_needs="$gt_needs " + +# Auxiliary files required by this configure script. +ac_aux_files="config.rpath config.guess config.sub ltmain.sh compile missing install-sh" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_configure="$SHELL ${ac_aux_dir}configure" +fi + # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false @@ -2574,12 +2967,12 @@ eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) @@ -2588,24 +2981,24 @@ ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in @@ -2615,11 +3008,12 @@ fi done if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' + and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## @@ -2634,36 +3028,9 @@ am__api_version='1.16' -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - -# Find a good install program. We prefer a C program (faster), + # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install @@ -2677,20 +3044,25 @@ # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in #(( + ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; @@ -2700,13 +3072,13 @@ # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else @@ -2714,12 +3086,12 @@ echo one > conftest.one echo two > conftest.two mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi @@ -2735,7 +3107,7 @@ rm -rf conftest.one conftest.two conftest.dir fi - if test "${ac_cv_path_install+set}" = set; then + if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a @@ -2745,8 +3117,8 @@ INSTALL=$ac_install_sh fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -2756,8 +3128,8 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +printf %s "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' @@ -2811,8 +3183,8 @@ as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= @@ -2831,26 +3203,23 @@ # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` +program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` + # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac + + if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then @@ -2870,11 +3239,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else @@ -2882,11 +3252,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2897,11 +3271,11 @@ fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -2910,11 +3284,12 @@ ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else @@ -2922,11 +3297,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2937,11 +3316,11 @@ fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf "%s\n" "$ac_ct_STRIP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then @@ -2949,8 +3328,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP @@ -2962,25 +3341,31 @@ fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + 'BusyBox '* | \ 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext break 3;; esac done @@ -2991,7 +3376,7 @@ fi test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then + if test ${ac_cv_path_mkdir+y}; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a @@ -3001,18 +3386,19 @@ MKDIR_P="$ac_install_sh -d" fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf "%s\n" "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else @@ -3020,11 +3406,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3035,24 +3425,25 @@ fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf "%s\n" "$AWK" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else +ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @@ -3068,12 +3459,12 @@ rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } SET_MAKE= else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi @@ -3087,7 +3478,8 @@ rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. -if test "${enable_silent_rules+set}" = set; then : +if test ${enable_silent_rules+y} +then : enableval=$enable_silent_rules; fi @@ -3097,12 +3489,13 @@ *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 -$as_echo_n "checking whether $am_make supports nested variables... " >&6; } -if ${am_cv_make_support_nested_variables+:} false; then : - $as_echo_n "(cached) " >&6 -else - if $as_echo 'TRUE=$(BAR$(V)) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 @@ -3114,8 +3507,8 @@ am_cv_make_support_nested_variables=no fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 -$as_echo "$am_cv_make_support_nested_variables" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' @@ -3147,17 +3540,13 @@ # Define the identity of the package. PACKAGE='ModemManager' - VERSION='1.14.10' + VERSION='1.16.6' -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF +printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF +printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h # Some tools Automake needs. @@ -3203,29 +3592,29 @@ # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 -$as_echo_n "checking whether UID '$am_uid' is supported by ustar format... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 +printf %s "checking whether UID '$am_uid' is supported by ustar format... " >&6; } if test $am_uid -le $am_max_uid; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } _am_tools=none fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 -$as_echo_n "checking whether GID '$am_gid' is supported by ustar format... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 +printf %s "checking whether GID '$am_gid' is supported by ustar format... " >&6; } if test $am_gid -le $am_max_gid; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } _am_tools=none fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 -$as_echo_n "checking how to create a ustar tar archive... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 +printf %s "checking how to create a ustar tar archive... " >&6; } # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. @@ -3300,14 +3689,15 @@ done rm -rf conftest.dir - if ${am_cv_prog_tar_ustar+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test ${am_cv_prog_tar_ustar+y} +then : + printf %s "(cached) " >&6 +else $as_nop am_cv_prog_tar_ustar=$_am_tool fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 -$as_echo "$am_cv_prog_tar_ustar" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 +printf "%s\n" "$am_cv_prog_tar_ustar" >&6; } @@ -3357,7 +3747,8 @@ fi # Check whether --enable-silent-rules was given. -if test "${enable_silent_rules+set}" = set; then : +if test ${enable_silent_rules+y} +then : enableval=$enable_silent_rules; fi @@ -3367,12 +3758,13 @@ *) AM_DEFAULT_VERBOSITY=0;; esac am_make=${MAKE-make} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 -$as_echo_n "checking whether $am_make supports nested variables... " >&6; } -if ${am_cv_make_support_nested_variables+:} false; then : - $as_echo_n "(cached) " >&6 -else - if $as_echo 'TRUE=$(BAR$(V)) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 @@ -3384,8 +3776,8 @@ am_cv_make_support_nested_variables=no fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 -$as_echo "$am_cv_make_support_nested_variables" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' @@ -3397,17 +3789,18 @@ -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 -$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +printf %s "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. -if test "${enable_maintainer_mode+set}" = set; then : +if test ${enable_maintainer_mode+y} +then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval -else +else $as_nop USE_MAINTAINER_MODE=yes fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 -$as_echo "$USE_MAINTAINER_MODE" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +printf "%s\n" "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' @@ -3421,7 +3814,8 @@ # Check whether --enable-silent-rules was given. -if test "${enable_silent_rules+set}" = set; then : +if test ${enable_silent_rules+y} +then : enableval=$enable_silent_rules; fi @@ -3431,12 +3825,13 @@ *) AM_DEFAULT_VERBOSITY=0;; esac am_make=${MAKE-make} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 -$as_echo_n "checking whether $am_make supports nested variables... " >&6; } -if ${am_cv_make_support_nested_variables+:} false; then : - $as_echo_n "(cached) " >&6 -else - if $as_echo 'TRUE=$(BAR$(V)) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 @@ -3448,8 +3843,8 @@ am_cv_make_support_nested_variables=no fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 -$as_echo "$am_cv_make_support_nested_variables" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' @@ -3465,12 +3860,21 @@ ac_config_headers="$ac_config_headers config.h" + + + + + + + + + DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 -$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out @@ -3506,11 +3910,12 @@ fi done rm -f confinc.* confmf.* -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 -$as_echo "${_am_result}" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +printf "%s\n" "${_am_result}" >&6; } # Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : +if test ${enable_dependency_tracking+y} +then : enableval=$enable_dependency_tracking; fi @@ -3536,11 +3941,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3548,11 +3954,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3563,11 +3973,11 @@ fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3576,11 +3986,12 @@ ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -3588,11 +3999,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3603,11 +4018,11 @@ fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then @@ -3615,8 +4030,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -3629,11 +4044,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3641,11 +4057,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3656,11 +4076,11 @@ fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3669,11 +4089,12 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3682,15 +4103,19 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3706,18 +4131,18 @@ # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3728,11 +4153,12 @@ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3740,11 +4166,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3755,11 +4185,11 @@ fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3772,11 +4202,12 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -3784,11 +4215,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3799,11 +4234,11 @@ fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3815,8 +4250,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -3824,25 +4259,129 @@ fi fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 -for ac_option in --version -v -V -qversion; do +for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -3852,7 +4391,7 @@ cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done @@ -3860,7 +4399,7 @@ /* end confdefs.h. */ int -main () +main (void) { ; @@ -3872,9 +4411,9 @@ # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" @@ -3895,11 +4434,12 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, @@ -3916,7 +4456,7 @@ # certainly right. break;; *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi @@ -3932,44 +4472,46 @@ done test "$ac_cv_exeext" = no && ac_cv_exeext= -else +else $as_nop ac_file='' fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 +if test -z "$ac_file" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with @@ -3983,15 +4525,15 @@ * ) break;; esac done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext @@ -4000,7 +4542,7 @@ /* end confdefs.h. */ #include int -main () +main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; @@ -4012,8 +4554,8 @@ ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in @@ -4021,10 +4563,10 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in @@ -4032,39 +4574,40 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -4078,11 +4621,12 @@ *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in @@ -4091,31 +4635,32 @@ break;; esac done -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __GNUC__ choke me @@ -4125,29 +4670,33 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_compiler_gnu=yes -else +else $as_nop ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi -ac_test_CFLAGS=${CFLAGS+set} +ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no @@ -4156,57 +4705,60 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes -else +else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then @@ -4221,94 +4773,144 @@ CFLAGS= fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program _ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : + if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_c89=$ac_arg fi -rm -f core conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC - fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi fi ac_ext=c @@ -4317,21 +4919,23 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -ac_ext=c + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 -$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } -if ${am_cv_prog_cc_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -4359,8 +4963,8 @@ rm -f core conftest* unset am_i fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 -$as_echo "$am_cv_prog_cc_c_o" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. @@ -4378,11 +4982,12 @@ depcc="$CC" am_compiler_list= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For @@ -4489,8 +5094,8 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if @@ -4505,463 +5110,175 @@ -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes +ac_header= ac_cache= +for ac_item in $ac_header_c_list do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf "%s\n" "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - done - ac_cv_prog_CPP=$CPP -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi +printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test ${ac_cv_safe_to_define___extensions__+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -#include -#include +# define __EXTENSIONS__ 1 + $ac_includes_default int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_safe_to_define___extensions__=yes +else $as_nop + ac_cv_safe_to_define___extensions__=no fi -rm -f conftest* - +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; } -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 +printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } +if test ${ac_cv_should_define__xopen_source+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_should_define__xopen_source=no + if test $ac_cv_header_wchar_h = yes +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* + #include + mbstate_t x; +int +main (void) +{ -fi + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) + #define _XOPEN_SOURCE 500 + #include + mbstate_t x; int -main () +main (void) { - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; + + ; return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_should_define__xopen_source=yes fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi - +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 +printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; } -$as_echo "#define STDC_HEADERS 1" >>confdefs.h + printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF + printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h -fi + printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h -done + printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h + printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h + printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h - ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" -if test "x$ac_cv_header_minix_config_h" = xyes; then : - MINIX=yes -else - MINIX= -fi + printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h - if test "$MINIX" = yes; then + printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h -$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h -$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h -$as_echo "#define _MINIX 1" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h - fi + printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h + if test $ac_cv_header_minix_config_h = yes +then : + MINIX=yes + printf "%s\n" "#define _MINIX 1" >>confdefs.h - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 -$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } -if ${ac_cv_safe_to_define___extensions__+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ + printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h -# define __EXTENSIONS__ 1 - $ac_includes_default -int -main () -{ + printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_safe_to_define___extensions__=yes -else - ac_cv_safe_to_define___extensions__=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else $as_nop + MINIX= fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 -$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } - test $ac_cv_safe_to_define___extensions__ = yes && - $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h - - $as_echo "#define _ALL_SOURCE 1" >>confdefs.h - - $as_echo "#define _GNU_SOURCE 1" >>confdefs.h - - $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + if test $ac_cv_safe_to_define___extensions__ = yes +then : + printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h - $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h +fi + if test $ac_cv_should_define__xopen_source = yes +then : + printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h +fi ac_ext=c @@ -4972,11 +5289,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -4984,11 +5302,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4999,11 +5321,11 @@ fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5012,11 +5334,12 @@ ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -5024,11 +5347,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5039,11 +5366,11 @@ fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then @@ -5051,8 +5378,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -5065,11 +5392,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -5077,11 +5405,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5092,11 +5424,11 @@ fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5105,11 +5437,12 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -5118,15 +5451,19 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5142,18 +5479,18 @@ # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5164,11 +5501,12 @@ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -5176,11 +5514,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5191,11 +5533,11 @@ fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5208,11 +5550,12 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -5220,11 +5563,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5235,11 +5582,11 @@ fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5251,8 +5598,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -5260,25 +5607,129 @@ fi fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 -for ac_option in --version -v -V -qversion; do +for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -5288,20 +5739,21 @@ cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __GNUC__ choke me @@ -5311,29 +5763,33 @@ return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_compiler_gnu=yes -else +else $as_nop ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi -ac_test_CFLAGS=${CFLAGS+set} +ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no @@ -5342,57 +5798,60 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes -else +else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then @@ -5407,94 +5866,144 @@ CFLAGS= fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program _ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : + if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_c89=$ac_arg fi -rm -f core conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC - fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi fi ac_ext=c @@ -5503,21 +6012,23 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -ac_ext=c + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 -$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } -if ${am_cv_prog_cc_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -5545,8 +6056,8 @@ rm -f core conftest* unset am_i fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 -$as_echo "$am_cv_prog_cc_c_o" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. @@ -5564,11 +6075,12 @@ depcc="$CC" am_compiler_list= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For @@ -5675,8 +6187,8 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if @@ -5697,8 +6209,8 @@ case `pwd` in *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac @@ -5718,28 +6230,32 @@ + ltmain=$ac_aux_dir/ltmain.sh -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else + + + # Make sure we can run config.sub. +$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_build_alias=$build_alias test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; @@ -5758,21 +6274,22 @@ case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; @@ -5812,8 +6329,8 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +printf %s "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then @@ -5839,12 +6356,12 @@ } case $ECHO in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; + printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +printf "%s\n" "printf" >&6; } ;; + print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +printf "%s\n" "print -r" >&6; } ;; + *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +printf "%s\n" "cat" >&6; } ;; esac @@ -5860,11 +6377,12 @@ -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" @@ -5878,10 +6396,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED @@ -5890,13 +6413,13 @@ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 - $as_echo_n 0123456789 >"conftest.in" + printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" + printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -5924,8 +6447,8 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed @@ -5942,11 +6465,154 @@ -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +printf %s "checking for grep that handles long lines and -e... " >&6; } +if test ${ac_cv_path_GREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in grep ggrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +printf "%s\n" "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +printf %s "checking for egrep... " >&6; } +if test ${ac_cv_path_EGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +printf "%s\n" "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +printf %s "checking for fgrep... " >&6; } +if test ${ac_cv_path_FGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else @@ -5957,10 +6623,15 @@ for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in fgrep + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP @@ -5969,13 +6640,13 @@ ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 - $as_echo_n 0123456789 >"conftest.in" + printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" + printf "%s\n" 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -6004,8 +6675,8 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +printf "%s\n" "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" @@ -6030,17 +6701,18 @@ # Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : +if test ${with_gnu_ld+y} +then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes -else +else $as_nop with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw @@ -6069,15 +6741,16 @@ ;; esac elif test yes = "$with_gnu_ld"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test ${lt_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do @@ -6106,18 +6779,19 @@ LD=$lt_cv_path_LD if test -n "$LD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -$as_echo "$LD" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +printf "%s\n" "$LD" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${lt_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else $as_nop # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 +printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld @@ -6140,11 +6814,12 @@ -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if test ${lt_cv_path_NM+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM @@ -6194,8 +6869,8 @@ : ${lt_cv_path_NM=no} fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +printf "%s\n" "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else @@ -6208,11 +6883,12 @@ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_DUMPBIN+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else @@ -6220,11 +6896,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6235,11 +6915,11 @@ fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +printf "%s\n" "$DUMPBIN" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -6252,11 +6932,12 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_DUMPBIN+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else @@ -6264,11 +6945,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6279,11 +6964,11 @@ fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +printf "%s\n" "$ac_ct_DUMPBIN" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -6295,8 +6980,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN @@ -6324,11 +7009,12 @@ -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +printf %s "checking the name lister ($NM) interface... " >&6; } +if test ${lt_cv_nm_interface+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) @@ -6344,26 +7030,27 @@ fi rm -f conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +printf "%s\n" "$lt_cv_nm_interface" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +printf %s "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +printf "%s\n" "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +printf %s "checking the maximum length of command line arguments... " >&6; } +if test ${lt_cv_sys_max_cmd_len+y} +then : + printf %s "(cached) " >&6 +else $as_nop i=0 teststring=ABCD @@ -6490,11 +7177,11 @@ fi if test -n "$lt_cv_sys_max_cmd_len"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 +printf "%s\n" "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len @@ -6538,11 +7225,12 @@ -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -if ${lt_cv_to_host_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +printf %s "checking how to convert $build file names to $host format... " >&6; } +if test ${lt_cv_to_host_file_cmd+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $host in *-*-mingw* ) case $build in @@ -6578,18 +7266,19 @@ fi to_host_file_cmd=$lt_cv_to_host_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -$as_echo "$lt_cv_to_host_file_cmd" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -if ${lt_cv_to_tool_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +printf %s "checking how to convert $build file names to toolchain format... " >&6; } +if test ${lt_cv_to_tool_file_cmd+y} +then : + printf %s "(cached) " >&6 +else $as_nop #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in @@ -6605,22 +7294,23 @@ fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -$as_echo "$lt_cv_to_tool_file_cmd" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +printf %s "checking for $LD option to reload object files... " >&6; } +if test ${lt_cv_ld_reload_flag+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_ld_reload_flag='-r' fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +printf "%s\n" "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; @@ -6653,11 +7343,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OBJDUMP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else @@ -6665,11 +7356,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6680,11 +7375,11 @@ fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +printf "%s\n" "$OBJDUMP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -6693,11 +7388,12 @@ ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_OBJDUMP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else @@ -6705,11 +7401,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6720,11 +7420,11 @@ fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +printf "%s\n" "$ac_ct_OBJDUMP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then @@ -6732,8 +7432,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP @@ -6752,11 +7452,12 @@ -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +printf %s "checking how to recognize dependent libraries... " >&6; } +if test ${lt_cv_deplibs_check_method+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' @@ -6952,8 +7653,8 @@ esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no @@ -6997,11 +7698,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_DLLTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else @@ -7009,11 +7711,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7024,11 +7730,11 @@ fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +printf "%s\n" "$DLLTOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -7037,11 +7743,12 @@ ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_DLLTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else @@ -7049,11 +7756,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7064,11 +7775,11 @@ fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +printf "%s\n" "$ac_ct_DLLTOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then @@ -7076,8 +7787,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL @@ -7097,11 +7808,12 @@ -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +printf %s "checking how to associate runtime and link libraries... " >&6; } +if test ${lt_cv_sharedlib_from_linklib_cmd+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in @@ -7124,8 +7836,8 @@ esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO @@ -7140,11 +7852,12 @@ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else @@ -7152,11 +7865,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7167,11 +7884,11 @@ fi AR=$ac_cv_prog_AR if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf "%s\n" "$AR" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -7184,11 +7901,12 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else @@ -7196,11 +7914,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7211,11 +7933,11 @@ fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf "%s\n" "$ac_ct_AR" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -7227,8 +7949,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR @@ -7264,30 +7986,32 @@ -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -$as_echo_n "checking for archiver @FILE support... " >&6; } -if ${lt_cv_ar_at_file+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +printf %s "checking for archiver @FILE support... " >&6; } +if test ${lt_cv_ar_at_file+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. @@ -7295,7 +8019,7 @@ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ @@ -7304,11 +8028,11 @@ rm -f conftest.* libconftest.a fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -$as_echo "$lt_cv_ar_at_file" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +printf "%s\n" "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= @@ -7325,11 +8049,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else @@ -7337,11 +8062,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7352,11 +8081,11 @@ fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -7365,11 +8094,12 @@ ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else @@ -7377,11 +8107,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7392,11 +8126,11 @@ fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf "%s\n" "$ac_ct_STRIP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then @@ -7404,8 +8138,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP @@ -7424,11 +8158,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else @@ -7436,11 +8171,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7451,11 +8190,11 @@ fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf "%s\n" "$RANLIB" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -7464,11 +8203,12 @@ ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else @@ -7476,11 +8216,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7491,11 +8235,11 @@ fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf "%s\n" "$ac_ct_RANLIB" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then @@ -7503,8 +8247,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB @@ -7593,11 +8337,12 @@ # Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +printf %s "checking command to parse $NM output from $compiler object... " >&6; } +if test ${lt_cv_sys_global_symbol_pipe+y} +then : + printf %s "(cached) " >&6 +else $as_nop # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] @@ -7749,14 +8494,14 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then @@ -7825,7 +8570,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi @@ -7860,11 +8605,11 @@ lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +printf "%s\n" "failed" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } fi # Response file support. @@ -7910,13 +8655,14 @@ -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -$as_echo_n "checking for sysroot... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +printf %s "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. -if test "${with_sysroot+set}" = set; then : +if test ${with_sysroot+y} +then : withval=$with_sysroot; -else +else $as_nop with_sysroot=no fi @@ -7934,24 +8680,25 @@ no|'') ;; #( *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 -$as_echo "$with_sysroot" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +printf "%s\n" "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -$as_echo "${lt_sysroot:-no}" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +printf "%s\n" "${lt_sysroot:-no}" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 -$as_echo_n "checking for a working dd... " >&6; } -if ${ac_cv_path_lt_DD+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +printf %s "checking for a working dd... " >&6; } +if test ${ac_cv_path_lt_DD+y} +then : + printf %s "(cached) " >&6 +else $as_nop printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} @@ -7962,10 +8709,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in dd; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in dd + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" + ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ @@ -7985,15 +8737,16 @@ rm -f conftest.i conftest2.i conftest.out fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 -$as_echo "$ac_cv_path_lt_DD" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +printf "%s\n" "$ac_cv_path_lt_DD" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 -$as_echo_n "checking how to truncate binary pipes... " >&6; } -if ${lt_cv_truncate_bin+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +printf %s "checking how to truncate binary pipes... " >&6; } +if test ${lt_cv_truncate_bin+y} +then : + printf %s "(cached) " >&6 +else $as_nop printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= @@ -8004,8 +8757,8 @@ rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 -$as_echo "$lt_cv_truncate_bin" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +printf "%s\n" "$lt_cv_truncate_bin" >&6; } @@ -8028,7 +8781,8 @@ } # Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : +if test ${enable_libtool_lock+y} +then : enableval=$enable_libtool_lock; fi @@ -8044,7 +8798,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) @@ -8064,7 +8818,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in @@ -8102,7 +8856,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then emul=elf case `/usr/bin/file conftest.$ac_objext` in @@ -8143,7 +8897,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) @@ -8206,11 +8960,12 @@ # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +printf %s "checking whether the C compiler needs -belf... " >&6; } +if test ${lt_cv_cc_needs_belf+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -8221,19 +8976,20 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : lt_cv_cc_needs_belf=yes -else +else $as_nop lt_cv_cc_needs_belf=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -8242,8 +8998,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS @@ -8256,7 +9012,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) @@ -8293,11 +9049,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_MANIFEST_TOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else @@ -8305,11 +9062,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8320,11 +9081,11 @@ fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -$as_echo "$MANIFEST_TOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +printf "%s\n" "$MANIFEST_TOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -8333,11 +9094,12 @@ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else @@ -8345,11 +9107,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8360,11 +9126,11 @@ fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then @@ -8372,8 +9138,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL @@ -8383,11 +9149,12 @@ fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -if ${lt_cv_path_mainfest_tool+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if test ${lt_cv_path_mainfest_tool+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out @@ -8397,8 +9164,8 @@ fi rm -f conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -$as_echo "$lt_cv_path_mainfest_tool" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +printf "%s\n" "$lt_cv_path_mainfest_tool" >&6; } if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi @@ -8413,11 +9180,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_DSYMUTIL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else @@ -8425,11 +9193,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8440,11 +9212,11 @@ fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +printf "%s\n" "$DSYMUTIL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -8453,11 +9225,12 @@ ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_DSYMUTIL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else @@ -8465,11 +9238,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8480,11 +9257,11 @@ fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +printf "%s\n" "$ac_ct_DSYMUTIL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then @@ -8492,8 +9269,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL @@ -8505,11 +9282,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_NMEDIT+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else @@ -8517,11 +9295,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8532,11 +9314,11 @@ fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +printf "%s\n" "$NMEDIT" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -8545,11 +9327,12 @@ ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_NMEDIT+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else @@ -8557,11 +9340,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8572,11 +9359,11 @@ fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +printf "%s\n" "$ac_ct_NMEDIT" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then @@ -8584,8 +9371,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT @@ -8597,11 +9384,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_LIPO+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else @@ -8609,11 +9397,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8624,11 +9416,11 @@ fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +printf "%s\n" "$LIPO" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -8637,11 +9429,12 @@ ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_LIPO+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else @@ -8649,11 +9442,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8664,11 +9461,11 @@ fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +printf "%s\n" "$ac_ct_LIPO" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then @@ -8676,8 +9473,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO @@ -8689,11 +9486,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else @@ -8701,11 +9499,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8716,11 +9518,11 @@ fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +printf "%s\n" "$OTOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -8729,11 +9531,12 @@ ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_OTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else @@ -8741,11 +9544,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8756,11 +9563,11 @@ fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +printf "%s\n" "$ac_ct_OTOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then @@ -8768,8 +9575,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL @@ -8781,11 +9588,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OTOOL64+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else @@ -8793,11 +9601,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8808,11 +9620,11 @@ fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +printf "%s\n" "$OTOOL64" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -8821,11 +9633,12 @@ ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_OTOOL64+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else @@ -8833,11 +9646,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8848,11 +9665,11 @@ fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +printf "%s\n" "$ac_ct_OTOOL64" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then @@ -8860,8 +9677,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 @@ -8896,11 +9713,12 @@ - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +printf %s "checking for -single_module linker flag... " >&6; } +if test ${lt_cv_apple_cc_single_mod+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override @@ -8929,14 +9747,15 @@ rm -f conftest.* fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +printf %s "checking for -exported_symbols_list linker flag... " >&6; } +if test ${lt_cv_ld_exported_symbols_list+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym @@ -8945,31 +9764,33 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : lt_cv_ld_exported_symbols_list=yes -else +else $as_nop lt_cv_ld_exported_symbols_list=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +printf %s "checking for -force_load linker flag... " >&6; } +if test ${lt_cv_ld_force_load+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} @@ -8997,8 +9818,8 @@ rm -rf conftest.dSYM fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +printf "%s\n" "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; @@ -9069,26 +9890,22 @@ esac } -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF +if test "x$ac_cv_header_dlfcn_h" = xyes +then : + printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h fi -done - # Set options # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : +if test ${enable_static+y} +then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; @@ -9106,7 +9923,7 @@ IFS=$lt_save_ifs ;; esac -else +else $as_nop enable_static=no fi @@ -9126,7 +9943,8 @@ # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : +if test ${enable_shared+y} +then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; @@ -9144,7 +9962,7 @@ IFS=$lt_save_ifs ;; esac -else +else $as_nop enable_shared=yes fi @@ -9159,7 +9977,8 @@ # Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : +if test ${with_pic+y} +then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; @@ -9176,7 +9995,7 @@ IFS=$lt_save_ifs ;; esac -else +else $as_nop pic_mode=default fi @@ -9188,7 +10007,8 @@ # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : +if test ${enable_fast_install+y} +then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; @@ -9206,7 +10026,7 @@ IFS=$lt_save_ifs ;; esac -else +else $as_nop enable_fast_install=yes fi @@ -9220,11 +10040,12 @@ shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 -$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +printf %s "checking which variant of shared library versioning to provide... " >&6; } # Check whether --with-aix-soname was given. -if test "${with_aix_soname+set}" = set; then : +if test ${with_aix_soname+y} +then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; @@ -9233,18 +10054,19 @@ ;; esac lt_cv_with_aix_soname=$with_aix_soname -else - if ${lt_cv_with_aix_soname+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + if test ${lt_cv_with_aix_soname+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_with_aix_soname=aix fi with_aix_soname=$lt_cv_with_aix_soname fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 -$as_echo "$with_aix_soname" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +printf "%s\n" "$with_aix_soname" >&6; } if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', @@ -9326,11 +10148,12 @@ setopt NO_GLOB_SUBST fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +printf %s "checking for objdir... " >&6; } +if test ${lt_cv_objdir+y} +then : + printf %s "(cached) " >&6 +else $as_nop rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then @@ -9341,17 +10164,15 @@ fi rmdir .libs 2>/dev/null fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +printf "%s\n" "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF +printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h @@ -9397,11 +10218,12 @@ case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +printf %s "checking for ${ac_tool_prefix}file... " >&6; } +if test ${lt_cv_path_MAGIC_CMD+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. @@ -9450,11 +10272,11 @@ MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +printf "%s\n" "$MAGIC_CMD" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -9463,11 +10285,12 @@ if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +printf %s "checking for file... " >&6; } +if test ${lt_cv_path_MAGIC_CMD+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. @@ -9516,11 +10339,11 @@ MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +printf "%s\n" "$MAGIC_CMD" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -9605,11 +10428,12 @@ lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if test ${lt_cv_prog_compiler_rtti_exceptions+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext @@ -9640,8 +10464,8 @@ $RM conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" @@ -9998,26 +10822,28 @@ ;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +printf %s "checking for $compiler option to produce PIC... " >&6; } +if test ${lt_cv_prog_compiler_pic+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -$as_echo "$lt_cv_prog_compiler_pic" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if test ${lt_cv_prog_compiler_pic_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext @@ -10048,8 +10874,8 @@ $RM conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in @@ -10077,11 +10903,12 @@ # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test ${lt_cv_prog_compiler_static_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" @@ -10105,8 +10932,8 @@ LDFLAGS=$save_LDFLAGS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : @@ -10120,11 +10947,12 @@ - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test ${lt_cv_prog_compiler_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest @@ -10167,19 +10995,20 @@ $RM conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test ${lt_cv_prog_compiler_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest @@ -10222,8 +11051,8 @@ $RM conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } @@ -10231,19 +11060,19 @@ hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +printf %s "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +printf "%s\n" "$hard_links" >&6; } if test no = "$hard_links"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else @@ -10255,8 +11084,8 @@ - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= @@ -10812,21 +11641,23 @@ if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test ${lt_cv_aix_libpath_+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -10841,7 +11672,7 @@ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib @@ -10865,21 +11696,23 @@ if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test ${lt_cv_aix_libpath_+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -10894,7 +11727,7 @@ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib @@ -11145,11 +11978,12 @@ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +printf %s "checking if $CC understands -b... " >&6; } +if test ${lt_cv_prog_compiler__b+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" @@ -11173,8 +12007,8 @@ LDFLAGS=$save_LDFLAGS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +printf "%s\n" "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' @@ -11214,28 +12048,30 @@ # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -if ${lt_cv_irix_exported_symbol+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if test ${lt_cv_irix_exported_symbol+y} +then : + printf %s "(cached) " >&6 +else $as_nop save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : lt_cv_irix_exported_symbol=yes -else +else $as_nop lt_cv_irix_exported_symbol=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -$as_echo "$lt_cv_irix_exported_symbol" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi @@ -11516,8 +12352,8 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +printf "%s\n" "$ld_shlibs" >&6; } test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld @@ -11553,18 +12389,19 @@ # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +printf %s "checking whether -lc should be explicitly linked in... " >&6; } +if test ${lt_cv_archive_cmds_need_lc+y} +then : + printf %s "(cached) " >&6 +else $as_nop $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest @@ -11582,7 +12419,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no @@ -11596,8 +12433,8 @@ $RM conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac @@ -11756,8 +12593,8 @@ - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +printf %s "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in @@ -12318,9 +13155,10 @@ shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test ${lt_cv_shlibpath_overrides_runpath+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir @@ -12330,19 +13168,21 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : +if ac_fn_c_try_link "$LINENO" +then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null +then : lt_cv_shlibpath_overrides_runpath=yes fi fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir @@ -12574,8 +13414,8 @@ dynamic_linker=no ;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +printf "%s\n" "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" @@ -12696,8 +13536,8 @@ - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +printf %s "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || @@ -12721,8 +13561,8 @@ # directories. hardcode_action=unsupported fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +printf "%s\n" "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then @@ -12766,11 +13606,12 @@ darwin*) # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +printf %s "checking for dlopen in -ldl... " >&6; } +if test ${ac_cv_lib_dl_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -12779,32 +13620,31 @@ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char dlopen (); int -main () +main (void) { return dlopen (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_dl_dlopen=yes -else +else $as_nop ac_cv_lib_dl_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes +then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else +else $as_nop lt_cv_dlopen=dyld lt_cv_dlopen_libs= @@ -12824,14 +13664,16 @@ *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : +if test "x$ac_cv_func_shl_load" = xyes +then : lt_cv_dlopen=shl_load -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +printf %s "checking for shl_load in -ldld... " >&6; } +if test ${ac_cv_lib_dld_shl_load+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -12840,41 +13682,42 @@ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char shl_load (); int -main () +main (void) { return shl_load (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_dld_shl_load=yes -else +else $as_nop ac_cv_lib_dld_shl_load=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes +then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld -else +else $as_nop ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : +if test "x$ac_cv_func_dlopen" = xyes +then : lt_cv_dlopen=dlopen -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +printf %s "checking for dlopen in -ldl... " >&6; } +if test ${ac_cv_lib_dl_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -12883,37 +13726,37 @@ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char dlopen (); int -main () +main (void) { return dlopen (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_dl_dlopen=yes -else +else $as_nop ac_cv_lib_dl_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes +then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +printf %s "checking for dlopen in -lsvld... " >&6; } +if test ${ac_cv_lib_svld_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -12922,37 +13765,37 @@ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char dlopen (); int -main () +main (void) { return dlopen (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_svld_dlopen=yes -else +else $as_nop ac_cv_lib_svld_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes +then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +printf %s "checking for dld_link in -ldld... " >&6; } +if test ${ac_cv_lib_dld_dld_link+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -12961,30 +13804,29 @@ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char dld_link (); int -main () +main (void) { return dld_link (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_dld_dld_link=yes -else +else $as_nop ac_cv_lib_dld_dld_link=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes +then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi @@ -13023,11 +13865,12 @@ save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +printf %s "checking whether a program can dlopen itself... " >&6; } +if test ${lt_cv_dlopen_self+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else @@ -13106,7 +13949,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? @@ -13124,16 +13967,17 @@ fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +printf "%s\n" "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +printf %s "checking whether a statically linked program can dlopen itself... " >&6; } +if test ${lt_cv_dlopen_self_static+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else @@ -13212,7 +14056,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? @@ -13230,8 +14074,8 @@ fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +printf "%s\n" "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS=$save_CPPFLAGS @@ -13269,40 +14113,40 @@ striplib= old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +printf %s "checking whether stripping libraries is possible... " >&6; } if test -z "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } else if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else case $host_os in darwin*) # FIXME - insert some real tests, host_os isn't really good enough striplib="$STRIP -x" old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } ;; freebsd*) if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi ;; *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; esac fi @@ -13320,13 +14164,13 @@ # Report what library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +printf %s "checking if libtool supports shared libraries... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +printf "%s\n" "$can_build_shared" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +printf %s "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and @@ -13350,15 +14194,15 @@ fi ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +printf "%s\n" "$enable_shared" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +printf %s "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +printf "%s\n" "$enable_static" >&6; } @@ -13403,9 +14247,10 @@ # $is_release = (.git directory does not exist) - if test -d ${srcdir}/.git; then : + if test -d ${srcdir}/.git +then : ax_is_release=no -else +else $as_nop ax_is_release=yes fi @@ -13431,27 +14276,31 @@ ax_compiler_flags_is_release=$ax_is_release # Check whether --enable-compile-warnings was given. -if test "${enable_compile_warnings+set}" = set; then : +if test ${enable_compile_warnings+y} +then : enableval=$enable_compile_warnings; -else - if test "$ax_compiler_flags_is_release" = "yes"; then : +else $as_nop + if test "$ax_compiler_flags_is_release" = "yes" +then : enable_compile_warnings="yes" -else +else $as_nop enable_compile_warnings="error" fi fi # Check whether --enable-Werror was given. -if test "${enable_Werror+set}" = set; then : +if test ${enable_Werror+y} +then : enableval=$enable_Werror; -else +else $as_nop enable_Werror=maybe fi # Return the user's chosen warning level if test "$enable_Werror" = "no" -a \ - "$enable_compile_warnings" = "error"; then : + "$enable_compile_warnings" = "error" +then : enable_compile_warnings="yes" @@ -13485,30 +14334,32 @@ #error "no C++" #endif int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ax_compiler_cxx=yes; -else +else $as_nop ax_compiler_cxx=no; fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # Always pass -Werror=unknown-warning-option to get Clang to fail on bad # flags, otherwise they are always appended to the warn_cflags variable, and # Clang warns on them for every compilation unit. # If this is passed to GCC, it will explode, so the flag must be enabled # conditionally. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Werror=unknown-warning-option" >&5 -$as_echo_n "checking whether C compiler accepts -Werror=unknown-warning-option... " >&6; } -if ${ax_cv_check_cflags___Werror_unknown_warning_option+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Werror=unknown-warning-option" >&5 +printf %s "checking whether C compiler accepts -Werror=unknown-warning-option... " >&6; } +if test ${ax_cv_check_cflags___Werror_unknown_warning_option+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS -Werror=unknown-warning-option" @@ -13516,28 +14367,30 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ax_cv_check_cflags___Werror_unknown_warning_option=yes -else +else $as_nop ax_cv_check_cflags___Werror_unknown_warning_option=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$ax_check_save_flags fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Werror_unknown_warning_option" >&5 -$as_echo "$ax_cv_check_cflags___Werror_unknown_warning_option" >&6; } -if test "x$ax_cv_check_cflags___Werror_unknown_warning_option" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Werror_unknown_warning_option" >&5 +printf "%s\n" "$ax_cv_check_cflags___Werror_unknown_warning_option" >&6; } +if test "x$ax_cv_check_cflags___Werror_unknown_warning_option" = xyes +then : ax_compiler_flags_test="-Werror=unknown-warning-option" -else +else $as_nop ax_compiler_flags_test="" @@ -13545,11 +14398,12 @@ # Check that -Wno-suggest-attribute=format is supported - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Wno-suggest-attribute=format" >&5 -$as_echo_n "checking whether C compiler accepts -Wno-suggest-attribute=format... " >&6; } -if ${ax_cv_check_cflags___Wno_suggest_attribute_format+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Wno-suggest-attribute=format" >&5 +printf %s "checking whether C compiler accepts -Wno-suggest-attribute=format... " >&6; } +if test ${ax_cv_check_cflags___Wno_suggest_attribute_format+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS -Wno-suggest-attribute=format" @@ -13557,28 +14411,30 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ax_cv_check_cflags___Wno_suggest_attribute_format=yes -else +else $as_nop ax_cv_check_cflags___Wno_suggest_attribute_format=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$ax_check_save_flags fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Wno_suggest_attribute_format" >&5 -$as_echo "$ax_cv_check_cflags___Wno_suggest_attribute_format" >&6; } -if test "x$ax_cv_check_cflags___Wno_suggest_attribute_format" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Wno_suggest_attribute_format" >&5 +printf "%s\n" "$ax_cv_check_cflags___Wno_suggest_attribute_format" >&6; } +if test "x$ax_cv_check_cflags___Wno_suggest_attribute_format" = xyes +then : ax_compiler_no_suggest_attribute_flags="-Wno-suggest-attribute=format" -else +else $as_nop ax_compiler_no_suggest_attribute_flags="" @@ -13591,12 +14447,13 @@ for flag in -fno-strict-aliasing ; do - as_CACHEVAR=`$as_echo "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 -$as_echo_n "checking whether C compiler accepts $flag... " >&6; } -if eval \${$as_CACHEVAR+:} false; then : - $as_echo_n "(cached) " >&6 -else + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +printf %s "checking whether C compiler accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS $ax_compiler_flags_test $flag" @@ -13604,65 +14461,69 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$as_CACHEVAR=yes" -else +else $as_nop eval "$as_CACHEVAR=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$ax_check_save_flags fi eval ac_res=\$$as_CACHEVAR - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : -if ${WARN_CFLAGS+:} false; then : +if test ${WARN_CFLAGS+y} +then : case " $WARN_CFLAGS " in #( *" $flag "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains \$flag"; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains \$flag"; } >&5 (: WARN_CFLAGS already contains $flag) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : as_fn_append WARN_CFLAGS " $flag" - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac -else +else $as_nop WARN_CFLAGS=$flag - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } fi -else +else $as_nop : fi done - if test "$ax_enable_compile_warnings" != "no"; then : + if test "$ax_enable_compile_warnings" != "no" +then : if test "$ax_compiler_cxx" = "no" ; then # C-only flags. Warn in C++ @@ -13671,12 +14532,13 @@ for flag in -Wnested-externs -Wmissing-prototypes -Wstrict-prototypes -Wdeclaration-after-statement -Wimplicit-function-declaration -Wold-style-definition -Wjump-misses-init ; do - as_CACHEVAR=`$as_echo "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 -$as_echo_n "checking whether C compiler accepts $flag... " >&6; } -if eval \${$as_CACHEVAR+:} false; then : - $as_echo_n "(cached) " >&6 -else + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +printf %s "checking whether C compiler accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS $ax_compiler_flags_test $flag" @@ -13684,58 +14546,61 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$as_CACHEVAR=yes" -else +else $as_nop eval "$as_CACHEVAR=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$ax_check_save_flags fi eval ac_res=\$$as_CACHEVAR - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : -if ${WARN_CFLAGS+:} false; then : +if test ${WARN_CFLAGS+y} +then : case " $WARN_CFLAGS " in #( *" $flag "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains \$flag"; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains \$flag"; } >&5 (: WARN_CFLAGS already contains $flag) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : as_fn_append WARN_CFLAGS " $flag" - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac -else +else $as_nop WARN_CFLAGS=$flag - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } fi -else +else $as_nop : fi @@ -13749,12 +14614,13 @@ for flag in -Wall -Wextra -Wundef -Wwrite-strings -Wpointer-arith -Wmissing-declarations -Wredundant-decls -Wno-unused-parameter -Wno-missing-field-initializers -Wformat=2 -Wcast-align -Wformat-nonliteral -Wformat-security -Wsign-compare -Wstrict-aliasing -Wshadow -Winline -Wpacked -Wmissing-format-attribute -Wmissing-noreturn -Winit-self -Wredundant-decls -Wmissing-include-dirs -Wunused-but-set-variable -Warray-bounds -Wreturn-type -Wswitch-enum -Wswitch-default -Wduplicated-cond -Wduplicated-branches -Wlogical-op -Wrestrict -Wnull-dereference -Wdouble-promotion ; do - as_CACHEVAR=`$as_echo "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 -$as_echo_n "checking whether C compiler accepts $flag... " >&6; } -if eval \${$as_CACHEVAR+:} false; then : - $as_echo_n "(cached) " >&6 -else + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +printf %s "checking whether C compiler accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS $ax_compiler_flags_test $flag" @@ -13762,58 +14628,61 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$as_CACHEVAR=yes" -else +else $as_nop eval "$as_CACHEVAR=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$ax_check_save_flags fi eval ac_res=\$$as_CACHEVAR - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : -if ${WARN_CFLAGS+:} false; then : +if test ${WARN_CFLAGS+y} +then : case " $WARN_CFLAGS " in #( *" $flag "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains \$flag"; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains \$flag"; } >&5 (: WARN_CFLAGS already contains $flag) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : as_fn_append WARN_CFLAGS " $flag" - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac -else +else $as_nop WARN_CFLAGS=$flag - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } fi -else +else $as_nop : fi @@ -13821,7 +14690,8 @@ fi - if test "$ax_enable_compile_warnings" = "error"; then : + if test "$ax_enable_compile_warnings" = "error" +then : # "error" flags; -Werror has to be appended unconditionally because # it's not possible to test for @@ -13829,33 +14699,34 @@ # suggest-attribute=format is disabled because it gives too many false # positives -if ${WARN_CFLAGS+:} false; then : +if test ${WARN_CFLAGS+y} +then : case " $WARN_CFLAGS " in #( *" -Werror "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains -Werror"; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains -Werror"; } >&5 (: WARN_CFLAGS already contains -Werror) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : as_fn_append WARN_CFLAGS " -Werror" - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac -else +else $as_nop WARN_CFLAGS=-Werror - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } fi @@ -13866,12 +14737,13 @@ for flag in $ax_compiler_no_suggest_attribute_flags ; do - as_CACHEVAR=`$as_echo "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 -$as_echo_n "checking whether C compiler accepts $flag... " >&6; } -if eval \${$as_CACHEVAR+:} false; then : - $as_echo_n "(cached) " >&6 -else + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +printf %s "checking whether C compiler accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS $ax_compiler_flags_test $flag" @@ -13879,58 +14751,61 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$as_CACHEVAR=yes" -else +else $as_nop eval "$as_CACHEVAR=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$ax_check_save_flags fi eval ac_res=\$$as_CACHEVAR - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : -if ${WARN_CFLAGS+:} false; then : +if test ${WARN_CFLAGS+y} +then : case " $WARN_CFLAGS " in #( *" $flag "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains \$flag"; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains \$flag"; } >&5 (: WARN_CFLAGS already contains $flag) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : as_fn_append WARN_CFLAGS " $flag" - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac -else +else $as_nop WARN_CFLAGS=$flag - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } fi -else +else $as_nop : fi @@ -13953,13 +14828,14 @@ -for flag in -Wno-error=$($as_echo $flag | $SED 's/^-Wno-//'); do - as_CACHEVAR=`$as_echo "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 -$as_echo_n "checking whether C compiler accepts $flag... " >&6; } -if eval \${$as_CACHEVAR+:} false; then : - $as_echo_n "(cached) " >&6 -else +for flag in -Wno-error=$(printf "%s\n" $flag | $SED 's/^-Wno-//'); do + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +printf %s "checking whether C compiler accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS $ax_compiler_flags_test $flag" @@ -13967,58 +14843,61 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$as_CACHEVAR=yes" -else +else $as_nop eval "$as_CACHEVAR=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$ax_check_save_flags fi eval ac_res=\$$as_CACHEVAR - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : -if ${WARN_CFLAGS+:} false; then : +if test ${WARN_CFLAGS+y} +then : case " $WARN_CFLAGS " in #( *" $flag "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains \$flag"; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains \$flag"; } >&5 (: WARN_CFLAGS already contains $flag) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : as_fn_append WARN_CFLAGS " $flag" - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac -else +else $as_nop WARN_CFLAGS=$flag - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } fi -else +else $as_nop : fi @@ -14059,11 +14938,12 @@ # and Clang warns on them for every compilation unit. # If this is passed to GCC, it will explode, so the flag must be enabled # conditionally. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Werror=unknown-warning-option" >&5 -$as_echo_n "checking whether C compiler accepts -Werror=unknown-warning-option... " >&6; } -if ${ax_cv_check_cflags___Werror_unknown_warning_option+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Werror=unknown-warning-option" >&5 +printf %s "checking whether C compiler accepts -Werror=unknown-warning-option... " >&6; } +if test ${ax_cv_check_cflags___Werror_unknown_warning_option+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS -Werror=unknown-warning-option" @@ -14071,39 +14951,42 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ax_cv_check_cflags___Werror_unknown_warning_option=yes -else +else $as_nop ax_cv_check_cflags___Werror_unknown_warning_option=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$ax_check_save_flags fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Werror_unknown_warning_option" >&5 -$as_echo "$ax_cv_check_cflags___Werror_unknown_warning_option" >&6; } -if test "x$ax_cv_check_cflags___Werror_unknown_warning_option" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Werror_unknown_warning_option" >&5 +printf "%s\n" "$ax_cv_check_cflags___Werror_unknown_warning_option" >&6; } +if test "x$ax_cv_check_cflags___Werror_unknown_warning_option" = xyes +then : ax_compiler_flags_test="-Werror=unknown-warning-option" -else +else $as_nop ax_compiler_flags_test="" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,--as-needed" >&5 -$as_echo_n "checking whether the linker accepts -Wl,--as-needed... " >&6; } -if ${ax_cv_check_ldflags___Wl___as_needed+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,--as-needed" >&5 +printf %s "checking whether the linker accepts -Wl,--as-needed... " >&6; } +if test ${ax_cv_check_ldflags___Wl___as_needed+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,--as-needed" @@ -14111,37 +14994,40 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ax_cv_check_ldflags___Wl___as_needed=yes -else +else $as_nop ax_cv_check_ldflags___Wl___as_needed=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$ax_check_save_flags fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl___as_needed" >&5 -$as_echo "$ax_cv_check_ldflags___Wl___as_needed" >&6; } -if test "x$ax_cv_check_ldflags___Wl___as_needed" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl___as_needed" >&5 +printf "%s\n" "$ax_cv_check_ldflags___Wl___as_needed" >&6; } +if test "x$ax_cv_check_ldflags___Wl___as_needed" = xyes +then : for flag in -Wl,--as-needed; do - as_CACHEVAR=`$as_echo "ax_cv_check_ldflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts $flag" >&5 -$as_echo_n "checking whether the linker accepts $flag... " >&6; } -if eval \${$as_CACHEVAR+:} false; then : - $as_echo_n "(cached) " >&6 -else + as_CACHEVAR=`printf "%s\n" "ax_cv_check_ldflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts $flag" >&5 +printf %s "checking whether the linker accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$LDFLAGS LDFLAGS="$LDFLAGS $ax_compiler_flags_test $flag" @@ -14149,74 +15035,78 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$as_CACHEVAR=yes" -else +else $as_nop eval "$as_CACHEVAR=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$ax_check_save_flags fi eval ac_res=\$$as_CACHEVAR - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : -if ${AM_LDFLAGS+:} false; then : +if test ${AM_LDFLAGS+y} +then : case " $AM_LDFLAGS " in #( *" $flag "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS already contains \$flag"; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS already contains \$flag"; } >&5 (: AM_LDFLAGS already contains $flag) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : as_fn_append AM_LDFLAGS " $flag" - { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS=\"\$AM_LDFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS=\"\$AM_LDFLAGS\""; } >&5 (: AM_LDFLAGS="$AM_LDFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac -else +else $as_nop AM_LDFLAGS=$flag - { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS=\"\$AM_LDFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS=\"\$AM_LDFLAGS\""; } >&5 (: AM_LDFLAGS="$AM_LDFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } fi -else +else $as_nop : fi done -else +else $as_nop : fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,-z,relro" >&5 -$as_echo_n "checking whether the linker accepts -Wl,-z,relro... " >&6; } -if ${ax_cv_check_ldflags___Wl__z_relro+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,-z,relro" >&5 +printf %s "checking whether the linker accepts -Wl,-z,relro... " >&6; } +if test ${ax_cv_check_ldflags___Wl__z_relro+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-z,relro" @@ -14224,37 +15114,40 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ax_cv_check_ldflags___Wl__z_relro=yes -else +else $as_nop ax_cv_check_ldflags___Wl__z_relro=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$ax_check_save_flags fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl__z_relro" >&5 -$as_echo "$ax_cv_check_ldflags___Wl__z_relro" >&6; } -if test "x$ax_cv_check_ldflags___Wl__z_relro" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl__z_relro" >&5 +printf "%s\n" "$ax_cv_check_ldflags___Wl__z_relro" >&6; } +if test "x$ax_cv_check_ldflags___Wl__z_relro" = xyes +then : for flag in -Wl,-z,relro; do - as_CACHEVAR=`$as_echo "ax_cv_check_ldflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts $flag" >&5 -$as_echo_n "checking whether the linker accepts $flag... " >&6; } -if eval \${$as_CACHEVAR+:} false; then : - $as_echo_n "(cached) " >&6 -else + as_CACHEVAR=`printf "%s\n" "ax_cv_check_ldflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts $flag" >&5 +printf %s "checking whether the linker accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$LDFLAGS LDFLAGS="$LDFLAGS $ax_compiler_flags_test $flag" @@ -14262,74 +15155,78 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$as_CACHEVAR=yes" -else +else $as_nop eval "$as_CACHEVAR=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$ax_check_save_flags fi eval ac_res=\$$as_CACHEVAR - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : -if ${AM_LDFLAGS+:} false; then : +if test ${AM_LDFLAGS+y} +then : case " $AM_LDFLAGS " in #( *" $flag "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS already contains \$flag"; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS already contains \$flag"; } >&5 (: AM_LDFLAGS already contains $flag) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : as_fn_append AM_LDFLAGS " $flag" - { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS=\"\$AM_LDFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS=\"\$AM_LDFLAGS\""; } >&5 (: AM_LDFLAGS="$AM_LDFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac -else +else $as_nop AM_LDFLAGS=$flag - { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS=\"\$AM_LDFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS=\"\$AM_LDFLAGS\""; } >&5 (: AM_LDFLAGS="$AM_LDFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } fi -else +else $as_nop : fi done -else +else $as_nop : fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,-z,now" >&5 -$as_echo_n "checking whether the linker accepts -Wl,-z,now... " >&6; } -if ${ax_cv_check_ldflags___Wl__z_now+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,-z,now" >&5 +printf %s "checking whether the linker accepts -Wl,-z,now... " >&6; } +if test ${ax_cv_check_ldflags___Wl__z_now+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-z,now" @@ -14337,37 +15234,40 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ax_cv_check_ldflags___Wl__z_now=yes -else +else $as_nop ax_cv_check_ldflags___Wl__z_now=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$ax_check_save_flags fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl__z_now" >&5 -$as_echo "$ax_cv_check_ldflags___Wl__z_now" >&6; } -if test "x$ax_cv_check_ldflags___Wl__z_now" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl__z_now" >&5 +printf "%s\n" "$ax_cv_check_ldflags___Wl__z_now" >&6; } +if test "x$ax_cv_check_ldflags___Wl__z_now" = xyes +then : for flag in -Wl,-z,now; do - as_CACHEVAR=`$as_echo "ax_cv_check_ldflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts $flag" >&5 -$as_echo_n "checking whether the linker accepts $flag... " >&6; } -if eval \${$as_CACHEVAR+:} false; then : - $as_echo_n "(cached) " >&6 -else + as_CACHEVAR=`printf "%s\n" "ax_cv_check_ldflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts $flag" >&5 +printf %s "checking whether the linker accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$LDFLAGS LDFLAGS="$LDFLAGS $ax_compiler_flags_test $flag" @@ -14375,74 +15275,78 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$as_CACHEVAR=yes" -else +else $as_nop eval "$as_CACHEVAR=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$ax_check_save_flags fi eval ac_res=\$$as_CACHEVAR - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : -if ${AM_LDFLAGS+:} false; then : +if test ${AM_LDFLAGS+y} +then : case " $AM_LDFLAGS " in #( *" $flag "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS already contains \$flag"; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS already contains \$flag"; } >&5 (: AM_LDFLAGS already contains $flag) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : as_fn_append AM_LDFLAGS " $flag" - { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS=\"\$AM_LDFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS=\"\$AM_LDFLAGS\""; } >&5 (: AM_LDFLAGS="$AM_LDFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac -else +else $as_nop AM_LDFLAGS=$flag - { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS=\"\$AM_LDFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS=\"\$AM_LDFLAGS\""; } >&5 (: AM_LDFLAGS="$AM_LDFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } fi -else +else $as_nop : fi done -else +else $as_nop : fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,-z,noexecstack" >&5 -$as_echo_n "checking whether the linker accepts -Wl,-z,noexecstack... " >&6; } -if ${ax_cv_check_ldflags___Wl__z_noexecstack+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,-z,noexecstack" >&5 +printf %s "checking whether the linker accepts -Wl,-z,noexecstack... " >&6; } +if test ${ax_cv_check_ldflags___Wl__z_noexecstack+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-z,noexecstack" @@ -14450,37 +15354,40 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ax_cv_check_ldflags___Wl__z_noexecstack=yes -else +else $as_nop ax_cv_check_ldflags___Wl__z_noexecstack=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$ax_check_save_flags fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl__z_noexecstack" >&5 -$as_echo "$ax_cv_check_ldflags___Wl__z_noexecstack" >&6; } -if test "x$ax_cv_check_ldflags___Wl__z_noexecstack" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl__z_noexecstack" >&5 +printf "%s\n" "$ax_cv_check_ldflags___Wl__z_noexecstack" >&6; } +if test "x$ax_cv_check_ldflags___Wl__z_noexecstack" = xyes +then : for flag in -Wl,-z,noexecstack; do - as_CACHEVAR=`$as_echo "ax_cv_check_ldflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts $flag" >&5 -$as_echo_n "checking whether the linker accepts $flag... " >&6; } -if eval \${$as_CACHEVAR+:} false; then : - $as_echo_n "(cached) " >&6 -else + as_CACHEVAR=`printf "%s\n" "ax_cv_check_ldflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts $flag" >&5 +printf %s "checking whether the linker accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$LDFLAGS LDFLAGS="$LDFLAGS $ax_compiler_flags_test $flag" @@ -14488,77 +15395,81 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$as_CACHEVAR=yes" -else +else $as_nop eval "$as_CACHEVAR=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$ax_check_save_flags fi eval ac_res=\$$as_CACHEVAR - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : -if ${AM_LDFLAGS+:} false; then : +if test ${AM_LDFLAGS+y} +then : case " $AM_LDFLAGS " in #( *" $flag "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS already contains \$flag"; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS already contains \$flag"; } >&5 (: AM_LDFLAGS already contains $flag) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : as_fn_append AM_LDFLAGS " $flag" - { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS=\"\$AM_LDFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS=\"\$AM_LDFLAGS\""; } >&5 (: AM_LDFLAGS="$AM_LDFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac -else +else $as_nop AM_LDFLAGS=$flag - { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS=\"\$AM_LDFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS=\"\$AM_LDFLAGS\""; } >&5 (: AM_LDFLAGS="$AM_LDFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } fi -else +else $as_nop : fi done -else +else $as_nop : fi # textonly, retpolineplt not yet # macOS and cygwin linker do not have --as-needed - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,--no-as-needed" >&5 -$as_echo_n "checking whether the linker accepts -Wl,--no-as-needed... " >&6; } -if ${ax_cv_check_ldflags___Wl___no_as_needed+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,--no-as-needed" >&5 +printf %s "checking whether the linker accepts -Wl,--no-as-needed... " >&6; } +if test ${ax_cv_check_ldflags___Wl___no_as_needed+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,--no-as-needed" @@ -14566,29 +15477,31 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ax_cv_check_ldflags___Wl___no_as_needed=yes -else +else $as_nop ax_cv_check_ldflags___Wl___no_as_needed=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$ax_check_save_flags fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl___no_as_needed" >&5 -$as_echo "$ax_cv_check_ldflags___Wl___no_as_needed" >&6; } -if test "x$ax_cv_check_ldflags___Wl___no_as_needed" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl___no_as_needed" >&5 +printf "%s\n" "$ax_cv_check_ldflags___Wl___no_as_needed" >&6; } +if test "x$ax_cv_check_ldflags___Wl___no_as_needed" = xyes +then : ax_compiler_flags_as_needed_option="-Wl,--no-as-needed" -else +else $as_nop ax_compiler_flags_as_needed_option="" @@ -14597,11 +15510,12 @@ # macOS linker speaks with a different accent ax_compiler_flags_fatal_warnings_option="" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,--fatal-warnings" >&5 -$as_echo_n "checking whether the linker accepts -Wl,--fatal-warnings... " >&6; } -if ${ax_cv_check_ldflags___Wl___fatal_warnings+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,--fatal-warnings" >&5 +printf %s "checking whether the linker accepts -Wl,--fatal-warnings... " >&6; } +if test ${ax_cv_check_ldflags___Wl___fatal_warnings+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,--fatal-warnings" @@ -14609,37 +15523,40 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ax_cv_check_ldflags___Wl___fatal_warnings=yes -else +else $as_nop ax_cv_check_ldflags___Wl___fatal_warnings=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$ax_check_save_flags fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl___fatal_warnings" >&5 -$as_echo "$ax_cv_check_ldflags___Wl___fatal_warnings" >&6; } -if test "x$ax_cv_check_ldflags___Wl___fatal_warnings" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl___fatal_warnings" >&5 +printf "%s\n" "$ax_cv_check_ldflags___Wl___fatal_warnings" >&6; } +if test "x$ax_cv_check_ldflags___Wl___fatal_warnings" = xyes +then : ax_compiler_flags_fatal_warnings_option="-Wl,--fatal-warnings" -else +else $as_nop : fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,-fatal_warnings" >&5 -$as_echo_n "checking whether the linker accepts -Wl,-fatal_warnings... " >&6; } -if ${ax_cv_check_ldflags___Wl__fatal_warnings+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,-fatal_warnings" >&5 +printf %s "checking whether the linker accepts -Wl,-fatal_warnings... " >&6; } +if test ${ax_cv_check_ldflags___Wl__fatal_warnings+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,-fatal_warnings" @@ -14647,29 +15564,31 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ax_cv_check_ldflags___Wl__fatal_warnings=yes -else +else $as_nop ax_cv_check_ldflags___Wl__fatal_warnings=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$ax_check_save_flags fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl__fatal_warnings" >&5 -$as_echo "$ax_cv_check_ldflags___Wl__fatal_warnings" >&6; } -if test "x$ax_cv_check_ldflags___Wl__fatal_warnings" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl__fatal_warnings" >&5 +printf "%s\n" "$ax_cv_check_ldflags___Wl__fatal_warnings" >&6; } +if test "x$ax_cv_check_ldflags___Wl__fatal_warnings" = xyes +then : ax_compiler_flags_fatal_warnings_option="-Wl,-fatal_warnings" -else +else $as_nop : fi @@ -14680,12 +15599,13 @@ for flag in $ax_compiler_flags_as_needed_option ; do - as_CACHEVAR=`$as_echo "ax_cv_check_ldflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts $flag" >&5 -$as_echo_n "checking whether the linker accepts $flag... " >&6; } -if eval \${$as_CACHEVAR+:} false; then : - $as_echo_n "(cached) " >&6 -else + as_CACHEVAR=`printf "%s\n" "ax_cv_check_ldflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts $flag" >&5 +printf %s "checking whether the linker accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$LDFLAGS LDFLAGS="$LDFLAGS $ax_compiler_flags_test $flag" @@ -14693,66 +15613,70 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$as_CACHEVAR=yes" -else +else $as_nop eval "$as_CACHEVAR=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$ax_check_save_flags fi eval ac_res=\$$as_CACHEVAR - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : -if ${WARN_LDFLAGS+:} false; then : +if test ${WARN_LDFLAGS+y} +then : case " $WARN_LDFLAGS " in #( *" $flag "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS already contains \$flag"; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS already contains \$flag"; } >&5 (: WARN_LDFLAGS already contains $flag) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : as_fn_append WARN_LDFLAGS " $flag" - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS=\"\$WARN_LDFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS=\"\$WARN_LDFLAGS\""; } >&5 (: WARN_LDFLAGS="$WARN_LDFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac -else +else $as_nop WARN_LDFLAGS=$flag - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS=\"\$WARN_LDFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS=\"\$WARN_LDFLAGS\""; } >&5 (: WARN_LDFLAGS="$WARN_LDFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } fi -else +else $as_nop : fi done - if test "$ax_enable_compile_warnings" != "no"; then : + if test "$ax_enable_compile_warnings" != "no" +then : # "yes" flags @@ -14760,12 +15684,13 @@ for flag in ; do - as_CACHEVAR=`$as_echo "ax_cv_check_ldflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts $flag" >&5 -$as_echo_n "checking whether the linker accepts $flag... " >&6; } -if eval \${$as_CACHEVAR+:} false; then : - $as_echo_n "(cached) " >&6 -else + as_CACHEVAR=`printf "%s\n" "ax_cv_check_ldflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts $flag" >&5 +printf %s "checking whether the linker accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$LDFLAGS LDFLAGS="$LDFLAGS $ax_compiler_flags_test $flag" @@ -14773,59 +15698,62 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$as_CACHEVAR=yes" -else +else $as_nop eval "$as_CACHEVAR=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$ax_check_save_flags fi eval ac_res=\$$as_CACHEVAR - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : -if ${WARN_LDFLAGS+:} false; then : +if test ${WARN_LDFLAGS+y} +then : case " $WARN_LDFLAGS " in #( *" $flag "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS already contains \$flag"; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS already contains \$flag"; } >&5 (: WARN_LDFLAGS already contains $flag) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : as_fn_append WARN_LDFLAGS " $flag" - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS=\"\$WARN_LDFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS=\"\$WARN_LDFLAGS\""; } >&5 (: WARN_LDFLAGS="$WARN_LDFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac -else +else $as_nop WARN_LDFLAGS=$flag - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS=\"\$WARN_LDFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS=\"\$WARN_LDFLAGS\""; } >&5 (: WARN_LDFLAGS="$WARN_LDFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } fi -else +else $as_nop : fi @@ -14833,7 +15761,8 @@ fi - if test "$ax_enable_compile_warnings" = "error"; then : + if test "$ax_enable_compile_warnings" = "error" +then : # "error" flags; -Werror has to be appended unconditionally because # it's not possible to test for @@ -14845,12 +15774,13 @@ for flag in $ax_compiler_flags_fatal_warnings_option ; do - as_CACHEVAR=`$as_echo "ax_cv_check_ldflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts $flag" >&5 -$as_echo_n "checking whether the linker accepts $flag... " >&6; } -if eval \${$as_CACHEVAR+:} false; then : - $as_echo_n "(cached) " >&6 -else + as_CACHEVAR=`printf "%s\n" "ax_cv_check_ldflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts $flag" >&5 +printf %s "checking whether the linker accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$LDFLAGS LDFLAGS="$LDFLAGS $ax_compiler_flags_test $flag" @@ -14858,59 +15788,62 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$as_CACHEVAR=yes" -else +else $as_nop eval "$as_CACHEVAR=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$ax_check_save_flags fi eval ac_res=\$$as_CACHEVAR - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : -if ${WARN_LDFLAGS+:} false; then : +if test ${WARN_LDFLAGS+y} +then : case " $WARN_LDFLAGS " in #( *" $flag "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS already contains \$flag"; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS already contains \$flag"; } >&5 (: WARN_LDFLAGS already contains $flag) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : as_fn_append WARN_LDFLAGS " $flag" - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS=\"\$WARN_LDFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS=\"\$WARN_LDFLAGS\""; } >&5 (: WARN_LDFLAGS="$WARN_LDFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac -else +else $as_nop WARN_LDFLAGS=$flag - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS=\"\$WARN_LDFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS=\"\$WARN_LDFLAGS\""; } >&5 (: WARN_LDFLAGS="$WARN_LDFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } fi -else +else $as_nop : fi @@ -14931,106 +15864,111 @@ # Base flags -if ${WARN_SCANNERFLAGS+:} false; then : +if test ${WARN_SCANNERFLAGS+y} +then : case " $WARN_SCANNERFLAGS " in #( *" "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS already contains "; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS already contains "; } >&5 (: WARN_SCANNERFLAGS already contains ) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : as_fn_append WARN_SCANNERFLAGS " " - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS=\"\$WARN_SCANNERFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS=\"\$WARN_SCANNERFLAGS\""; } >&5 (: WARN_SCANNERFLAGS="$WARN_SCANNERFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac -else +else $as_nop WARN_SCANNERFLAGS= - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS=\"\$WARN_SCANNERFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS=\"\$WARN_SCANNERFLAGS\""; } >&5 (: WARN_SCANNERFLAGS="$WARN_SCANNERFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } fi - if test "$ax_enable_compile_warnings" != "no"; then : + if test "$ax_enable_compile_warnings" != "no" +then : # "yes" flags -if ${WARN_SCANNERFLAGS+:} false; then : +if test ${WARN_SCANNERFLAGS+y} +then : case " $WARN_SCANNERFLAGS " in #( *" --warn-all "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS already contains --warn-all "; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS already contains --warn-all "; } >&5 (: WARN_SCANNERFLAGS already contains --warn-all ) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : as_fn_append WARN_SCANNERFLAGS " --warn-all " - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS=\"\$WARN_SCANNERFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS=\"\$WARN_SCANNERFLAGS\""; } >&5 (: WARN_SCANNERFLAGS="$WARN_SCANNERFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac -else +else $as_nop WARN_SCANNERFLAGS= --warn-all - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS=\"\$WARN_SCANNERFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS=\"\$WARN_SCANNERFLAGS\""; } >&5 (: WARN_SCANNERFLAGS="$WARN_SCANNERFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } fi fi - if test "$ax_enable_compile_warnings" = "error"; then : + if test "$ax_enable_compile_warnings" = "error" +then : # "error" flags -if ${WARN_SCANNERFLAGS+:} false; then : +if test ${WARN_SCANNERFLAGS+y} +then : case " $WARN_SCANNERFLAGS " in #( *" --warn-error "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS already contains --warn-error "; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS already contains --warn-error "; } >&5 (: WARN_SCANNERFLAGS already contains --warn-error ) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : as_fn_append WARN_SCANNERFLAGS " --warn-error " - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS=\"\$WARN_SCANNERFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS=\"\$WARN_SCANNERFLAGS\""; } >&5 (: WARN_SCANNERFLAGS="$WARN_SCANNERFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac -else +else $as_nop WARN_SCANNERFLAGS= --warn-error - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS=\"\$WARN_SCANNERFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS=\"\$WARN_SCANNERFLAGS\""; } >&5 (: WARN_SCANNERFLAGS="$WARN_SCANNERFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } fi @@ -15068,30 +16006,32 @@ #error "no C++" #endif int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ax_compiler_cxx=yes; -else +else $as_nop ax_compiler_cxx=no; fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # Always pass -Werror=unknown-warning-option to get Clang to fail on bad # flags, otherwise they are always appended to the warn_cflags variable, and # Clang warns on them for every compilation unit. # If this is passed to GCC, it will explode, so the flag must be enabled # conditionally. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Werror=unknown-warning-option" >&5 -$as_echo_n "checking whether C compiler accepts -Werror=unknown-warning-option... " >&6; } -if ${ax_cv_check_cflags___Werror_unknown_warning_option+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Werror=unknown-warning-option" >&5 +printf %s "checking whether C compiler accepts -Werror=unknown-warning-option... " >&6; } +if test ${ax_cv_check_cflags___Werror_unknown_warning_option+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS -Werror=unknown-warning-option" @@ -15099,28 +16039,30 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ax_cv_check_cflags___Werror_unknown_warning_option=yes -else +else $as_nop ax_cv_check_cflags___Werror_unknown_warning_option=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$ax_check_save_flags fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Werror_unknown_warning_option" >&5 -$as_echo "$ax_cv_check_cflags___Werror_unknown_warning_option" >&6; } -if test "x$ax_cv_check_cflags___Werror_unknown_warning_option" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Werror_unknown_warning_option" >&5 +printf "%s\n" "$ax_cv_check_cflags___Werror_unknown_warning_option" >&6; } +if test "x$ax_cv_check_cflags___Werror_unknown_warning_option" = xyes +then : ax_compiler_flags_test="-Werror=unknown-warning-option" -else +else $as_nop ax_compiler_flags_test="" @@ -15128,11 +16070,12 @@ # Check that -Wno-suggest-attribute=format is supported - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Wno-suggest-attribute=format" >&5 -$as_echo_n "checking whether C compiler accepts -Wno-suggest-attribute=format... " >&6; } -if ${ax_cv_check_cflags___Wno_suggest_attribute_format+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Wno-suggest-attribute=format" >&5 +printf %s "checking whether C compiler accepts -Wno-suggest-attribute=format... " >&6; } +if test ${ax_cv_check_cflags___Wno_suggest_attribute_format+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS -Wno-suggest-attribute=format" @@ -15140,28 +16083,30 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ax_cv_check_cflags___Wno_suggest_attribute_format=yes -else +else $as_nop ax_cv_check_cflags___Wno_suggest_attribute_format=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$ax_check_save_flags fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Wno_suggest_attribute_format" >&5 -$as_echo "$ax_cv_check_cflags___Wno_suggest_attribute_format" >&6; } -if test "x$ax_cv_check_cflags___Wno_suggest_attribute_format" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Wno_suggest_attribute_format" >&5 +printf "%s\n" "$ax_cv_check_cflags___Wno_suggest_attribute_format" >&6; } +if test "x$ax_cv_check_cflags___Wno_suggest_attribute_format" = xyes +then : ax_compiler_no_suggest_attribute_flags="-Wno-suggest-attribute=format" -else +else $as_nop ax_compiler_no_suggest_attribute_flags="" @@ -15174,12 +16119,13 @@ for flag in -fno-strict-aliasing ; do - as_CACHEVAR=`$as_echo "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 -$as_echo_n "checking whether C compiler accepts $flag... " >&6; } -if eval \${$as_CACHEVAR+:} false; then : - $as_echo_n "(cached) " >&6 -else + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +printf %s "checking whether C compiler accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS $ax_compiler_flags_test $flag" @@ -15187,65 +16133,69 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$as_CACHEVAR=yes" -else +else $as_nop eval "$as_CACHEVAR=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$ax_check_save_flags fi eval ac_res=\$$as_CACHEVAR - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : -if ${WARN_CFLAGS+:} false; then : +if test ${WARN_CFLAGS+y} +then : case " $WARN_CFLAGS " in #( *" $flag "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains \$flag"; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains \$flag"; } >&5 (: WARN_CFLAGS already contains $flag) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : as_fn_append WARN_CFLAGS " $flag" - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac -else +else $as_nop WARN_CFLAGS=$flag - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } fi -else +else $as_nop : fi done - if test "$ax_enable_compile_warnings" != "no"; then : + if test "$ax_enable_compile_warnings" != "no" +then : if test "$ax_compiler_cxx" = "no" ; then # C-only flags. Warn in C++ @@ -15254,12 +16204,13 @@ for flag in -Wnested-externs -Wmissing-prototypes -Wstrict-prototypes -Wdeclaration-after-statement -Wimplicit-function-declaration -Wold-style-definition -Wjump-misses-init ; do - as_CACHEVAR=`$as_echo "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 -$as_echo_n "checking whether C compiler accepts $flag... " >&6; } -if eval \${$as_CACHEVAR+:} false; then : - $as_echo_n "(cached) " >&6 -else + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +printf %s "checking whether C compiler accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS $ax_compiler_flags_test $flag" @@ -15267,58 +16218,61 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$as_CACHEVAR=yes" -else +else $as_nop eval "$as_CACHEVAR=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$ax_check_save_flags fi eval ac_res=\$$as_CACHEVAR - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : -if ${WARN_CFLAGS+:} false; then : +if test ${WARN_CFLAGS+y} +then : case " $WARN_CFLAGS " in #( *" $flag "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains \$flag"; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains \$flag"; } >&5 (: WARN_CFLAGS already contains $flag) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : as_fn_append WARN_CFLAGS " $flag" - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac -else +else $as_nop WARN_CFLAGS=$flag - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } fi -else +else $as_nop : fi @@ -15332,12 +16286,13 @@ for flag in -Wall -Wextra -Wundef -Wwrite-strings -Wpointer-arith -Wmissing-declarations -Wredundant-decls -Wno-unused-parameter -Wno-missing-field-initializers -Wformat=2 -Wcast-align -Wformat-nonliteral -Wformat-security -Wsign-compare -Wstrict-aliasing -Wshadow -Winline -Wpacked -Wmissing-format-attribute -Wmissing-noreturn -Winit-self -Wredundant-decls -Wmissing-include-dirs -Wunused-but-set-variable -Warray-bounds -Wreturn-type -Wswitch-enum -Wswitch-default -Wduplicated-cond -Wduplicated-branches -Wlogical-op -Wrestrict -Wnull-dereference -Wdouble-promotion ${DISABLED_WARNINGS} ; do - as_CACHEVAR=`$as_echo "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 -$as_echo_n "checking whether C compiler accepts $flag... " >&6; } -if eval \${$as_CACHEVAR+:} false; then : - $as_echo_n "(cached) " >&6 -else + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +printf %s "checking whether C compiler accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS $ax_compiler_flags_test $flag" @@ -15345,58 +16300,61 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$as_CACHEVAR=yes" -else +else $as_nop eval "$as_CACHEVAR=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$ax_check_save_flags fi eval ac_res=\$$as_CACHEVAR - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : -if ${WARN_CFLAGS+:} false; then : +if test ${WARN_CFLAGS+y} +then : case " $WARN_CFLAGS " in #( *" $flag "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains \$flag"; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains \$flag"; } >&5 (: WARN_CFLAGS already contains $flag) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : as_fn_append WARN_CFLAGS " $flag" - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac -else +else $as_nop WARN_CFLAGS=$flag - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } fi -else +else $as_nop : fi @@ -15404,7 +16362,8 @@ fi - if test "$ax_enable_compile_warnings" = "error"; then : + if test "$ax_enable_compile_warnings" = "error" +then : # "error" flags; -Werror has to be appended unconditionally because # it's not possible to test for @@ -15412,33 +16371,34 @@ # suggest-attribute=format is disabled because it gives too many false # positives -if ${WARN_CFLAGS+:} false; then : +if test ${WARN_CFLAGS+y} +then : case " $WARN_CFLAGS " in #( *" -Werror "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains -Werror"; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains -Werror"; } >&5 (: WARN_CFLAGS already contains -Werror) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : as_fn_append WARN_CFLAGS " -Werror" - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac -else +else $as_nop WARN_CFLAGS=-Werror - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } fi @@ -15449,12 +16409,13 @@ for flag in $ax_compiler_no_suggest_attribute_flags ; do - as_CACHEVAR=`$as_echo "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 -$as_echo_n "checking whether C compiler accepts $flag... " >&6; } -if eval \${$as_CACHEVAR+:} false; then : - $as_echo_n "(cached) " >&6 -else + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +printf %s "checking whether C compiler accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS $ax_compiler_flags_test $flag" @@ -15462,58 +16423,61 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$as_CACHEVAR=yes" -else +else $as_nop eval "$as_CACHEVAR=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$ax_check_save_flags fi eval ac_res=\$$as_CACHEVAR - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : -if ${WARN_CFLAGS+:} false; then : +if test ${WARN_CFLAGS+y} +then : case " $WARN_CFLAGS " in #( *" $flag "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains \$flag"; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains \$flag"; } >&5 (: WARN_CFLAGS already contains $flag) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : as_fn_append WARN_CFLAGS " $flag" - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac -else +else $as_nop WARN_CFLAGS=$flag - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } fi -else +else $as_nop : fi @@ -15536,13 +16500,14 @@ -for flag in -Wno-error=$($as_echo $flag | $SED 's/^-Wno-//'); do - as_CACHEVAR=`$as_echo "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 -$as_echo_n "checking whether C compiler accepts $flag... " >&6; } -if eval \${$as_CACHEVAR+:} false; then : - $as_echo_n "(cached) " >&6 -else +for flag in -Wno-error=$(printf "%s\n" $flag | $SED 's/^-Wno-//'); do + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +printf %s "checking whether C compiler accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS $ax_compiler_flags_test $flag" @@ -15550,58 +16515,61 @@ /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$as_CACHEVAR=yes" -else +else $as_nop eval "$as_CACHEVAR=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS=$ax_check_save_flags fi eval ac_res=\$$as_CACHEVAR - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes" +then : -if ${WARN_CFLAGS+:} false; then : +if test ${WARN_CFLAGS+y} +then : case " $WARN_CFLAGS " in #( *" $flag "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains \$flag"; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains \$flag"; } >&5 (: WARN_CFLAGS already contains $flag) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : as_fn_append WARN_CFLAGS " $flag" - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; esac -else +else $as_nop WARN_CFLAGS=$flag - { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5 (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } fi -else +else $as_nop : fi @@ -15630,17 +16598,17 @@ MM_MAJOR_VERSION=1 -MM_MINOR_VERSION=14 -MM_MICRO_VERSION=10 -MM_VERSION=1.14.10 +MM_MINOR_VERSION=16 +MM_MICRO_VERSION=6 +MM_VERSION=1.16.6 -MM_GLIB_LT_CURRENT=6 +MM_GLIB_LT_CURRENT=7 MM_GLIB_LT_REVISION=0 -MM_GLIB_LT_AGE=6 +MM_GLIB_LT_AGE=7 @@ -15657,11 +16625,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. @@ -15671,11 +16640,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -15687,11 +16660,11 @@ fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf "%s\n" "$PKG_CONFIG" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -15700,11 +16673,12 @@ ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. @@ -15714,11 +16688,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -15730,11 +16708,11 @@ fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 -$as_echo "$ac_pt_PKG_CONFIG" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then @@ -15742,8 +16720,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG @@ -15755,14 +16733,14 @@ fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 -$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } PKG_CONFIG="" fi fi @@ -15770,37 +16748,38 @@ gtk_doc_requires="gtk-doc >= 1.0" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gtk-doc" >&5 -$as_echo_n "checking for gtk-doc... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gtk-doc" >&5 +printf %s "checking for gtk-doc... " >&6; } if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$gtk_doc_requires\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$gtk_doc_requires\""; } >&5 ($PKG_CONFIG --exists --print-errors "$gtk_doc_requires") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then have_gtk_doc=yes else have_gtk_doc=no fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_gtk_doc" >&5 -$as_echo "$have_gtk_doc" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_gtk_doc" >&5 +printf "%s\n" "$have_gtk_doc" >&6; } if test "$have_gtk_doc" = "no"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: You will not be able to create source packages with 'make dist' because $gtk_doc_requires is not found." >&5 -$as_echo "$as_me: WARNING: +printf "%s\n" "$as_me: WARNING: You will not be able to create source packages with 'make dist' because $gtk_doc_requires is not found." >&2;} fi # Extract the first word of "gtkdoc-check", so it can be a program name with args. set dummy gtkdoc-check; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_GTKDOC_CHECK+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_GTKDOC_CHECK+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$GTKDOC_CHECK"; then ac_cv_prog_GTKDOC_CHECK="$GTKDOC_CHECK" # Let the user override the test. else @@ -15808,11 +16787,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_GTKDOC_CHECK="gtkdoc-check.test" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -15823,21 +16806,22 @@ fi GTKDOC_CHECK=$ac_cv_prog_GTKDOC_CHECK if test -n "$GTKDOC_CHECK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK" >&5 -$as_echo "$GTKDOC_CHECK" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK" >&5 +printf "%s\n" "$GTKDOC_CHECK" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi # Extract the first word of "gtkdoc-check", so it can be a program name with args. set dummy gtkdoc-check; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GTKDOC_CHECK_PATH+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GTKDOC_CHECK_PATH+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $GTKDOC_CHECK_PATH in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_CHECK_PATH="$GTKDOC_CHECK_PATH" # Let the user override the test with a path. @@ -15847,11 +16831,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GTKDOC_CHECK_PATH="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_GTKDOC_CHECK_PATH="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -15863,11 +16851,11 @@ fi GTKDOC_CHECK_PATH=$ac_cv_path_GTKDOC_CHECK_PATH if test -n "$GTKDOC_CHECK_PATH"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK_PATH" >&5 -$as_echo "$GTKDOC_CHECK_PATH" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK_PATH" >&5 +printf "%s\n" "$GTKDOC_CHECK_PATH" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -15875,11 +16863,12 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GTKDOC_REBASE+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GTKDOC_REBASE+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $GTKDOC_REBASE in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_REBASE="$GTKDOC_REBASE" # Let the user override the test with a path. @@ -15889,11 +16878,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GTKDOC_REBASE="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_GTKDOC_REBASE="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -15905,11 +16898,11 @@ fi GTKDOC_REBASE=$ac_cv_path_GTKDOC_REBASE if test -n "$GTKDOC_REBASE"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_REBASE" >&5 -$as_echo "$GTKDOC_REBASE" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_REBASE" >&5 +printf "%s\n" "$GTKDOC_REBASE" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -15919,11 +16912,12 @@ # Extract the first word of "gtkdoc-mkpdf", so it can be a program name with args. set dummy gtkdoc-mkpdf; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GTKDOC_MKPDF+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GTKDOC_MKPDF+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $GTKDOC_MKPDF in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_MKPDF="$GTKDOC_MKPDF" # Let the user override the test with a path. @@ -15933,11 +16927,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GTKDOC_MKPDF="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_GTKDOC_MKPDF="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -15949,20 +16947,21 @@ fi GTKDOC_MKPDF=$ac_cv_path_GTKDOC_MKPDF if test -n "$GTKDOC_MKPDF"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_MKPDF" >&5 -$as_echo "$GTKDOC_MKPDF" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_MKPDF" >&5 +printf "%s\n" "$GTKDOC_MKPDF" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi # Check whether --with-html-dir was given. -if test "${with_html_dir+set}" = set; then : +if test ${with_html_dir+y} +then : withval=$with_html_dir; -else +else $as_nop with_html_dir='${datadir}/gtk-doc/html' fi @@ -15970,17 +16969,18 @@ # Check whether --enable-gtk-doc was given. -if test "${enable_gtk_doc+set}" = set; then : +if test ${enable_gtk_doc+y} +then : enableval=$enable_gtk_doc; -else +else $as_nop enable_gtk_doc=no fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build gtk-doc documentation" >&5 -$as_echo_n "checking whether to build gtk-doc documentation... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_gtk_doc" >&5 -$as_echo "$enable_gtk_doc" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build gtk-doc documentation" >&5 +printf %s "checking whether to build gtk-doc documentation... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_gtk_doc" >&5 +printf "%s\n" "$enable_gtk_doc" >&6; } if test "x$enable_gtk_doc" = "xyes" && test "$have_gtk_doc" = "no"; then as_fn_error $? " @@ -15992,17 +16992,17 @@ if test "x$PACKAGE_NAME" != "xglib"; then pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTKDOC_DEPS" >&5 -$as_echo_n "checking for GTKDOC_DEPS... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GTKDOC_DEPS" >&5 +printf %s "checking for GTKDOC_DEPS... " >&6; } if test -n "$GTKDOC_DEPS_CFLAGS"; then pkg_cv_GTKDOC_DEPS_CFLAGS="$GTKDOC_DEPS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKDOC_DEPS_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -16016,10 +17016,10 @@ pkg_cv_GTKDOC_DEPS_LIBS="$GTKDOC_DEPS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKDOC_DEPS_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -16033,8 +17033,8 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -16051,29 +17051,31 @@ : elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } : else GTKDOC_DEPS_CFLAGS=$pkg_cv_GTKDOC_DEPS_CFLAGS GTKDOC_DEPS_LIBS=$pkg_cv_GTKDOC_DEPS_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } fi fi # Check whether --enable-gtk-doc-html was given. -if test "${enable_gtk_doc_html+set}" = set; then : +if test ${enable_gtk_doc_html+y} +then : enableval=$enable_gtk_doc_html; -else +else $as_nop enable_gtk_doc_html=yes fi # Check whether --enable-gtk-doc-pdf was given. -if test "${enable_gtk_doc_pdf+set}" = set; then : +if test ${enable_gtk_doc_pdf+y} +then : enableval=$enable_gtk_doc_pdf; -else +else $as_nop enable_gtk_doc_pdf=no fi @@ -16139,17 +17141,18 @@ - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 -$as_echo_n "checking whether NLS is requested... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 +printf %s "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. -if test "${enable_nls+set}" = set; then : +if test ${enable_nls+y} +then : enableval=$enable_nls; USE_NLS=$enableval -else +else $as_nop USE_NLS=yes fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 -$as_echo "$USE_NLS" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf "%s\n" "$USE_NLS" >&6; } @@ -16188,11 +17191,12 @@ # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MSGFMT+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGFMT+y} +then : + printf %s "(cached) " >&6 +else $as_nop case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. @@ -16220,20 +17224,21 @@ fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 -$as_echo "$MSGFMT" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +printf "%s\n" "$MSGFMT" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GMSGFMT+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GMSGFMT+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. @@ -16243,11 +17248,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -16260,11 +17269,11 @@ fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 -$as_echo "$GMSGFMT" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +printf "%s\n" "$GMSGFMT" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -16310,11 +17319,12 @@ # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_XGETTEXT+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_XGETTEXT+y} +then : + printf %s "(cached) " >&6 +else $as_nop case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. @@ -16342,11 +17352,11 @@ fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 -$as_echo "$XGETTEXT" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +printf "%s\n" "$XGETTEXT" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi rm -f messages.po @@ -16387,11 +17397,12 @@ # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MSGMERGE+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGMERGE+y} +then : + printf %s "(cached) " >&6 +else $as_nop case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. @@ -16418,11 +17429,11 @@ fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 -$as_echo "$MSGMERGE" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +printf "%s\n" "$MSGMERGE" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -16454,9 +17465,10 @@ # Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : +if test ${with_gnu_ld+y} +then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else +else $as_nop with_gnu_ld=no fi @@ -16476,8 +17488,8 @@ ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw @@ -16506,15 +17518,16 @@ ;; esac elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } fi -if ${acl_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test ${acl_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -z "$LD"; then acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do @@ -16543,18 +17556,19 @@ LD="$acl_cv_path_LD" if test -n "$LD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -$as_echo "$LD" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +printf "%s\n" "$LD" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${acl_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${acl_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else $as_nop # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 -$as_echo "$acl_cv_prog_gnu_ld" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5 +printf "%s\n" "$acl_cv_prog_gnu_ld" >&6; } with_gnu_ld=$acl_cv_prog_gnu_ld - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 -$as_echo_n "checking for shared library run path origin... " >&6; } -if ${acl_cv_rpath+:} false; then : - $as_echo_n "(cached) " >&6 -else + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 +printf %s "checking for shared library run path origin... " >&6; } +if test ${acl_cv_rpath+y} +then : + printf %s "(cached) " >&6 +else $as_nop CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh @@ -16585,8 +17601,8 @@ acl_cv_rpath=done fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 -$as_echo "$acl_cv_rpath" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 +printf "%s\n" "$acl_cv_rpath" >&6; } wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" @@ -16597,24 +17613,159 @@ acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath was given. -if test "${enable_rpath+set}" = set; then : +if test ${enable_rpath+y} +then : enableval=$enable_rpath; : -else +else $as_nop enable_rpath=yes fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf "%s\n" "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + acl_libdirstem=lib acl_libdirstem2= case "$host_os" in solaris*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 -$as_echo_n "checking for 64-bit host... " >&6; } -if ${gl_cv_solaris_64bit+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 +printf %s "checking for 64-bit host... " >&6; } +if test ${gl_cv_solaris_64bit+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -16624,17 +17775,18 @@ _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "sixtyfour bits" >/dev/null 2>&1; then : + $EGREP "sixtyfour bits" >/dev/null 2>&1 +then : gl_cv_solaris_64bit=yes -else +else $as_nop gl_cv_solaris_64bit=no fi -rm -f conftest* +rm -rf conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 -$as_echo "$gl_cv_solaris_64bit" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 +printf "%s\n" "$gl_cv_solaris_64bit" >&6; } if test $gl_cv_solaris_64bit = yes; then acl_libdirstem=lib/64 case "$host_cpu" in @@ -16693,7 +17845,8 @@ # Check whether --with-libiconv-prefix was given. -if test "${with_libiconv_prefix+set}" = set; then : +if test ${with_libiconv_prefix+y} +then : withval=$with_libiconv_prefix; if test "X$withval" = "Xno"; then use_additional=no @@ -17157,72 +18310,76 @@ - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 -$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } -if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +printf %s "checking for CFPreferencesCopyAppValue... " >&6; } +if test ${gt_cv_func_CFPreferencesCopyAppValue+y} +then : + printf %s "(cached) " >&6 +else $as_nop gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { CFPreferencesCopyAppValue(NULL, NULL) ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : gt_cv_func_CFPreferencesCopyAppValue=yes -else +else $as_nop gt_cv_func_CFPreferencesCopyAppValue=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 -$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +printf "%s\n" "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then -$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h +printf "%s\n" "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 -$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } -if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +printf %s "checking for CFLocaleCopyCurrent... " >&6; } +if test ${gt_cv_func_CFLocaleCopyCurrent+y} +then : + printf %s "(cached) " >&6 +else $as_nop gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { CFLocaleCopyCurrent(); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : gt_cv_func_CFLocaleCopyCurrent=yes -else +else $as_nop gt_cv_func_CFLocaleCopyCurrent=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 -$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +printf "%s\n" "$gt_cv_func_CFLocaleCopyCurrent" >&6; } if test $gt_cv_func_CFLocaleCopyCurrent = yes; then -$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h +printf "%s\n" "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h fi INTL_MACOSX_LIBS= @@ -17267,11 +18424,12 @@ gt_expression_test_code= fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 -$as_echo_n "checking for GNU gettext in libc... " >&6; } -if eval \${$gt_func_gnugettext_libc+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 +printf %s "checking for GNU gettext in libc... " >&6; } +if eval test \${$gt_func_gnugettext_libc+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -17286,7 +18444,7 @@ $gt_revision_test_code int -main () +main (void) { bindtextdomain ("", ""); @@ -17296,17 +18454,18 @@ return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$gt_func_gnugettext_libc=yes" -else +else $as_nop eval "$gt_func_gnugettext_libc=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$gt_func_gnugettext_libc - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then @@ -17339,11 +18498,12 @@ done - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 -$as_echo_n "checking for iconv... " >&6; } -if ${am_cv_func_iconv+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +printf %s "checking for iconv... " >&6; } +if test ${am_cv_func_iconv+y} +then : + printf %s "(cached) " >&6 +else $as_nop am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no @@ -17354,7 +18514,7 @@ #include int -main () +main (void) { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); @@ -17363,10 +18523,11 @@ return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : am_cv_func_iconv=yes fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" @@ -17378,7 +18539,7 @@ #include int -main () +main (void) { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); @@ -17387,24 +18548,26 @@ return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : am_cv_lib_iconv=yes am_cv_func_iconv=yes fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 -$as_echo "$am_cv_func_iconv" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +printf "%s\n" "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 -$as_echo_n "checking for working iconv... " >&6; } -if ${am_cv_func_iconv_works+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +printf %s "checking for working iconv... " >&6; } +if test ${am_cv_func_iconv_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then @@ -17412,12 +18575,13 @@ fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do - if test "$cross_compiling" = yes; then : + if test "$cross_compiling" = yes +then : case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -17429,7 +18593,7 @@ #endif int -main () +main (void) { int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful @@ -17529,7 +18693,8 @@ return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : am_cv_func_iconv_works=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -17541,8 +18706,8 @@ LIBS="$am_save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 -$as_echo "$am_cv_func_iconv_works" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +printf "%s\n" "$am_cv_func_iconv_works" >&6; } case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; @@ -17552,14 +18717,14 @@ fi if test "$am_func_iconv" = yes; then -$as_echo "#define HAVE_ICONV 1" >>confdefs.h +printf "%s\n" "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 -$as_echo_n "checking how to link with libiconv... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 -$as_echo "$LIBICONV" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +printf %s "checking how to link with libiconv... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +printf "%s\n" "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= @@ -17591,7 +18756,8 @@ # Check whether --with-libintl-prefix was given. -if test "${with_libintl_prefix+set}" = set; then : +if test ${with_libintl_prefix+y} +then : withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no @@ -18030,11 +19196,12 @@ - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 -$as_echo_n "checking for GNU gettext in libintl... " >&6; } -if eval \${$gt_func_gnugettext_libintl+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +printf %s "checking for GNU gettext in libintl... " >&6; } +if eval test \${$gt_func_gnugettext_libintl+y} +then : + printf %s "(cached) " >&6 +else $as_nop gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" @@ -18057,7 +19224,7 @@ $gt_revision_test_code int -main () +main (void) { bindtextdomain ("", ""); @@ -18067,12 +19234,13 @@ return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$gt_func_gnugettext_libintl=yes" -else +else $as_nop eval "$gt_func_gnugettext_libintl=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" @@ -18094,7 +19262,7 @@ $gt_revision_test_code int -main () +main (void) { bindtextdomain ("", ""); @@ -18104,21 +19272,22 @@ return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi eval ac_res=\$$gt_func_gnugettext_libintl - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } fi if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ @@ -18145,20 +19314,20 @@ if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then -$as_echo "#define ENABLE_NLS 1" >>confdefs.h +printf "%s\n" "#define ENABLE_NLS 1" >>confdefs.h else USE_NLS=no fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 -$as_echo_n "checking whether to use NLS... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 -$as_echo "$USE_NLS" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +printf %s "checking whether to use NLS... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf "%s\n" "$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 -$as_echo_n "checking where the gettext function comes from... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +printf %s "checking where the gettext function comes from... " >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" @@ -18168,18 +19337,18 @@ else gt_source="included intl directory" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 -$as_echo "$gt_source" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +printf "%s\n" "$gt_source" >&6; } fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 -$as_echo_n "checking how to link with libintl... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 -$as_echo "$LIBINTL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +printf %s "checking how to link with libintl... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +printf "%s\n" "$LIBINTL" >&6; } for element in $INCINTL; do haveit= @@ -18206,10 +19375,10 @@ fi -$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h +printf "%s\n" "#define HAVE_GETTEXT 1" >>confdefs.h -$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h +printf "%s\n" "#define HAVE_DCGETTEXT 1" >>confdefs.h fi @@ -18230,9 +19399,7 @@ GETTEXT_PACKAGE=ModemManager -cat >>confdefs.h <<_ACEOF -#define GETTEXT_PACKAGE "$GETTEXT_PACKAGE" -_ACEOF +printf "%s\n" "#define GETTEXT_PACKAGE \"$GETTEXT_PACKAGE\"" >>confdefs.h @@ -18243,14 +19410,14 @@ pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MM" >&5 -$as_echo_n "checking for MM... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MM" >&5 +printf %s "checking for MM... " >&6; } if test -n "$MM_CFLAGS"; then pkg_cv_MM_CFLAGS="$MM_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= \$GLIB_MIN_VERSION + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= \$GLIB_MIN_VERSION gmodule-2.0 gobject-2.0 gio-2.0 @@ -18261,7 +19428,7 @@ gio-2.0 gio-unix-2.0") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_MM_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= $GLIB_MIN_VERSION gmodule-2.0 @@ -18279,7 +19446,7 @@ pkg_cv_MM_LIBS="$MM_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= \$GLIB_MIN_VERSION + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= \$GLIB_MIN_VERSION gmodule-2.0 gobject-2.0 gio-2.0 @@ -18290,7 +19457,7 @@ gio-2.0 gio-unix-2.0") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_MM_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= $GLIB_MIN_VERSION gmodule-2.0 @@ -18308,8 +19475,8 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -18347,10 +19514,10 @@ and MM_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -18364,8 +19531,8 @@ else MM_CFLAGS=$pkg_cv_MM_CFLAGS MM_LIBS=$pkg_cv_MM_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } fi MM_CFLAGS="$MM_CFLAGS $GLIB_BUILD_SYMBOLS" @@ -18374,14 +19541,14 @@ pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBMM_GLIB" >&5 -$as_echo_n "checking for LIBMM_GLIB... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LIBMM_GLIB" >&5 +printf %s "checking for LIBMM_GLIB... " >&6; } if test -n "$LIBMM_GLIB_CFLAGS"; then pkg_cv_LIBMM_GLIB_CFLAGS="$LIBMM_GLIB_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= \$GLIB_MIN_VERSION + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= \$GLIB_MIN_VERSION gobject-2.0 gio-2.0 gio-unix-2.0\""; } >&5 @@ -18390,7 +19557,7 @@ gio-2.0 gio-unix-2.0") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBMM_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= $GLIB_MIN_VERSION gobject-2.0 @@ -18407,7 +19574,7 @@ pkg_cv_LIBMM_GLIB_LIBS="$LIBMM_GLIB_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= \$GLIB_MIN_VERSION + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= \$GLIB_MIN_VERSION gobject-2.0 gio-2.0 gio-unix-2.0\""; } >&5 @@ -18416,7 +19583,7 @@ gio-2.0 gio-unix-2.0") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBMM_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= $GLIB_MIN_VERSION gobject-2.0 @@ -18433,8 +19600,8 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -18469,10 +19636,10 @@ and LIBMM_GLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -18486,8 +19653,8 @@ else LIBMM_GLIB_CFLAGS=$pkg_cv_LIBMM_GLIB_CFLAGS LIBMM_GLIB_LIBS=$pkg_cv_LIBMM_GLIB_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } fi LIBMM_GLIB_CFLAGS="$LIBMM_GLIB_CFLAGS $GLIB_BUILD_SYMBOLS" @@ -18496,21 +19663,21 @@ pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MMCLI" >&5 -$as_echo_n "checking for MMCLI... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MMCLI" >&5 +printf %s "checking for MMCLI... " >&6; } if test -n "$MMCLI_CFLAGS"; then pkg_cv_MMCLI_CFLAGS="$MMCLI_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= \$GLIB_MIN_VERSION + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= \$GLIB_MIN_VERSION gobject-2.0 gio-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= $GLIB_MIN_VERSION gobject-2.0 gio-2.0") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_MMCLI_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= $GLIB_MIN_VERSION gobject-2.0 @@ -18526,14 +19693,14 @@ pkg_cv_MMCLI_LIBS="$MMCLI_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= \$GLIB_MIN_VERSION + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= \$GLIB_MIN_VERSION gobject-2.0 gio-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= $GLIB_MIN_VERSION gobject-2.0 gio-2.0") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_MMCLI_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= $GLIB_MIN_VERSION gobject-2.0 @@ -18549,8 +19716,8 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -18582,10 +19749,10 @@ and MMCLI_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -18599,8 +19766,8 @@ else MMCLI_CFLAGS=$pkg_cv_MMCLI_CFLAGS MMCLI_LIBS=$pkg_cv_MMCLI_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } fi MMCLI_CFLAGS="$MMCLI_CFLAGS $GLIB_BUILD_SYMBOLS" @@ -18615,11 +19782,12 @@ # Extract the first word of "xsltproc", so it can be a program name with args. set dummy xsltproc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_XSLTPROC_CHECK+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_XSLTPROC_CHECK+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$XSLTPROC_CHECK"; then ac_cv_prog_XSLTPROC_CHECK="$XSLTPROC_CHECK" # Let the user override the test. else @@ -18627,11 +19795,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_XSLTPROC_CHECK="yes" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -18642,11 +19814,11 @@ fi XSLTPROC_CHECK=$ac_cv_prog_XSLTPROC_CHECK if test -n "$XSLTPROC_CHECK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XSLTPROC_CHECK" >&5 -$as_echo "$XSLTPROC_CHECK" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XSLTPROC_CHECK" >&5 +printf "%s\n" "$XSLTPROC_CHECK" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -18661,19 +19833,21 @@ # allow to override gcov location # Check whether --with-gcov was given. -if test "${with_gcov+set}" = set; then : +if test ${with_gcov+y} +then : withval=$with_gcov; _AX_CODE_COVERAGE_GCOV_PROG_WITH=$with_gcov -else +else $as_nop _AX_CODE_COVERAGE_GCOV_PROG_WITH=gcov fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build with code coverage support" >&5 -$as_echo_n "checking whether to build with code coverage support... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build with code coverage support" >&5 +printf %s "checking whether to build with code coverage support... " >&6; } # Check whether --enable-code-coverage was given. -if test "${enable_code_coverage+set}" = set; then : +if test ${enable_code_coverage+y} +then : enableval=$enable_code_coverage; -else +else $as_nop enable_code_coverage=no fi @@ -18688,20 +19862,22 @@ CODE_COVERAGE_ENABLED=$enable_code_coverage - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_code_coverage" >&5 -$as_echo "$enable_code_coverage" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_code_coverage" >&5 +printf "%s\n" "$enable_code_coverage" >&6; } - if test "$enable_code_coverage" = "yes" ; then : + if test "$enable_code_coverage" = "yes" +then : # check for gcov if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}$_AX_CODE_COVERAGE_GCOV_PROG_WITH", so it can be a program name with args. set dummy ${ac_tool_prefix}$_AX_CODE_COVERAGE_GCOV_PROG_WITH; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_GCOV+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_GCOV+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$GCOV"; then ac_cv_prog_GCOV="$GCOV" # Let the user override the test. else @@ -18709,11 +19885,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_GCOV="${ac_tool_prefix}$_AX_CODE_COVERAGE_GCOV_PROG_WITH" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -18724,11 +19904,11 @@ fi GCOV=$ac_cv_prog_GCOV if test -n "$GCOV"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCOV" >&5 -$as_echo "$GCOV" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GCOV" >&5 +printf "%s\n" "$GCOV" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -18737,11 +19917,12 @@ ac_ct_GCOV=$GCOV # Extract the first word of "$_AX_CODE_COVERAGE_GCOV_PROG_WITH", so it can be a program name with args. set dummy $_AX_CODE_COVERAGE_GCOV_PROG_WITH; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_GCOV+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_GCOV+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_GCOV"; then ac_cv_prog_ac_ct_GCOV="$ac_ct_GCOV" # Let the user override the test. else @@ -18749,11 +19930,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_GCOV="$_AX_CODE_COVERAGE_GCOV_PROG_WITH" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -18764,11 +19949,11 @@ fi ac_ct_GCOV=$ac_cv_prog_ac_ct_GCOV if test -n "$ac_ct_GCOV"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GCOV" >&5 -$as_echo "$ac_ct_GCOV" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GCOV" >&5 +printf "%s\n" "$ac_ct_GCOV" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_GCOV" = x; then @@ -18776,8 +19961,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac GCOV=$ac_ct_GCOV @@ -18786,12 +19971,14 @@ GCOV="$ac_cv_prog_GCOV" fi - if test "X$GCOV" = "X:"; then : + if test "X$GCOV" = "X:" +then : as_fn_error $? "gcov is needed to do coverage" "$LINENO" 5 fi - if test "$GCC" = "no" ; then : + if test "$GCC" = "no" +then : as_fn_error $? "not compiling with gcc, which is required for gcov code coverage" "$LINENO" 5 @@ -18802,11 +19989,12 @@ # Extract the first word of "lcov", so it can be a program name with args. set dummy lcov; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LCOV+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_LCOV+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$LCOV"; then ac_cv_prog_LCOV="$LCOV" # Let the user override the test. else @@ -18814,11 +20002,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_LCOV="lcov" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -18829,21 +20021,22 @@ fi LCOV=$ac_cv_prog_LCOV if test -n "$LCOV"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LCOV" >&5 -$as_echo "$LCOV" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LCOV" >&5 +printf "%s\n" "$LCOV" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi # Extract the first word of "genhtml", so it can be a program name with args. set dummy genhtml; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_GENHTML+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_GENHTML+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$GENHTML"; then ac_cv_prog_GENHTML="$GENHTML" # Let the user override the test. else @@ -18851,11 +20044,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_GENHTML="genhtml" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -18866,22 +20063,24 @@ fi GENHTML=$ac_cv_prog_GENHTML if test -n "$GENHTML"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GENHTML" >&5 -$as_echo "$GENHTML" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GENHTML" >&5 +printf "%s\n" "$GENHTML" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi - if test "$LCOV" ; then : + if test "$LCOV" +then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lcov version" >&5 -$as_echo_n "checking for lcov version... " >&6; } -if ${ax_cv_lcov_version+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lcov version" >&5 +printf %s "checking for lcov version... " >&6; } +if test ${ax_cv_lcov_version+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_cv_lcov_version=invalid lcov_version=`$LCOV -v 2>/dev/null | $SED -e 's/^.* //'` @@ -18892,10 +20091,10 @@ done fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_lcov_version" >&5 -$as_echo "$ax_cv_lcov_version" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_lcov_version" >&5 +printf "%s\n" "$ax_cv_lcov_version" >&6; } -else +else $as_nop lcov_msg="To enable code coverage reporting you must have one of the following lcov versions installed: $lcov_version_list" as_fn_error $? "$lcov_msg" "$LINENO" 5 @@ -18910,7 +20109,8 @@ ;; esac - if test -z "$GENHTML" ; then : + if test -z "$GENHTML" +then : as_fn_error $? "Could not find genhtml from the lcov package" "$LINENO" 5 @@ -19013,15 +20213,16 @@ # Check whether --enable-introspection was given. -if test "${enable_introspection+set}" = set; then : +if test ${enable_introspection+y} +then : enableval=$enable_introspection; -else +else $as_nop enable_introspection=auto fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gobject-introspection" >&5 -$as_echo_n "checking for gobject-introspection... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gobject-introspection" >&5 +printf %s "checking for gobject-introspection... " >&6; } case $enable_introspection in #( no) : @@ -19029,20 +20230,20 @@ ;; #( yes) : if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gobject-introspection-1.0") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : else as_fn_error $? "gobject-introspection-1.0 is not installed" "$LINENO" 5 fi if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0 >= 0.9.6\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0 >= 0.9.6\""; } >&5 ($PKG_CONFIG --exists --print-errors "gobject-introspection-1.0 >= 0.9.6") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then found_introspection=yes else @@ -19051,10 +20252,10 @@ ;; #( auto) : if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0 >= 0.9.6\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0 >= 0.9.6\""; } >&5 ($PKG_CONFIG --exists --print-errors "gobject-introspection-1.0 >= 0.9.6") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then found_introspection=yes else @@ -19066,8 +20267,8 @@ as_fn_error $? "invalid argument passed to --enable-introspection, should be one of [no/auto/yes]" "$LINENO" 5 ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $found_introspection" >&5 -$as_echo "$found_introspection" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $found_introspection" >&5 +printf "%s\n" "$found_introspection" >&6; } INTROSPECTION_SCANNER= INTROSPECTION_COMPILER= @@ -19105,22 +20306,25 @@ - if test "x" != "xyes"; then : + if test "x" != "xyes" +then : fi # Check whether --enable-vala was given. -if test "${enable_vala+set}" = set; then : +if test ${enable_vala+y} +then : enableval=$enable_vala; -else +else $as_nop - if test "x" = "x"; then : + if test "x" = "x" +then : enable_vala=auto -else +else $as_nop enable_vala= @@ -19134,7 +20338,8 @@ enable_vala=no ;; #( yes) : - if test "x" != "xyes" -a "x$found_introspection" != "xyes"; then : + if test "x" != "xyes" -a "x$found_introspection" != "xyes" +then : as_fn_error $? "Vala bindings require GObject Introspection" "$LINENO" 5 @@ -19142,7 +20347,8 @@ ;; #( auto) : - if test "x" != "xyes" -a "x$found_introspection" != "xyes"; then : + if test "x" != "xyes" -a "x$found_introspection" != "xyes" +then : enable_vala=no @@ -19154,20 +20360,22 @@ ;; esac - if test "x" = "x"; then : + if test "x" = "x" +then : vapigen_pkg_name=vapigen -else +else $as_nop vapigen_pkg_name=vapigen- fi - if test "x0.18" = "x"; then : + if test "x0.18" = "x" +then : vapigen_pkg="$vapigen_pkg_name" -else +else $as_nop vapigen_pkg="$vapigen_pkg_name >= 0.18" @@ -19184,11 +20392,12 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. @@ -19198,11 +20407,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -19214,11 +20427,11 @@ fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf "%s\n" "$PKG_CONFIG" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -19227,11 +20440,12 @@ ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. @@ -19241,11 +20455,15 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -19257,11 +20475,11 @@ fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 -$as_echo "$ac_pt_PKG_CONFIG" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then @@ -19269,8 +20487,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG @@ -19282,26 +20500,27 @@ fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 -$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } PKG_CONFIG="" fi fi if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$vapigen_pkg\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$vapigen_pkg\""; } >&5 ($PKG_CONFIG --exists --print-errors "$vapigen_pkg") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "$enable_vala" = "auto"; then : + if test "$enable_vala" = "auto" +then : enable_vala=yes @@ -19324,19 +20543,20 @@ fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for vapigen" >&5 -$as_echo_n "checking for vapigen... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for vapigen" >&5 +printf %s "checking for vapigen... " >&6; } case $enable_vala in #( yes) : VAPIGEN=`$PKG_CONFIG --variable=vapigen $vapigen_pkg_name` VAPIGEN_MAKEFILE=`$PKG_CONFIG --variable=datadir $vapigen_pkg_name`/vala/Makefile.vapigen - if test "x" = "x"; then : + if test "x" = "x" +then : VAPIGEN_VAPIDIR=`$PKG_CONFIG --variable=vapidir $vapigen_pkg_name` -else +else $as_nop VAPIGEN_VAPIDIR=`$PKG_CONFIG --variable=vapidir_versioned $vapigen_pkg_name` @@ -19346,8 +20566,8 @@ ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_vala" >&5 -$as_echo "$enable_vala" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_vala" >&5 +printf "%s\n" "$enable_vala" >&6; } @@ -19369,7 +20589,8 @@ # Check whether --with-dbus-sys-dir was given. -if test "${with_dbus_sys_dir+set}" = set; then : +if test ${with_dbus_sys_dir+y} +then : withval=$with_dbus_sys_dir; fi @@ -19382,7 +20603,8 @@ # Check whether --with-udev-base-dir was given. -if test "${with_udev_base_dir+set}" = set; then : +if test ${with_udev_base_dir+y} +then : withval=$with_udev_base_dir; fi @@ -19395,9 +20617,10 @@ # Check whether --with-systemdsystemunitdir was given. -if test "${with_systemdsystemunitdir+set}" = set; then : +if test ${with_systemdsystemunitdir+y} +then : withval=$with_systemdsystemunitdir; -else +else $as_nop with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd) fi @@ -19419,9 +20642,10 @@ # Check whether --with-udev was given. -if test "${with_udev+set}" = set; then : +if test ${with_udev+y} +then : withval=$with_udev; -else +else $as_nop with_udev=yes fi @@ -19437,17 +20661,17 @@ yes) pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GUDEV" >&5 -$as_echo_n "checking for GUDEV... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GUDEV" >&5 +printf %s "checking for GUDEV... " >&6; } if test -n "$GUDEV_CFLAGS"; then pkg_cv_GUDEV_CFLAGS="$GUDEV_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gudev-1.0 >= \$GUDEV_VERSION\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gudev-1.0 >= \$GUDEV_VERSION\""; } >&5 ($PKG_CONFIG --exists --print-errors "gudev-1.0 >= $GUDEV_VERSION") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GUDEV_CFLAGS=`$PKG_CONFIG --cflags "gudev-1.0 >= $GUDEV_VERSION" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -19461,10 +20685,10 @@ pkg_cv_GUDEV_LIBS="$GUDEV_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gudev-1.0 >= \$GUDEV_VERSION\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gudev-1.0 >= \$GUDEV_VERSION\""; } >&5 ($PKG_CONFIG --exists --print-errors "gudev-1.0 >= $GUDEV_VERSION") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GUDEV_LIBS=`$PKG_CONFIG --libs "gudev-1.0 >= $GUDEV_VERSION" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -19478,8 +20702,8 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -19496,21 +20720,21 @@ have_gudev=no elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } have_gudev=no else GUDEV_CFLAGS=$pkg_cv_GUDEV_CFLAGS GUDEV_LIBS=$pkg_cv_GUDEV_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } have_gudev=yes fi if test "x$have_gudev" = "xno"; then as_fn_error $? "Couldn't find gudev >= $GUDEV_VERSION. Install it, or otherwise configure using --without-udev to disable udev support." "$LINENO" 5 else -$as_echo "#define WITH_UDEV 1" >>confdefs.h +printf "%s\n" "#define WITH_UDEV 1" >>confdefs.h @@ -19524,17 +20748,17 @@ pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBSYSTEMD" >&5 -$as_echo_n "checking for LIBSYSTEMD... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LIBSYSTEMD" >&5 +printf %s "checking for LIBSYSTEMD... " >&6; } if test -n "$LIBSYSTEMD_CFLAGS"; then pkg_cv_LIBSYSTEMD_CFLAGS="$LIBSYSTEMD_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd >= 209\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd >= 209\""; } >&5 ($PKG_CONFIG --exists --print-errors "libsystemd >= 209") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBSYSTEMD_CFLAGS=`$PKG_CONFIG --cflags "libsystemd >= 209" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -19548,10 +20772,10 @@ pkg_cv_LIBSYSTEMD_LIBS="$LIBSYSTEMD_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd >= 209\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd >= 209\""; } >&5 ($PKG_CONFIG --exists --print-errors "libsystemd >= 209") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBSYSTEMD_LIBS=`$PKG_CONFIG --libs "libsystemd >= 209" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -19565,8 +20789,8 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -19583,29 +20807,29 @@ have_libsystemd=no elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } have_libsystemd=no else LIBSYSTEMD_CFLAGS=$pkg_cv_LIBSYSTEMD_CFLAGS LIBSYSTEMD_LIBS=$pkg_cv_LIBSYSTEMD_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } have_libsystemd=yes fi pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBSYSTEMD_LOGIN" >&5 -$as_echo_n "checking for LIBSYSTEMD_LOGIN... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LIBSYSTEMD_LOGIN" >&5 +printf %s "checking for LIBSYSTEMD_LOGIN... " >&6; } if test -n "$LIBSYSTEMD_LOGIN_CFLAGS"; then pkg_cv_LIBSYSTEMD_LOGIN_CFLAGS="$LIBSYSTEMD_LOGIN_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd-login >= 183\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd-login >= 183\""; } >&5 ($PKG_CONFIG --exists --print-errors "libsystemd-login >= 183") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBSYSTEMD_LOGIN_CFLAGS=`$PKG_CONFIG --cflags "libsystemd-login >= 183" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -19619,10 +20843,10 @@ pkg_cv_LIBSYSTEMD_LOGIN_LIBS="$LIBSYSTEMD_LOGIN_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd-login >= 183\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd-login >= 183\""; } >&5 ($PKG_CONFIG --exists --print-errors "libsystemd-login >= 183") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBSYSTEMD_LOGIN_LIBS=`$PKG_CONFIG --libs "libsystemd-login >= 183" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -19636,8 +20860,8 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -19654,27 +20878,99 @@ have_libsystemd_login=no elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } have_libsystemd_login=no else LIBSYSTEMD_LOGIN_CFLAGS=$pkg_cv_LIBSYSTEMD_LOGIN_CFLAGS LIBSYSTEMD_LOGIN_LIBS=$pkg_cv_LIBSYSTEMD_LOGIN_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } have_libsystemd_login=yes fi +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LIBELOGIND" >&5 +printf %s "checking for LIBELOGIND... " >&6; } + +if test -n "$LIBELOGIND_CFLAGS"; then + pkg_cv_LIBELOGIND_CFLAGS="$LIBELOGIND_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libelogind >= 209\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libelogind >= 209") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBELOGIND_CFLAGS=`$PKG_CONFIG --cflags "libelogind >= 209" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$LIBELOGIND_LIBS"; then + pkg_cv_LIBELOGIND_LIBS="$LIBELOGIND_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libelogind >= 209\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libelogind >= 209") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBELOGIND_LIBS=`$PKG_CONFIG --libs "libelogind >= 209" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + LIBELOGIND_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libelogind >= 209" 2>&1` + else + LIBELOGIND_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libelogind >= 209" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBELOGIND_PKG_ERRORS" >&5 + + have_elogind=no +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + have_elogind=no +else + LIBELOGIND_CFLAGS=$pkg_cv_LIBELOGIND_CFLAGS + LIBELOGIND_LIBS=$pkg_cv_LIBELOGIND_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_elogind=yes +fi + # Check whether --with-systemd-suspend-resume was given. -if test "${with_systemd_suspend_resume+set}" = set; then : +if test ${with_systemd_suspend_resume+y} +then : withval=$with_systemd_suspend_resume; -else +else $as_nop with_systemd_suspend_resume=auto fi if test "x$with_systemd_suspend_resume" = "xauto"; then - if test "x$have_libsystemd" = "xyes" || test "x$have_libsystemd_login" = "xyes"; then + if test "x$have_libsystemd" = "xyes" || test "x$have_libsystemd_login" = "xyes" || test "x$have_elogind" = "xyes"; then with_systemd_suspend_resume=yes else with_systemd_suspend_resume=no @@ -19683,11 +20979,12 @@ case $with_systemd_suspend_resume in yes) - if test "x$have_libsystemd" = "xno" && test "x$have_libsystemd_login" = "xno"; then - as_fn_error $? "libsystemd or libsystemd-login development headers are required" "$LINENO" 5 + if test "x$have_libsystemd" = "xno" && test "x$have_libsystemd_login" = "xno" && test "x$have_elogind" = "xno"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libsystemd" >&5 +printf "%s\n" "$as_me: WARNING: libsystemd" >&2;} fi -$as_echo "#define WITH_SYSTEMD_SUSPEND_RESUME 1" >>confdefs.h +printf "%s\n" "#define WITH_SYSTEMD_SUSPEND_RESUME 1" >>confdefs.h ;; *) @@ -19707,9 +21004,10 @@ # Check whether --with-systemd-journal was given. -if test "${with_systemd_journal+set}" = set; then : +if test ${with_systemd_journal+y} +then : withval=$with_systemd_journal; -else +else $as_nop with_systemd_journal=auto fi @@ -19728,7 +21026,7 @@ as_fn_error $? "libsystemd development headers are required" "$LINENO" 5 fi -$as_echo "#define WITH_SYSTEMD_JOURNAL 1" >>confdefs.h +printf "%s\n" "#define WITH_SYSTEMD_JOURNAL 1" >>confdefs.h ;; *) @@ -19748,17 +21046,17 @@ pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for POLKIT" >&5 -$as_echo_n "checking for POLKIT... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for POLKIT" >&5 +printf %s "checking for POLKIT... " >&6; } if test -n "$POLKIT_CFLAGS"; then pkg_cv_POLKIT_CFLAGS="$POLKIT_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"polkit-gobject-1 >= 0.97\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"polkit-gobject-1 >= 0.97\""; } >&5 ($PKG_CONFIG --exists --print-errors "polkit-gobject-1 >= 0.97") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_POLKIT_CFLAGS=`$PKG_CONFIG --cflags "polkit-gobject-1 >= 0.97" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -19772,10 +21070,10 @@ pkg_cv_POLKIT_LIBS="$POLKIT_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"polkit-gobject-1 >= 0.97\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"polkit-gobject-1 >= 0.97\""; } >&5 ($PKG_CONFIG --exists --print-errors "polkit-gobject-1 >= 0.97") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_POLKIT_LIBS=`$PKG_CONFIG --libs "polkit-gobject-1 >= 0.97" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -19789,8 +21087,8 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -19807,21 +21105,22 @@ have_polkit=no elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } have_polkit=no else POLKIT_CFLAGS=$pkg_cv_POLKIT_CFLAGS POLKIT_LIBS=$pkg_cv_POLKIT_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } have_polkit=yes fi # Check whether --with-polkit was given. -if test "${with_polkit+set}" = set; then : +if test ${with_polkit+y} +then : withval=$with_polkit; -else +else $as_nop with_polkit=auto fi @@ -19857,7 +21156,7 @@ esac -$as_echo "#define WITH_POLKIT 1" >>confdefs.h +printf "%s\n" "#define WITH_POLKIT 1" >>confdefs.h @@ -19877,16 +21176,17 @@ # Check whether --with-at_command_via_dbus was given. -if test "${with_at_command_via_dbus+set}" = set; then : +if test ${with_at_command_via_dbus+y} +then : withval=$with_at_command_via_dbus; -else +else $as_nop with_at_command_via_dbus=no fi if test "x$with_at_command_via_dbus" = "xyes"; then -$as_echo "#define WITH_AT_COMMAND_VIA_DBUS 1" >>confdefs.h +printf "%s\n" "#define WITH_AT_COMMAND_VIA_DBUS 1" >>confdefs.h fi @@ -19895,9 +21195,10 @@ # Check whether --with-mbim was given. -if test "${with_mbim+set}" = set; then : +if test ${with_mbim+y} +then : withval=$with_mbim; -else +else $as_nop with_mbim=yes fi @@ -19913,17 +21214,17 @@ yes) pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MBIM" >&5 -$as_echo_n "checking for MBIM... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MBIM" >&5 +printf %s "checking for MBIM... " >&6; } if test -n "$MBIM_CFLAGS"; then pkg_cv_MBIM_CFLAGS="$MBIM_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mbim-glib >= \$LIBMBIM_VERSION\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mbim-glib >= \$LIBMBIM_VERSION\""; } >&5 ($PKG_CONFIG --exists --print-errors "mbim-glib >= $LIBMBIM_VERSION") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_MBIM_CFLAGS=`$PKG_CONFIG --cflags "mbim-glib >= $LIBMBIM_VERSION" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -19937,10 +21238,10 @@ pkg_cv_MBIM_LIBS="$MBIM_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mbim-glib >= \$LIBMBIM_VERSION\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mbim-glib >= \$LIBMBIM_VERSION\""; } >&5 ($PKG_CONFIG --exists --print-errors "mbim-glib >= $LIBMBIM_VERSION") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_MBIM_LIBS=`$PKG_CONFIG --libs "mbim-glib >= $LIBMBIM_VERSION" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -19954,8 +21255,8 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -19972,21 +21273,21 @@ have_mbim=no elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } have_mbim=no else MBIM_CFLAGS=$pkg_cv_MBIM_CFLAGS MBIM_LIBS=$pkg_cv_MBIM_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } have_mbim=yes fi if test "x$have_mbim" = "xno"; then as_fn_error $? "Couldn't find libmbim-glib >= $LIBMBIM_VERSION. Install it, or otherwise configure using --without-mbim to disable MBIM support." "$LINENO" 5 else -$as_echo "#define WITH_MBIM 1" >>confdefs.h +printf "%s\n" "#define WITH_MBIM 1" >>confdefs.h @@ -19998,13 +21299,14 @@ esac -LIBQMI_VERSION=1.26.0 +LIBQMI_VERSION=1.28.6 # Check whether --with-qmi was given. -if test "${with_qmi+set}" = set; then : +if test ${with_qmi+y} +then : withval=$with_qmi; -else +else $as_nop with_qmi=yes fi @@ -20020,17 +21322,17 @@ yes) pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for QMI" >&5 -$as_echo_n "checking for QMI... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for QMI" >&5 +printf %s "checking for QMI... " >&6; } if test -n "$QMI_CFLAGS"; then pkg_cv_QMI_CFLAGS="$QMI_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"qmi-glib >= \$LIBQMI_VERSION\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"qmi-glib >= \$LIBQMI_VERSION\""; } >&5 ($PKG_CONFIG --exists --print-errors "qmi-glib >= $LIBQMI_VERSION") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_QMI_CFLAGS=`$PKG_CONFIG --cflags "qmi-glib >= $LIBQMI_VERSION" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -20044,10 +21346,10 @@ pkg_cv_QMI_LIBS="$QMI_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"qmi-glib >= \$LIBQMI_VERSION\""; } >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"qmi-glib >= \$LIBQMI_VERSION\""; } >&5 ($PKG_CONFIG --exists --print-errors "qmi-glib >= $LIBQMI_VERSION") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_QMI_LIBS=`$PKG_CONFIG --libs "qmi-glib >= $LIBQMI_VERSION" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes @@ -20061,8 +21363,8 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -20079,21 +21381,21 @@ have_qmi=no elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } have_qmi=no else QMI_CFLAGS=$pkg_cv_QMI_CFLAGS QMI_LIBS=$pkg_cv_QMI_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } have_qmi=yes fi if test "x$have_qmi" = "xno"; then as_fn_error $? "Couldn't find libqmi-glib >= $LIBQMI_VERSION. Install it, or otherwise configure using --without-qmi to disable QMI support." "$LINENO" 5 else -$as_echo "#define WITH_QMI 1" >>confdefs.h +printf "%s\n" "#define WITH_QMI 1" >>confdefs.h @@ -20106,17 +21408,16 @@ # Check whether --with-dist-version was given. -if test "${with_dist_version+set}" = set; then : +if test ${with_dist_version+y} +then : withval=$with_dist_version; ac_distver=$withval -else +else $as_nop ac_distver="" fi if ! test x"$ac_distver" = x""; then -cat >>confdefs.h <<_ACEOF -#define MM_DIST_VERSION "$ac_distver" -_ACEOF +printf "%s\n" "#define MM_DIST_VERSION \"$ac_distver\"" >>confdefs.h fi @@ -20132,24 +21433,26 @@ # Check whether --enable-all-plugins was given. -if test "${enable_all_plugins+set}" = set; then : +if test ${enable_all_plugins+y} +then : enableval=$enable_all_plugins; -else +else $as_nop enable_all_plugins=yes fi # Check whether --enable-plugin-generic was given. -if test "${enable_plugin_generic+set}" = set; then : +if test ${enable_plugin_generic+y} +then : enableval=$enable_plugin_generic; -else +else $as_nop enable_plugin_generic=$enable_all_plugins fi if test "x$enable_plugin_generic" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_GENERIC 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_GENERIC 1" >>confdefs.h fi if test "x$enable_plugin_generic" = "xyes"; then @@ -20161,16 +21464,18 @@ fi + # Check whether --enable-plugin-altair-lte was given. -if test "${enable_plugin_altair_lte+set}" = set; then : +if test ${enable_plugin_altair_lte+y} +then : enableval=$enable_plugin_altair_lte; -else +else $as_nop enable_plugin_altair_lte=$enable_all_plugins fi if test "x$enable_plugin_altair_lte" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_ALTAIR_LTE 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_ALTAIR_LTE 1" >>confdefs.h fi if test "x$enable_plugin_altair_lte" = "xyes"; then @@ -20182,16 +21487,18 @@ fi + # Check whether --enable-plugin-anydata was given. -if test "${enable_plugin_anydata+set}" = set; then : +if test ${enable_plugin_anydata+y} +then : enableval=$enable_plugin_anydata; -else +else $as_nop enable_plugin_anydata=$enable_all_plugins fi if test "x$enable_plugin_anydata" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_ANYDATA 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_ANYDATA 1" >>confdefs.h fi if test "x$enable_plugin_anydata" = "xyes"; then @@ -20203,16 +21510,18 @@ fi + # Check whether --enable-plugin-broadmobi was given. -if test "${enable_plugin_broadmobi+set}" = set; then : +if test ${enable_plugin_broadmobi+y} +then : enableval=$enable_plugin_broadmobi; -else +else $as_nop enable_plugin_broadmobi=$enable_all_plugins fi if test "x$enable_plugin_broadmobi" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_BROADMOBI 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_BROADMOBI 1" >>confdefs.h fi if test "x$enable_plugin_broadmobi" = "xyes"; then @@ -20224,16 +21533,18 @@ fi + # Check whether --enable-plugin-cinterion was given. -if test "${enable_plugin_cinterion+set}" = set; then : +if test ${enable_plugin_cinterion+y} +then : enableval=$enable_plugin_cinterion; -else +else $as_nop enable_plugin_cinterion=$enable_all_plugins fi if test "x$enable_plugin_cinterion" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_CINTERION 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_CINTERION 1" >>confdefs.h fi if test "x$enable_plugin_cinterion" = "xyes"; then @@ -20245,16 +21556,18 @@ fi + # Check whether --enable-plugin-dell was given. -if test "${enable_plugin_dell+set}" = set; then : +if test ${enable_plugin_dell+y} +then : enableval=$enable_plugin_dell; -else +else $as_nop enable_plugin_dell=$enable_all_plugins fi if test "x$enable_plugin_dell" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_DELL 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_DELL 1" >>confdefs.h with_shared_sierra="yes" with_shared_novatel="yes" @@ -20271,16 +21584,18 @@ fi + # Check whether --enable-plugin-dlink was given. -if test "${enable_plugin_dlink+set}" = set; then : +if test ${enable_plugin_dlink+y} +then : enableval=$enable_plugin_dlink; -else +else $as_nop enable_plugin_dlink=$enable_all_plugins fi if test "x$enable_plugin_dlink" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_DLINK 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_DLINK 1" >>confdefs.h fi if test "x$enable_plugin_dlink" = "xyes"; then @@ -20292,16 +21607,18 @@ fi + # Check whether --enable-plugin-fibocom was given. -if test "${enable_plugin_fibocom+set}" = set; then : +if test ${enable_plugin_fibocom+y} +then : enableval=$enable_plugin_fibocom; -else +else $as_nop enable_plugin_fibocom=$enable_all_plugins fi if test "x$enable_plugin_fibocom" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_FIBOCOM 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_FIBOCOM 1" >>confdefs.h with_shared_xmm="yes" fi @@ -20314,16 +21631,18 @@ fi + # Check whether --enable-plugin-foxconn was given. -if test "${enable_plugin_foxconn+set}" = set; then : +if test ${enable_plugin_foxconn+y} +then : enableval=$enable_plugin_foxconn; -else +else $as_nop enable_plugin_foxconn=$enable_all_plugins fi if test "x$enable_plugin_foxconn" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_FOXCONN 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_FOXCONN 1" >>confdefs.h with_shared_foxconn="yes" fi @@ -20336,16 +21655,41 @@ fi + +# Check whether --enable-plugin-gosuncn was given. +if test ${enable_plugin_gosuncn+y} +then : + enableval=$enable_plugin_gosuncn; +else $as_nop + enable_plugin_gosuncn=$enable_all_plugins +fi + +if test "x$enable_plugin_gosuncn" = "xyes"; then + +printf "%s\n" "#define ENABLE_PLUGIN_GOSUNCN 1" >>confdefs.h + +fi + if test "x$enable_plugin_gosuncn" = "xyes"; then + ENABLE_PLUGIN_GOSUNCN_TRUE= + ENABLE_PLUGIN_GOSUNCN_FALSE='#' +else + ENABLE_PLUGIN_GOSUNCN_TRUE='#' + ENABLE_PLUGIN_GOSUNCN_FALSE= +fi + + + # Check whether --enable-plugin-haier was given. -if test "${enable_plugin_haier+set}" = set; then : +if test ${enable_plugin_haier+y} +then : enableval=$enable_plugin_haier; -else +else $as_nop enable_plugin_haier=$enable_all_plugins fi if test "x$enable_plugin_haier" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_HAIER 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_HAIER 1" >>confdefs.h fi if test "x$enable_plugin_haier" = "xyes"; then @@ -20357,16 +21701,18 @@ fi + # Check whether --enable-plugin-huawei was given. -if test "${enable_plugin_huawei+set}" = set; then : +if test ${enable_plugin_huawei+y} +then : enableval=$enable_plugin_huawei; -else +else $as_nop enable_plugin_huawei=$enable_all_plugins fi if test "x$enable_plugin_huawei" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_HUAWEI 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_HUAWEI 1" >>confdefs.h fi if test "x$enable_plugin_huawei" = "xyes"; then @@ -20378,16 +21724,18 @@ fi + # Check whether --enable-plugin-iridium was given. -if test "${enable_plugin_iridium+set}" = set; then : +if test ${enable_plugin_iridium+y} +then : enableval=$enable_plugin_iridium; -else +else $as_nop enable_plugin_iridium=$enable_all_plugins fi if test "x$enable_plugin_iridium" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_IRIDIUM 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_IRIDIUM 1" >>confdefs.h fi if test "x$enable_plugin_iridium" = "xyes"; then @@ -20399,16 +21747,18 @@ fi + # Check whether --enable-plugin-linktop was given. -if test "${enable_plugin_linktop+set}" = set; then : +if test ${enable_plugin_linktop+y} +then : enableval=$enable_plugin_linktop; -else +else $as_nop enable_plugin_linktop=$enable_all_plugins fi if test "x$enable_plugin_linktop" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_LINKTOP 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_LINKTOP 1" >>confdefs.h fi if test "x$enable_plugin_linktop" = "xyes"; then @@ -20420,16 +21770,18 @@ fi + # Check whether --enable-plugin-longcheer was given. -if test "${enable_plugin_longcheer+set}" = set; then : +if test ${enable_plugin_longcheer+y} +then : enableval=$enable_plugin_longcheer; -else +else $as_nop enable_plugin_longcheer=$enable_all_plugins fi if test "x$enable_plugin_longcheer" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_LONGCHEER 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_LONGCHEER 1" >>confdefs.h fi if test "x$enable_plugin_longcheer" = "xyes"; then @@ -20441,16 +21793,18 @@ fi + # Check whether --enable-plugin-mbm was given. -if test "${enable_plugin_mbm+set}" = set; then : +if test ${enable_plugin_mbm+y} +then : enableval=$enable_plugin_mbm; -else +else $as_nop enable_plugin_mbm=$enable_all_plugins fi if test "x$enable_plugin_mbm" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_MBM 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_MBM 1" >>confdefs.h fi if test "x$enable_plugin_mbm" = "xyes"; then @@ -20462,16 +21816,18 @@ fi + # Check whether --enable-plugin-motorola was given. -if test "${enable_plugin_motorola+set}" = set; then : +if test ${enable_plugin_motorola+y} +then : enableval=$enable_plugin_motorola; -else +else $as_nop enable_plugin_motorola=$enable_all_plugins fi if test "x$enable_plugin_motorola" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_MOTOROLA 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_MOTOROLA 1" >>confdefs.h fi if test "x$enable_plugin_motorola" = "xyes"; then @@ -20483,16 +21839,18 @@ fi + # Check whether --enable-plugin-mtk was given. -if test "${enable_plugin_mtk+set}" = set; then : +if test ${enable_plugin_mtk+y} +then : enableval=$enable_plugin_mtk; -else +else $as_nop enable_plugin_mtk=$enable_all_plugins fi if test "x$enable_plugin_mtk" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_MTK 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_MTK 1" >>confdefs.h fi if test "x$enable_plugin_mtk" = "xyes"; then @@ -20504,16 +21862,18 @@ fi + # Check whether --enable-plugin-nokia was given. -if test "${enable_plugin_nokia+set}" = set; then : +if test ${enable_plugin_nokia+y} +then : enableval=$enable_plugin_nokia; -else +else $as_nop enable_plugin_nokia=$enable_all_plugins fi if test "x$enable_plugin_nokia" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_NOKIA 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_NOKIA 1" >>confdefs.h fi if test "x$enable_plugin_nokia" = "xyes"; then @@ -20525,16 +21885,18 @@ fi + # Check whether --enable-plugin-nokia-icera was given. -if test "${enable_plugin_nokia_icera+set}" = set; then : +if test ${enable_plugin_nokia_icera+y} +then : enableval=$enable_plugin_nokia_icera; -else +else $as_nop enable_plugin_nokia_icera=$enable_all_plugins fi if test "x$enable_plugin_nokia_icera" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_NOKIA_ICERA 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_NOKIA_ICERA 1" >>confdefs.h with_shared_icera="yes" fi @@ -20547,16 +21909,18 @@ fi + # Check whether --enable-plugin-novatel was given. -if test "${enable_plugin_novatel+set}" = set; then : +if test ${enable_plugin_novatel+y} +then : enableval=$enable_plugin_novatel; -else +else $as_nop enable_plugin_novatel=$enable_all_plugins fi if test "x$enable_plugin_novatel" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_NOVATEL 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_NOVATEL 1" >>confdefs.h with_shared_novatel="yes" fi @@ -20569,16 +21933,18 @@ fi + # Check whether --enable-plugin-novatel-lte was given. -if test "${enable_plugin_novatel_lte+set}" = set; then : +if test ${enable_plugin_novatel_lte+y} +then : enableval=$enable_plugin_novatel_lte; -else +else $as_nop enable_plugin_novatel_lte=$enable_all_plugins fi if test "x$enable_plugin_novatel_lte" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_NOVATEL_LTE 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_NOVATEL_LTE 1" >>confdefs.h fi if test "x$enable_plugin_novatel_lte" = "xyes"; then @@ -20590,16 +21956,18 @@ fi + # Check whether --enable-plugin-option was given. -if test "${enable_plugin_option+set}" = set; then : +if test ${enable_plugin_option+y} +then : enableval=$enable_plugin_option; -else +else $as_nop enable_plugin_option=$enable_all_plugins fi if test "x$enable_plugin_option" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_OPTION 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_OPTION 1" >>confdefs.h with_shared_option="yes" fi @@ -20612,16 +21980,18 @@ fi + # Check whether --enable-plugin-option-hso was given. -if test "${enable_plugin_option_hso+set}" = set; then : +if test ${enable_plugin_option_hso+y} +then : enableval=$enable_plugin_option_hso; -else +else $as_nop enable_plugin_option_hso=$enable_all_plugins fi if test "x$enable_plugin_option_hso" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_OPTION_HSO 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_OPTION_HSO 1" >>confdefs.h with_shared_option="yes" fi @@ -20634,16 +22004,18 @@ fi + # Check whether --enable-plugin-pantech was given. -if test "${enable_plugin_pantech+set}" = set; then : +if test ${enable_plugin_pantech+y} +then : enableval=$enable_plugin_pantech; -else +else $as_nop enable_plugin_pantech=$enable_all_plugins fi if test "x$enable_plugin_pantech" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_PANTECH 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_PANTECH 1" >>confdefs.h fi if test "x$enable_plugin_pantech" = "xyes"; then @@ -20655,16 +22027,41 @@ fi + +# Check whether --enable-plugin-qcom-soc was given. +if test ${enable_plugin_qcom_soc+y} +then : + enableval=$enable_plugin_qcom_soc; +else $as_nop + enable_plugin_qcom_soc="no" +fi + +if test "x$enable_plugin_qcom_soc" = "xyes"; then + +printf "%s\n" "#define ENABLE_PLUGIN_QCOM_SOC 1" >>confdefs.h + +fi + if test "x$enable_plugin_qcom_soc" = "xyes"; then + ENABLE_PLUGIN_QCOM_SOC_TRUE= + ENABLE_PLUGIN_QCOM_SOC_FALSE='#' +else + ENABLE_PLUGIN_QCOM_SOC_TRUE='#' + ENABLE_PLUGIN_QCOM_SOC_FALSE= +fi + + + # Check whether --enable-plugin-quectel was given. -if test "${enable_plugin_quectel+set}" = set; then : +if test ${enable_plugin_quectel+y} +then : enableval=$enable_plugin_quectel; -else +else $as_nop enable_plugin_quectel=$enable_all_plugins fi if test "x$enable_plugin_quectel" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_QUECTEL 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_QUECTEL 1" >>confdefs.h fi if test "x$enable_plugin_quectel" = "xyes"; then @@ -20676,16 +22073,18 @@ fi + # Check whether --enable-plugin-samsung was given. -if test "${enable_plugin_samsung+set}" = set; then : +if test ${enable_plugin_samsung+y} +then : enableval=$enable_plugin_samsung; -else +else $as_nop enable_plugin_samsung=$enable_all_plugins fi if test "x$enable_plugin_samsung" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_SAMSUNG 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_SAMSUNG 1" >>confdefs.h with_shared_icera="yes" fi @@ -20698,16 +22097,18 @@ fi + # Check whether --enable-plugin-sierra-legacy was given. -if test "${enable_plugin_sierra_legacy+set}" = set; then : +if test ${enable_plugin_sierra_legacy+y} +then : enableval=$enable_plugin_sierra_legacy; -else +else $as_nop enable_plugin_sierra_legacy=$enable_all_plugins fi if test "x$enable_plugin_sierra_legacy" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_SIERRA_LEGACY 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_SIERRA_LEGACY 1" >>confdefs.h with_shared_icera="yes" with_shared_sierra="yes" @@ -20721,17 +22122,20 @@ fi + # Check whether --enable-plugin-sierra was given. -if test "${enable_plugin_sierra+set}" = set; then : +if test ${enable_plugin_sierra+y} +then : enableval=$enable_plugin_sierra; -else +else $as_nop enable_plugin_sierra=$enable_all_plugins fi if test "x$enable_plugin_sierra" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_SIERRA 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_SIERRA 1" >>confdefs.h + with_shared_xmm="yes" fi if test "x$enable_plugin_sierra" = "xyes"; then ENABLE_PLUGIN_SIERRA_TRUE= @@ -20742,16 +22146,18 @@ fi + # Check whether --enable-plugin-simtech was given. -if test "${enable_plugin_simtech+set}" = set; then : +if test ${enable_plugin_simtech+y} +then : enableval=$enable_plugin_simtech; -else +else $as_nop enable_plugin_simtech=$enable_all_plugins fi if test "x$enable_plugin_simtech" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_SIMTECH 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_SIMTECH 1" >>confdefs.h fi if test "x$enable_plugin_simtech" = "xyes"; then @@ -20763,16 +22169,18 @@ fi + # Check whether --enable-plugin-telit was given. -if test "${enable_plugin_telit+set}" = set; then : +if test ${enable_plugin_telit+y} +then : enableval=$enable_plugin_telit; -else +else $as_nop enable_plugin_telit=$enable_all_plugins fi if test "x$enable_plugin_telit" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_TELIT 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_TELIT 1" >>confdefs.h with_shared_telit="yes" fi @@ -20785,16 +22193,18 @@ fi + # Check whether --enable-plugin-thuraya was given. -if test "${enable_plugin_thuraya+set}" = set; then : +if test ${enable_plugin_thuraya+y} +then : enableval=$enable_plugin_thuraya; -else +else $as_nop enable_plugin_thuraya=$enable_all_plugins fi if test "x$enable_plugin_thuraya" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_THURAYA 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_THURAYA 1" >>confdefs.h fi if test "x$enable_plugin_thuraya" = "xyes"; then @@ -20806,16 +22216,18 @@ fi + # Check whether --enable-plugin-tplink was given. -if test "${enable_plugin_tplink+set}" = set; then : +if test ${enable_plugin_tplink+y} +then : enableval=$enable_plugin_tplink; -else +else $as_nop enable_plugin_tplink=$enable_all_plugins fi if test "x$enable_plugin_tplink" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_TPLINK 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_TPLINK 1" >>confdefs.h fi if test "x$enable_plugin_tplink" = "xyes"; then @@ -20827,16 +22239,18 @@ fi + # Check whether --enable-plugin-ublox was given. -if test "${enable_plugin_ublox+set}" = set; then : +if test ${enable_plugin_ublox+y} +then : enableval=$enable_plugin_ublox; -else +else $as_nop enable_plugin_ublox=$enable_all_plugins fi if test "x$enable_plugin_ublox" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_UBLOX 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_UBLOX 1" >>confdefs.h fi if test "x$enable_plugin_ublox" = "xyes"; then @@ -20848,16 +22262,18 @@ fi + # Check whether --enable-plugin-via was given. -if test "${enable_plugin_via+set}" = set; then : +if test ${enable_plugin_via+y} +then : enableval=$enable_plugin_via; -else +else $as_nop enable_plugin_via=$enable_all_plugins fi if test "x$enable_plugin_via" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_VIA 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_VIA 1" >>confdefs.h fi if test "x$enable_plugin_via" = "xyes"; then @@ -20869,16 +22285,18 @@ fi + # Check whether --enable-plugin-wavecom was given. -if test "${enable_plugin_wavecom+set}" = set; then : +if test ${enable_plugin_wavecom+y} +then : enableval=$enable_plugin_wavecom; -else +else $as_nop enable_plugin_wavecom=$enable_all_plugins fi if test "x$enable_plugin_wavecom" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_WAVECOM 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_WAVECOM 1" >>confdefs.h fi if test "x$enable_plugin_wavecom" = "xyes"; then @@ -20890,16 +22308,18 @@ fi + # Check whether --enable-plugin-x22x was given. -if test "${enable_plugin_x22x+set}" = set; then : +if test ${enable_plugin_x22x+y} +then : enableval=$enable_plugin_x22x; -else +else $as_nop enable_plugin_x22x=$enable_all_plugins fi if test "x$enable_plugin_x22x" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_X22X 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_X22X 1" >>confdefs.h fi if test "x$enable_plugin_x22x" = "xyes"; then @@ -20911,16 +22331,18 @@ fi + # Check whether --enable-plugin-zte was given. -if test "${enable_plugin_zte+set}" = set; then : +if test ${enable_plugin_zte+y} +then : enableval=$enable_plugin_zte; -else +else $as_nop enable_plugin_zte=$enable_all_plugins fi if test "x$enable_plugin_zte" = "xyes"; then -$as_echo "#define ENABLE_PLUGIN_ZTE 1" >>confdefs.h +printf "%s\n" "#define ENABLE_PLUGIN_ZTE 1" >>confdefs.h with_shared_icera="yes" fi @@ -20934,6 +22356,7 @@ + if test "x$with_shared_icera" = "xyes"; then WITH_SHARED_ICERA_TRUE= WITH_SHARED_ICERA_FALSE='#' @@ -20944,7 +22367,7 @@ if test "x$with_shared_icera" = "xyes"; then -$as_echo "#define WITH_SHARED_ICERA 1" >>confdefs.h +printf "%s\n" "#define WITH_SHARED_ICERA 1" >>confdefs.h else with_shared_icera="no" @@ -20960,7 +22383,7 @@ if test "x$with_shared_sierra" = "xyes"; then -$as_echo "#define WITH_SHARED_SIERRA 1" >>confdefs.h +printf "%s\n" "#define WITH_SHARED_SIERRA 1" >>confdefs.h else with_shared_sierra="no" @@ -20976,7 +22399,7 @@ if test "x$with_shared_option" = "xyes"; then -$as_echo "#define WITH_SHARED_OPTION 1" >>confdefs.h +printf "%s\n" "#define WITH_SHARED_OPTION 1" >>confdefs.h else with_shared_option="no" @@ -20992,7 +22415,7 @@ if test "x$with_shared_novatel" = "xyes"; then -$as_echo "#define WITH_SHARED_NOVATEL 1" >>confdefs.h +printf "%s\n" "#define WITH_SHARED_NOVATEL 1" >>confdefs.h else with_shared_novatel="no" @@ -21008,7 +22431,7 @@ if test "x$with_shared_xmm" = "xyes"; then -$as_echo "#define WITH_SHARED_XMM 1" >>confdefs.h +printf "%s\n" "#define WITH_SHARED_XMM 1" >>confdefs.h else with_shared_xmm="no" @@ -21024,7 +22447,7 @@ if test "x$with_shared_telit" = "xyes"; then -$as_echo "#define WITH_SHARED_TELIT 1" >>confdefs.h +printf "%s\n" "#define WITH_SHARED_TELIT 1" >>confdefs.h else with_shared_telit="no" @@ -21040,7 +22463,7 @@ if test "x$with_shared_foxconn" = "xyes"; then -$as_echo "#define WITH_SHARED_FOXCONN 1" >>confdefs.h +printf "%s\n" "#define WITH_SHARED_FOXCONN 1" >>confdefs.h else with_shared_foxconn="no" @@ -21048,7 +22471,7 @@ -ac_config_files="$ac_config_files Makefile data/Makefile data/ModemManager.pc data/mm-glib.pc data/tests/Makefile data/tests/org.freedesktop.ModemManager1.service include/Makefile include/ModemManager-version.h build-aux/Makefile libqcdm/Makefile libqcdm/src/Makefile libqcdm/tests/Makefile src/Makefile src/tests/Makefile plugins/Makefile test/Makefile introspection/Makefile introspection/tests/Makefile po/Makefile.in docs/Makefile docs/man/Makefile docs/reference/Makefile docs/reference/api/Makefile docs/reference/api/version.xml docs/reference/libmm-glib/Makefile docs/reference/libmm-glib/version.xml libmm-glib/Makefile libmm-glib/generated/Makefile libmm-glib/generated/tests/Makefile libmm-glib/tests/Makefile vapi/Makefile cli/Makefile examples/Makefile examples/modem-watcher-python/Makefile examples/modem-watcher-javascript/Makefile examples/sms-python/Makefile examples/network-scan-python/Makefile" +ac_config_files="$ac_config_files Makefile data/Makefile data/ModemManager.pc data/mm-glib.pc data/tests/Makefile data/tests/org.freedesktop.ModemManager1.service include/Makefile include/ModemManager-version.h build-aux/Makefile libqcdm/Makefile libqcdm/src/Makefile libqcdm/tests/Makefile src/Makefile src/tests/Makefile plugins/Makefile test/Makefile tools/Makefile tools/tests/Makefile tools/tests/services/org.freedesktop.ModemManager1.service introspection/Makefile introspection/tests/Makefile po/Makefile.in docs/Makefile docs/man/Makefile docs/reference/Makefile docs/reference/api/Makefile docs/reference/api/version.xml docs/reference/libmm-glib/Makefile docs/reference/libmm-glib/version.xml libmm-glib/Makefile libmm-glib/generated/Makefile libmm-glib/generated/tests/Makefile libmm-glib/tests/Makefile vapi/Makefile cli/Makefile examples/Makefile examples/modem-watcher-python/Makefile examples/modem-watcher-javascript/Makefile examples/sms-python/Makefile examples/network-scan-python/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -21077,8 +22500,8 @@ case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -21108,15 +22531,15 @@ /^ac_cv_env_/b end t clear :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else @@ -21130,8 +22553,8 @@ fi fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -21148,7 +22571,7 @@ for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" @@ -21159,14 +22582,14 @@ LTLIBOBJS=$ac_ltlibobjs -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 -$as_echo_n "checking that generated files are newer than configure... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +printf %s "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 -$as_echo "done" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf "%s\n" "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' @@ -21295,6 +22718,10 @@ as_fn_error $? "conditional \"ENABLE_PLUGIN_FOXCONN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${ENABLE_PLUGIN_GOSUNCN_TRUE}" && test -z "${ENABLE_PLUGIN_GOSUNCN_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_PLUGIN_GOSUNCN\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${ENABLE_PLUGIN_HAIER_TRUE}" && test -z "${ENABLE_PLUGIN_HAIER_FALSE}"; then as_fn_error $? "conditional \"ENABLE_PLUGIN_HAIER\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -21355,6 +22782,10 @@ as_fn_error $? "conditional \"ENABLE_PLUGIN_PANTECH\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${ENABLE_PLUGIN_QCOM_SOC_TRUE}" && test -z "${ENABLE_PLUGIN_QCOM_SOC_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_PLUGIN_QCOM_SOC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${ENABLE_PLUGIN_QUECTEL_TRUE}" && test -z "${ENABLE_PLUGIN_QUECTEL_FALSE}"; then as_fn_error $? "conditional \"ENABLE_PLUGIN_QUECTEL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -21440,8 +22871,8 @@ ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL @@ -21464,14 +22895,16 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -21481,46 +22914,46 @@ fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -21529,13 +22962,6 @@ fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -21544,8 +22970,12 @@ for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS @@ -21557,30 +22987,10 @@ as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] @@ -21593,13 +23003,14 @@ as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -21626,18 +23037,20 @@ { eval $1=; unset $1;} } as_unset=as_fn_unset + # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -21649,12 +23062,13 @@ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` @@ -21685,7 +23099,7 @@ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -21707,6 +23121,10 @@ as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -21720,6 +23138,12 @@ ECHO_N='-n';; esac +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -21761,7 +23185,7 @@ as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -21770,7 +23194,7 @@ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -21832,8 +23256,8 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by ModemManager $as_me 1.14.10, which was -generated by GNU Autoconf 2.69. Invocation command line was +This file was extended by ModemManager $as_me 1.16.6, which was +generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -21895,14 +23319,16 @@ Report bugs to ." _ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -ModemManager config.status 1.14.10 -configured by $0, generated by GNU Autoconf 2.69, +ModemManager config.status 1.16.6 +configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -21942,15 +23368,15 @@ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; + printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; + printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" @@ -21958,7 +23384,7 @@ --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; @@ -21967,7 +23393,7 @@ as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; + printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; @@ -21995,7 +23421,7 @@ if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" @@ -22009,7 +23435,7 @@ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX - $as_echo "$ac_log" + printf "%s\n" "$ac_log" } >&5 _ACEOF @@ -22337,6 +23763,9 @@ "src/tests/Makefile") CONFIG_FILES="$CONFIG_FILES src/tests/Makefile" ;; "plugins/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/Makefile" ;; "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; + "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;; + "tools/tests/Makefile") CONFIG_FILES="$CONFIG_FILES tools/tests/Makefile" ;; + "tools/tests/services/org.freedesktop.ModemManager1.service") CONFIG_FILES="$CONFIG_FILES tools/tests/services/org.freedesktop.ModemManager1.service" ;; "introspection/Makefile") CONFIG_FILES="$CONFIG_FILES introspection/Makefile" ;; "introspection/tests/Makefile") CONFIG_FILES="$CONFIG_FILES introspection/tests/Makefile" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; @@ -22369,9 +23798,9 @@ # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree @@ -22707,7 +24136,7 @@ esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done @@ -22715,17 +24144,17 @@ # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | + ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac @@ -22742,7 +24171,7 @@ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | +printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -22766,9 +24195,9 @@ case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -22830,8 +24259,8 @@ case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' @@ -22875,9 +24304,9 @@ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" @@ -22893,20 +24322,20 @@ # if test x"$ac_file" != x-; then { - $as_echo "/* $configure_input */" \ + printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else - $as_echo "/* $configure_input */" \ + printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi @@ -22926,7 +24355,7 @@ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | +printf "%s\n" X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -22946,8 +24375,8 @@ s/.*/./; q'`/stamp-h$_am_stamp_count ;; - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} + :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf "%s\n" "$as_me: executing $ac_file commands" >&6;} ;; esac @@ -22973,7 +24402,7 @@ for am_mf do # Strip MF so we end up with the name of the file. - am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` + am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line @@ -22985,7 +24414,7 @@ X"$am_mf" : 'X\(//\)[^/]' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$am_mf" | +printf "%s\n" X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -23007,7 +24436,7 @@ $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$am_mf" | +printf "%s\n" X/"$am_mf" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -23032,8 +24461,8 @@ (exit $ac_status); } || am_rc=$? done if test $am_rc -ne 0; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE=\"gmake\" (or whatever is @@ -23579,6 +25008,7 @@ esac + ltmain=$ac_aux_dir/ltmain.sh @@ -23742,8 +25172,8 @@ $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi @@ -23794,6 +25224,7 @@ dlink: ${enable_plugin_dlink} fibocom: ${enable_plugin_fibocom} foxconn: ${enable_plugin_foxconn} + gosuncn: ${enable_plugin_gosuncn} haier: ${enable_plugin_haier} huawei: ${enable_plugin_huawei} iridium: ${enable_plugin_iridium} @@ -23809,6 +25240,7 @@ option: ${enable_plugin_option} option hso: ${enable_plugin_option_hso} pantech: ${enable_plugin_pantech} + qcom-soc: ${enable_plugin_qcom_soc} quectel: ${enable_plugin_quectel} samsung: ${enable_plugin_samsung} sierra legacy: ${enable_plugin_sierra_legacy} @@ -23833,3 +25265,4 @@ echo " code coverage ldflags: ${CODE_COVERAGE_LDFLAGS}" fi echo "" + diff -Nru modemmanager-1.14.10/configure.ac modemmanager-1.16.6/configure.ac --- modemmanager-1.14.10/configure.ac 2021-01-16 21:11:13.000000000 +0800 +++ modemmanager-1.16.6/configure.ac 2021-06-06 21:41:15.000000000 +0800 @@ -5,8 +5,8 @@ dnl m4_define([mm_major_version], [1]) -m4_define([mm_minor_version], [14]) -m4_define([mm_micro_version], [10]) +m4_define([mm_minor_version], [16]) +m4_define([mm_micro_version], [6]) m4_define([mm_version], [mm_major_version.mm_minor_version.mm_micro_version]) @@ -18,9 +18,9 @@ dnl with old code), increment a. dnl If the interface has changed in an incompatible way (that is, dnl functions have changed or been removed), then zero a. -m4_define([mm_glib_lt_current], [6]) +m4_define([mm_glib_lt_current], [7]) m4_define([mm_glib_lt_revision], [0]) -m4_define([mm_glib_lt_age], [6]) +m4_define([mm_glib_lt_age], [7]) dnl----------------------------------------------------------------------------- dnl autoconf, automake, libtool initialization @@ -248,13 +248,14 @@ PKG_CHECK_MODULES(LIBSYSTEMD, [libsystemd >= 209],[have_libsystemd=yes],[have_libsystemd=no]) PKG_CHECK_MODULES(LIBSYSTEMD_LOGIN, [libsystemd-login >= 183],[have_libsystemd_login=yes],[have_libsystemd_login=no]) +PKG_CHECK_MODULES(LIBELOGIND, [libelogind >= 209], [have_elogind=yes], [have_elogind=no]) AC_ARG_WITH(systemd-suspend-resume, AS_HELP_STRING([--with-systemd-suspend-resume=no|yes], [Enable systemd suspend/resume support [[default=auto]]]),, [with_systemd_suspend_resume=auto]) if test "x$with_systemd_suspend_resume" = "xauto"; then - if test "x$have_libsystemd" = "xyes" || test "x$have_libsystemd_login" = "xyes"; then + if test "x$have_libsystemd" = "xyes" || test "x$have_libsystemd_login" = "xyes" || test "x$have_elogind" = "xyes"; then with_systemd_suspend_resume=yes else with_systemd_suspend_resume=no @@ -263,8 +264,8 @@ case $with_systemd_suspend_resume in yes) - if test "x$have_libsystemd" = "xno" && test "x$have_libsystemd_login" = "xno"; then - AC_MSG_ERROR(libsystemd or libsystemd-login development headers are required) + if test "x$have_libsystemd" = "xno" && test "x$have_libsystemd_login" = "xno" && test "x$have_elogind" = "xno"; then + AC_MSG_WARN(libsystemd, libsystemd-login or elogind must be available at runtime for suspend/resume support) fi AC_DEFINE(WITH_SYSTEMD_SUSPEND_RESUME, 1, [Define if you have systemd suspend-resume support]) ;; @@ -400,7 +401,7 @@ dnl QMI support (enabled by default) dnl -LIBQMI_VERSION=1.26.0 +LIBQMI_VERSION=1.28.6 AC_ARG_WITH(qmi, AS_HELP_STRING([--without-qmi], [Build without QMI support]), [], [with_qmi=yes]) AM_CONDITIONAL(WITH_QMI, test "x$with_qmi" = "xyes") @@ -470,6 +471,7 @@ [with_shared_xmm]) MM_ENABLE_PLUGIN([foxconn], [with_shared_foxconn]) +MM_ENABLE_PLUGIN([gosuncn]) MM_ENABLE_PLUGIN([haier]) MM_ENABLE_PLUGIN([huawei]) MM_ENABLE_PLUGIN([iridium]) @@ -489,13 +491,15 @@ MM_ENABLE_PLUGIN([option-hso], [with_shared_option]) MM_ENABLE_PLUGIN([pantech]) +MM_ENABLE_PLUGIN_DISABLED([qcom-soc]) MM_ENABLE_PLUGIN([quectel]) MM_ENABLE_PLUGIN([samsung], [with_shared_icera]) MM_ENABLE_PLUGIN([sierra-legacy], [with_shared_icera, with_shared_sierra]) -MM_ENABLE_PLUGIN([sierra]) +MM_ENABLE_PLUGIN([sierra], + [with_shared_xmm]) MM_ENABLE_PLUGIN([simtech]) MM_ENABLE_PLUGIN([telit], [with_shared_telit]) @@ -537,6 +541,9 @@ src/tests/Makefile plugins/Makefile test/Makefile +tools/Makefile +tools/tests/Makefile +tools/tests/services/org.freedesktop.ModemManager1.service introspection/Makefile introspection/tests/Makefile po/Makefile.in @@ -608,6 +615,7 @@ dlink: ${enable_plugin_dlink} fibocom: ${enable_plugin_fibocom} foxconn: ${enable_plugin_foxconn} + gosuncn: ${enable_plugin_gosuncn} haier: ${enable_plugin_haier} huawei: ${enable_plugin_huawei} iridium: ${enable_plugin_iridium} @@ -623,6 +631,7 @@ option: ${enable_plugin_option} option hso: ${enable_plugin_option_hso} pantech: ${enable_plugin_pantech} + qcom-soc: ${enable_plugin_qcom_soc} quectel: ${enable_plugin_quectel} samsung: ${enable_plugin_samsung} sierra legacy: ${enable_plugin_sierra_legacy} diff -Nru modemmanager-1.14.10/data/Makefile.in modemmanager-1.16.6/data/Makefile.in --- modemmanager-1.14.10/data/Makefile.in 2021-01-16 21:19:55.000000000 +0800 +++ modemmanager-1.16.6/data/Makefile.in 2021-06-06 21:43:42.000000000 +0800 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 Free Software Foundation, Inc. @@ -291,6 +291,8 @@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBELOGIND_CFLAGS = @LIBELOGIND_CFLAGS@ +LIBELOGIND_LIBS = @LIBELOGIND_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBMM_GLIB_CFLAGS = @LIBMM_GLIB_CFLAGS@ @@ -415,6 +417,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff -Nru modemmanager-1.14.10/data/org.freedesktop.ModemManager1.policy.in modemmanager-1.16.6/data/org.freedesktop.ModemManager1.policy.in --- modemmanager-1.14.10/data/org.freedesktop.ModemManager1.policy.in 2021-01-16 21:20:03.000000000 +0800 +++ modemmanager-1.16.6/data/org.freedesktop.ModemManager1.policy.in 2021-06-06 21:43:47.000000000 +0800 @@ -18,8 +18,10 @@ Controlla il demone di ยซModem Managerยป Mengendalikan daemon Manajer Modem Modemkezelล‘ dรฉmon vezรฉrlรฉse + ืฉืœื™ื˜ื” ื‘ืกื•ื›ืŸ ืžื ื”ืœ ื”ืžื•ื“ืžื™ื Controle il demoni di Modem Manager Contrรดle le service Modem Manager + Hallitse Modem Manager taustaprosessia Den Modem-Manager-Daemon steuern Styr Modem Manager-dรฆmonen Ovlรกdat dรฉmona pro sprรกvu modemลฏ @@ -36,8 +38,10 @@ La politica di sistema impedisce il controllo di ยซModem Managerยป Kebijakan sistem mencegah pengendalian Manajer Modem. A rendszer hรกzirendje nem teszi lehetล‘vรฉ a Modemkezelล‘ vezรฉrlรฉsรฉt. + ืžื“ื™ื ื™ื•ืช ืžืขืจื›ืช ืžื•ื ืขืช ืฉืœื™ื˜ื” ื‘ืžื ื”ืœ ื”ืžื•ื“ืžื™ื. La politiche dal sisteme e impedรฌs il control di Modem Manager. La politique systรจme empรชche le contrรดle de Modem Manager. + Jรคrjestelmรคn sรครคntรถ estรครค Modem Managerin hallinta-asetusten muuttamisen. Die Systemrichtlinien verhindern die Steuerung von ModemManager. Systempolitikken forhindrer styring af Modem Manager. Systรฉmovรก zรกsada brรกnรญ v ovlรกdรกnรญ Sprรกvy modemลฏ. @@ -60,8 +64,10 @@ Sblocca e controlla un dispositivo mobile a banda larga Buka kunci dan kendalikan suatu peranti data seluler Mobil szรฉles sรกvรบ kรฉszรผlรฉk feloldรกsa รฉs vezรฉrlรฉse + ืฉื—ืจื•ืจ ื•ืฉืœื™ื˜ื” ื‘ืžื›ืฉื™ืจ ืœืจืฉืช ืชืงืฉื•ืจืช ืกืœื•ืœืจื™ืช Sbloche e controle un dispositรฎf a bande largje mobile Dรฉverrouiller et contrรดler un pรฉriphรฉrique mobile ร  large bande + Avaa ja hallitse mobiilia laajakaistalaitetta Ein mobiles Breitbandgerรคt entsperren und steuern Lรฅs op for og styr en mobilt bredbรฅnd-enhed Odemykat a ovlรกdat mobilnรญ ลกirokopรกsmovรฉ zaล™รญzenรญ @@ -78,8 +84,10 @@ La politica di sistema impedisce di sbloccare o controllare il dispositivo mobile a banda larga. Kebijakan sistem mencegah membuka kunci atau mengendalikan peranti data seluler. A rendszer hรกzirendje nem teszi lehetล‘vรฉ a mobil szรฉles sรกvรบ kรฉszรผlรฉk feloldรกsรกt vagy vezรฉrlรฉsรฉt. + ืžื“ื™ื ื™ื•ืช ื”ืžืขืจื›ืช ืžื•ื ืขืช ืฉื—ืจื•ืจ ืื• ืฉืœื™ื˜ื” ื‘ื”ืชืงืŸ ืจืฉืช ื”ืชืงืฉื•ืจืช ื”ืืœื—ื•ื˜ื™ืช. La politiche dal sisteme e impedรฌs di sblocรข o controlรข il dispositรฎf a bande largje mobile. La politique systรจme empรชche le verrouillage et le contrรดle dโ€™un pรฉriphรฉrique mobile ร  large bande. + Jรคrjestelmรคn sรครคntรถ estรครค avaamasta tai hallitsemasta mobiilia laajakaistalaitetta. Die Systemrichtlinien verhindern das Entsperren oder Steuern des mobilen Breitbandgerรคtes. Systempolitikken forhindrer oplรฅsning og styring af mobilt bredbรฅnd-enheden. Systรฉmovรก zรกsada brรกnรญ v odemknutรญ nebo v ovlรกdรกnรญ mobilnรญho ลกirokopรกsmovรฉho zaล™รญzenรญ. @@ -102,8 +110,10 @@ Aggiunge, modifica ed elimina contatti mobili a banda larga Tambah, ubah, dan hapus kontak data seluler Nรฉvjegyek hozzรกadรกsa, mรณdosรญtรกsa รฉs eltรกvolรญtรกsa + ื ื™ืชืŸ ืœื”ื•ืกื™ืฃ, ืœืขืจื•ืš ื•ืœืžื—ื•ืง ืื ืฉื™ ืงืฉืจ ื‘ื”ืชืงืŸ ืจืฉืช ืชืงืฉื•ืจืช ืืœื—ื•ื˜ื™ืช Zonte, modifiche e elimine i contats de bande largje mobile Ajouter, modifier et supprimer des contacts de connexions mobiles + Lisรครค, muuta ja poista mobiilin laajakaistan yhteystietoja Kontakte fรผr mobiles Breitband hinzufรผgen, รคndern und lรถschen Tilfรธj, rediger og slet mobilt bredbรฅnd-kontakter Pล™idรกvat, mฤ›nit a mazat kontakty v mobilnรญm zaล™รญzenรญ @@ -120,8 +130,10 @@ La politica di sistema impedisce di aggiungere, modificare o eliminare i contatti di questo dispositivo. Kebijakan sistem mencegah menambah, mengubah, atau menghapus kontak-kontak peranti ini. A rendszer hรกzirendje nem teszi lehetล‘vรฉ ezen az eszkรถzรถn a nรฉvjegyek hozzรกadรกsรกt, mรณdosรญtรกsรกt รฉs eltรกvolรญtรกsรกt. + ืžื“ื™ื ื™ื•ืช ื”ืžืขืจื›ืช ืžื•ื ืขืช ื”ื•ืกืคื”, ืขืจื™ื›ื” ืื• ืžื—ื™ืงื” ืฉืœ ืื ืฉื™ ื”ืงืฉืจ ื‘ืžื›ืฉื™ืจ ื”ื–ื”. La politiche dal sisteme e impedรฌs di zontรข, modificรข o eliminรข i contats di chest dispositรฎf. La politique systรจme empรชche lโ€™ajout, la modification ou la suppression des contacts de cet appareil. + Jรคrjestelmรคn sรครคntรถ estรครค lisรครคmรคstรค, muuttamasta tai poistamasta tรคmรคn laitteen yhteystietoja. Die Systemrichtlinien verhindern das Hinzufรผgen, ร„ndern oder Lรถschen der Kontakte dieses Gerรคtes. Systempolitikken forhindrer tilfรธjelse, redigering eller sletning af enhedens kontakter. Systรฉmovรก zรกsada brรกnรญ v pล™idรกnรญ, zmฤ›nฤ› nebo smazรกnรญ kontaktลฏ v tomto zaล™รญzenรญ. @@ -144,8 +156,10 @@ Invia, salva, modifica ed elimina messaggi di testo Kirim, simpan, ubah, dan hapus pesan-pesan teks Szรถveges รผzenetek kรผldรฉse, mentรฉse, mรณdosรญtรกsa รฉs tรถrlรฉse + ืฉืœื™ื—ื”, ืฉืžื™ืจื”, ืขืจื™ื›ื” ื•ืžื—ื™ืงื” ืฉืœ ื”ื•ื“ืขื•ืช ื˜ืงืกื˜ Invie, salve, modifiche e elimine i messaรงs di test Envoyer, enregistrer, modifier et supprimer des messages textuels + Lรคhetรค, talleta, muuta ja poista tekstiviestejรค Textnachrichten senden, speichern, bearbeiten und lรถschen Send, gem, rediger og slet tekstbeskeder Odesรญlat, uklรกdat, mฤ›nit a mazat textovรฉ zprรกvy @@ -162,8 +176,10 @@ La politica di sistema impedisce di inviare o manipolare i messaggi di testo di questo dispositivo. Kebijakan sistem mencegah pengiriman atau manipulasi pesan-pesan teks peranti ini. A rendszer hรกzirendje nem teszi lehetล‘vรฉ a szรถveges รผzenetek kรผldรฉsรฉt vagy kezelรฉsรฉt. + ืžื“ื™ื ื™ื•ืช ื”ืžืขืจื›ืช ืžื•ื ืขืช ืฉืœื™ื—ื” ืื• ืขืจื™ื›ื” ืฉืœ ื”ืžืกืจื•ื ื™ื ื‘ื”ืชืงืŸ ื”ื–ื”. La politiche dal sisteme e impedรฌs di inviรข o manipolรข i messaรงs di test di chest dispositรฎf. La politique systรจme empรชche lโ€™envoi ou la manipulation des messages textuels ce cet appareil. + Jรคrjestelmรคn sรครคntรถ estรครค lรคhettรคmรคstรค tai muokkaamasta tรคmรคn laitteen tekstiviestejรค. Systempolitikken forhindrer afsendelse eller manipulering af enhedens tekstbeskeder. Systรฉmovรก zรกsada brรกnรญ v odesรญlรกnรญ nebo v manipulaci s textovรฝmi zprรกvami na tomto zaล™รญzenรญ. @@ -185,8 +201,10 @@ Accetta chiamate vocali in arrivo o avvia chiamate vocali. Terima panggilan suara masuk atau mulai pemanggilan suara keluar. Bejรถvล‘ hรญvรกsok fogadรกsa vagy kimenล‘ hรญvรกsok indรญtรกsa. + ืœืงื‘ืœ ืฉื™ื—ื•ืช ื ื›ื ืกื•ืช ืื• ืœื”ื•ืฆื™ื ืฉื™ื—ื•ืช. Acete lis clamadis vocรขls in jentrade o tacรข clamadis vocรขls in jessude. Accepter des appels vocaux entrants ou initier des appels vocaux sortants. + Hyvรคksy tulevat puhelut tai aloita (รครคni)puheluita. Accepter indkommende stemmeopkald eller start udgรฅende stemmeopkald. Pล™ijรญmat pล™รญchozรญ hovory nebo zaฤรญnat odchozรญ hovory System policy prevents voice calls. @@ -202,8 +220,10 @@ La politica di sistema impedisce di effettuare chiamate vocali. Kebijakan sistem mencegah panggilan suara. A rendszer hรกzirendje nem teszi lehetล‘vรฉ a hรญvรกsokat. + ืžื“ื™ื ื™ื•ืช ื”ืžืขืจื›ืช ืžื•ื ืขืช ืฉื™ื—ื•ืช ืงื•ืœื™ื•ืช. La politiche dal sisteme e impedรฌs lis clamadis vocรขls. La politique systรจme empรชche les appels vocaux. + Jรคrjestelmรคn sรครคntรถ estรครค รครคnipuhelut. Systempolitikken forhindrer stemmeopkald. Systรฉmovรก zรกsada brรกnรญ v hlasovรฝch hovorech. @@ -222,6 +242,8 @@ Odpytywanie informacji oย czasie sieciowym iย strefie czasowej Interroga le informazioni sull'ora di rete e sul fuso orario Tanyakan waktu jaringan dan informasi zona waktu + ืœืชืฉืืœ ืืช ืคืจื˜ื™ ื”ืฉืขื” ื•ืื–ื•ืจ ื”ื–ืžืŸ ืžื”ืจืฉืช + Tarkista verkon aika ja aikavyรถhyketiedot System policy prevents querying network time information. ะŸั€ะฐะฒะธะปะฐ ัะธัั‚ะตะผะธ ะทะฐะฑะพั€ะพะฝััŽั‚ัŒ ะฝะฐะดัะธะปะฐะฝะฝั ะทะฐะฟะธั‚ั–ะฒ ั‰ะพะดะพ ั‡ะฐััƒ ะผะตั€ะตะถั–. Sistem ilkesi aฤŸ zaman bilgisini sorgulamayฤฑ engelliyor. @@ -232,6 +254,8 @@ Ustawienia systemu uniemoลผliwiajฤ… odpytywanie informacji oย czasie sieciowym. La politica di sistema impedisce di interrogare le informazioni sull'ora di rete Kebijakan sistem mencegah kuiri informasi waktu jaringan. + ืžื“ื™ื ื™ื•ืช ืžืขืจื›ืช ืžื•ื ืขืช ืชืฉืื•ืœ ืคืจื˜ื™ ื–ืžืŸ ืžื”ืจืฉืช. + Jรคrjestelmรคn sรครคntรถ estรครค tarkastamasta verkon aikaa ja aikavyรถhyketietoja. no @MM_DEFAULT_USER_POLICY@ @@ -251,8 +275,10 @@ Abilita e visualizza informazioni di geolocalizzazione e posizionamento Fungsikan dan tilik lokasi geografis dan informasi posisi Fรถldrajzi helyzetmeghatรกrozรกs bekapcsolรกsa รฉs az informรกciรณk megtekintรฉse + ืœื”ืคืขื™ืœ ื•ืœื”ืฆื™ื’ ืคืจื˜ื™ ืžื™ืงื•ื ื’ืื•ื’ืจืคื™ Abilite e viรดt la posizion gjeografiche e lis informazions su la posizion Activer et voir les informations de position gรฉographique + Salli ja katso sijainti- ja paikkatiedot Informationen zum geografischen Standort und Positionierung aktivieren und anzeigen Aktivรฉr og vis information om geografisk placering og positition Povolovat sdฤ›lovรกnรญ a zobrazovรกnรญ geografickรฉ polohy a informacรญ o pozici @@ -269,8 +295,10 @@ La politica di sistema impedisce di abilitare o visualizzare informazioni di geolocalizzazione. Kebijakan sistem mencegah memfungsikan atau menilik informasi lokasi geografis. A rendszer hรกzirendje nem teszi lehetล‘vรฉ a fรถldrajzi helyzetmeghatรกrozรกs bekapcsolรกsรกt vagy az informรกciรณk megtekintรฉsรฉt. + ืžื“ื™ื ื™ื•ืช ืžืขืจื›ืช ืžื•ื ืขืช ื”ืคืขืœื” ืื• ื”ืฆื’ื” ืฉืœ ืคืจื˜ื™ ืžื™ืงื•ื ื’ืื•ื’ืจืคื™. La politiche dal sisteme e impedรฌs di abilitรข o viodi lis informazions su la posizion gjeografiche. La politique systรจme empรชche dโ€™activer ou de voir les informations de position gรฉographique. + Jรคrjestelmรคn sรครคntรถ estรครค sallimasta tai katsomasta sijainti- ja paikkatietoja Die Systemrichtlinien verhindern das Aktivieren oder ร„ndern der Informationen zum geografischen Standort. Systempolitikken forhindrer aktivering og visning af information geografisk placering. Systรฉmovรก zรกsada brรกnรญ v povolenรญ sdฤ›lovรกnรญ a v zobrazenรญ informacรญ o geografickรฉ poloze. @@ -293,8 +321,10 @@ Interroga e utilizza informazioni e servizi della rete Kuiri dan manfaatkan layanan dan informasi jaringan Hรกlรณzati informรกciรณk รฉs szolgรกltatรกsok lekรฉrdezรฉse รฉs hasznรกlata + ืชืฉืื•ืœ ื•ืฉื™ืžื•ืฉ ื‘ืฉื™ืจื•ืชื™ ื•ืžื™ื“ืข ืขืœ ื”ืจืฉืช Interoghe e dopre lis informazions di rรชt e i servizis Interroger et utiliser les informations et services du rรฉseau + Tarkista ja kรคytรค verkon tietoja ja palveluita Netzwerkinformationen und -dienste abfragen und nutzen Forespรธrg og anvend netvรฆrksinformation og -tjenester Dotazovat se na informace o sรญti a na sluลพby a vyuลพรญvat je @@ -311,8 +341,10 @@ La politica di sistema impedisce di interrogare o di utilizzare le informazioni e i servizi della rete. Kebijakan sistem mencegah kuiri atau pemanfaatan layanan dan informasi jaringan. A rendszer hรกzirendje nem teszi lehetล‘vรฉ a hรกlรณzati informรกciรณk รฉs szolgรกltatรกsok lekรฉrdezรฉsรฉt รฉs hasznรกlatรกt. + ืžื“ื™ื ื™ื•ืช ื”ืžืขืจื›ืช ืžื•ื ืขืช ืชืฉืื•ืœ ืื• ืฉื™ืžื•ืฉ ื‘ืžื™ื“ืข ืขืœ ื”ืจืฉืช ืื• ืฉื™ืจื•ืชื™ื ืฉืœื”. La politiche dal sisteme e impedรฌs la interogazion e la utilizazion di informazions di rรชt e servizis. La politique systรจme empรชche lโ€™interrogation et lโ€™utilisation des informations et des services du rรฉseau. + Jรคrjestelmรคn sรครคntรถ estรครค tarkistamasta tai kรคyttรคmรคstรค verkon tietoja ja palveluita. Die Systemrichtlinien verhindern die Abfrage der Netzwerkinformationen und -dienste. Systempolitikken forhindrer forespรธrgsel eller anvendelse af netvรฆrksinformation og -tjenester. Systรฉmovรก zรกsada brรกnรญ v dotazovรกnรญ na informace o sรญti a na sluลพby, nebo brรกnรญ v jejich vyuลพรญvรกnรญ. @@ -335,8 +367,10 @@ Interroga e gestisce il firmware su un dispositivo mobile a banda larga Kuiri dan kelola firmware pada suatu peranti data seluler Firmware lekรฉrdezรฉse รฉs kezelรฉse a mobil szรฉles sรกvรบ eszkรถzรถn + ืชืฉืื•ืœ ื•ื ื™ื”ื•ืœ ืงื•ืฉื—ื” ืขืœ ื”ืชืงืŸ ืจืฉืช ืชืงืฉื•ืจืช ืกืœื•ืœืจื™ืช Interoghe e gjestรฌs il firmware suntun dispositรฎf a bande largje mobile Interroger et gรฉrer le matรฉriel dโ€™un pรฉriphรฉrique mobile ร  large bande + Tarkista ja hallitse mobiilin laajakaistalaitteen laiteohjelmistoa Firmware auf mobilen Breitbandgerรคten abfragen und verwalten Forespรธrg og hรฅndter firmware pรฅ en mobilt bredbรฅnd-enhed Dotazovat se na firmware a spravovat jej na mobilnรญm ลกirokopรกsmovรฉm zaล™รญzenรญ @@ -353,8 +387,10 @@ La politica di sistema impedisce di interrogare o gestire il firmware di questo dispositivo. Kebijakan sistem mencegah kuiri atau pengelolaan firmware peranti ini. A rendszer lekรฉrdezรฉse รฉs hasznรกlata lehetล‘vรฉ a firmware lekรฉrdezรฉsรฉt รฉs kezelรฉsรฉt az eszkรถzรถn. + ืžื“ื™ื ื™ื•ืช ื”ืžืขืจื›ืช ืžื•ื ืขืช ืชืฉืื•ืœ ืื• ื ื™ื”ื•ืœ ืฉืœ ืงื•ืฉื—ืช ื”ื”ืชืงืŸ ื”ื–ื”. La politiche dal sisteme e impedรฌs di interogรข o gjestรฎ il firmware di chest dispositรฎf. La politique systรจme empรชche lโ€™interrogation et la gestion du matรฉriel de ce pรฉriphรฉrique. + Jรคrjestelmรคn sรครคntรถ estรครค tarkistamasta ja hallitsemasta tรคmรคn laitteen laiteohjelmistoa. Die Systemrichtlinien verhindern die Abfrage oder Verwaltung der Firmware dieses Gerรคtes. Systempolitikken forhindrer forespรธrgsel og hรฅndtering af enhedens firmware. Systรฉmovรก zรกsada brรกnรญ v dotรกzรกnรญ na firmware nebo brรกnรญ v jeho sprรกvฤ› na tomto zaล™รญzenรญ. diff -Nru modemmanager-1.14.10/data/tests/Makefile.in modemmanager-1.16.6/data/tests/Makefile.in --- modemmanager-1.14.10/data/tests/Makefile.in 2021-01-16 21:19:55.000000000 +0800 +++ modemmanager-1.16.6/data/tests/Makefile.in 2021-06-06 21:43:42.000000000 +0800 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 Free Software Foundation, Inc. @@ -195,6 +195,8 @@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBELOGIND_CFLAGS = @LIBELOGIND_CFLAGS@ +LIBELOGIND_LIBS = @LIBELOGIND_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBMM_GLIB_CFLAGS = @LIBMM_GLIB_CFLAGS@ @@ -319,6 +321,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff -Nru modemmanager-1.14.10/debian/changelog modemmanager-1.16.6/debian/changelog --- modemmanager-1.14.10/debian/changelog 2021-01-17 01:23:28.000000000 +0800 +++ modemmanager-1.16.6/debian/changelog 2021-07-07 11:55:02.000000000 +0800 @@ -1,3 +1,41 @@ +modemmanager (1.16.6-2~21.04) hirsute; urgency=medium + + * Non-maintainer upload. + * Backport to hirsute. (LP: #1934286) + + -- Jerry Lee Wed, 07 Jul 2021 11:55:02 +0800 + +modemmanager (1.16.6-2) experimental; urgency=medium + + * debian/control: include python build-depends for tests + + -- Sebastien Bacher Fri, 25 Jun 2021 15:32:16 +0200 + +modemmanager (1.16.6-1) experimental; urgency=medium + + * New upstream version + * debian/control.in: + - updated libqmi requirement + * debian/libmm-glib0.symbols: + - updated for the new version + + -- Sebastien Bacher Fri, 25 Jun 2021 11:30:20 +0200 + +modemmanager (1.14.12-0.1) unstable; urgency=medium + + * Non-maintainer upload. + * New upstream version, bug fixes only, no new features. + - MBIM: + - Plug memleak in disconnection logic. + - Don't fail IPv4v6 connection attempt if only IPv4 succeeds. + - QMI: + - Fix network registration cancellation logic with asserts disabled. + + [ Helmut Grohne ] + * Annotate dbus dependency . (Closes: #980827) + + -- Martin Fri, 12 Mar 2021 18:09:44 +0000 + modemmanager (1.14.10-0.1) unstable; urgency=medium * Non-maintainer upload. diff -Nru modemmanager-1.14.10/debian/control modemmanager-1.16.6/debian/control --- modemmanager-1.14.10/debian/control 2021-01-17 01:23:03.000000000 +0800 +++ modemmanager-1.16.6/debian/control 2021-06-25 21:32:16.000000000 +0800 @@ -14,11 +14,13 @@ libgudev-1.0-dev (>= 147), libsystemd-dev (>= 209), libpolkit-gobject-1-dev (>= 0.97), - libqmi-glib-dev (>= 1.26.0~), + libqmi-glib-dev (>= 1.28.6~), libmbim-glib-dev (>= 1.24.0~), libglib2.0-doc, + python3-dbus, + python3-gi, valac (>= 0.22), - dbus + dbus , Standards-Version: 4.2.1 Rules-Requires-Root: no Vcs-Git: https://salsa.debian.org/debian/modemmanager.git diff -Nru modemmanager-1.14.10/debian/libmm-glib0.symbols modemmanager-1.16.6/debian/libmm-glib0.symbols --- modemmanager-1.14.10/debian/libmm-glib0.symbols 2021-01-17 01:23:03.000000000 +0800 +++ modemmanager-1.16.6/debian/libmm-glib0.symbols 2021-06-25 21:32:16.000000000 +0800 @@ -490,6 +490,9 @@ mm_gdbus_modem_call_set_power_state@Base 0.7.991 mm_gdbus_modem_call_set_power_state_finish@Base 0.7.991 mm_gdbus_modem_call_set_power_state_sync@Base 0.7.991 + mm_gdbus_modem_call_set_primary_sim_slot@Base 1.16.6 + mm_gdbus_modem_call_set_primary_sim_slot_finish@Base 1.16.6 + mm_gdbus_modem_call_set_primary_sim_slot_sync@Base 1.16.6 mm_gdbus_modem_cdma_call_activate@Base 0.7.991 mm_gdbus_modem_cdma_call_activate_finish@Base 0.7.991 mm_gdbus_modem_cdma_call_activate_manual@Base 0.7.991 @@ -538,6 +541,7 @@ mm_gdbus_modem_complete_set_current_capabilities@Base 0.7.991 mm_gdbus_modem_complete_set_current_modes@Base 0.7.991 mm_gdbus_modem_complete_set_power_state@Base 0.7.991 + mm_gdbus_modem_complete_set_primary_sim_slot@Base 1.16.6 mm_gdbus_modem_dup_bearers@Base 1.2.0 mm_gdbus_modem_dup_carrier_configuration@Base 1.10.4 mm_gdbus_modem_dup_carrier_configuration_revision@Base 1.10.4 @@ -557,6 +561,7 @@ mm_gdbus_modem_dup_revision@Base 0.7.991 mm_gdbus_modem_dup_signal_quality@Base 0.7.991 mm_gdbus_modem_dup_sim@Base 0.7.991 + mm_gdbus_modem_dup_sim_slots@Base 1.16.6 mm_gdbus_modem_dup_supported_bands@Base 0.7.991 mm_gdbus_modem_dup_supported_capabilities@Base 0.7.991 mm_gdbus_modem_dup_supported_modes@Base 0.7.991 @@ -606,9 +611,11 @@ mm_gdbus_modem_get_ports@Base 1.0.0 mm_gdbus_modem_get_power_state@Base 0.7.991 mm_gdbus_modem_get_primary_port@Base 0.7.991 + mm_gdbus_modem_get_primary_sim_slot@Base 1.16.6 mm_gdbus_modem_get_revision@Base 0.7.991 mm_gdbus_modem_get_signal_quality@Base 0.7.991 mm_gdbus_modem_get_sim@Base 0.7.991 + mm_gdbus_modem_get_sim_slots@Base 1.16.6 mm_gdbus_modem_get_state@Base 0.7.991 mm_gdbus_modem_get_state_failed_reason@Base 0.7.991 mm_gdbus_modem_get_supported_bands@Base 0.7.991 @@ -771,9 +778,11 @@ mm_gdbus_modem_set_ports@Base 1.0.0 mm_gdbus_modem_set_power_state@Base 0.7.991 mm_gdbus_modem_set_primary_port@Base 0.7.991 + mm_gdbus_modem_set_primary_sim_slot@Base 1.16.6 mm_gdbus_modem_set_revision@Base 0.7.991 mm_gdbus_modem_set_signal_quality@Base 0.7.991 mm_gdbus_modem_set_sim@Base 0.7.991 + mm_gdbus_modem_set_sim_slots@Base 1.16.6 mm_gdbus_modem_set_state@Base 0.7.991 mm_gdbus_modem_set_state_failed_reason@Base 0.7.991 mm_gdbus_modem_set_supported_bands@Base 0.7.991 @@ -790,11 +799,13 @@ mm_gdbus_modem_signal_dup_evdo@Base 1.2.0 mm_gdbus_modem_signal_dup_gsm@Base 1.2.0 mm_gdbus_modem_signal_dup_lte@Base 1.2.0 + mm_gdbus_modem_signal_dup_nr5g@Base 1.16.6 mm_gdbus_modem_signal_dup_umts@Base 1.2.0 mm_gdbus_modem_signal_get_cdma@Base 1.2.0 mm_gdbus_modem_signal_get_evdo@Base 1.2.0 mm_gdbus_modem_signal_get_gsm@Base 1.2.0 mm_gdbus_modem_signal_get_lte@Base 1.2.0 + mm_gdbus_modem_signal_get_nr5g@Base 1.16.6 mm_gdbus_modem_signal_get_rate@Base 1.2.0 mm_gdbus_modem_signal_get_type@Base 1.2.0 mm_gdbus_modem_signal_get_umts@Base 1.2.0 @@ -811,6 +822,7 @@ mm_gdbus_modem_signal_set_evdo@Base 1.2.0 mm_gdbus_modem_signal_set_gsm@Base 1.2.0 mm_gdbus_modem_signal_set_lte@Base 1.2.0 + mm_gdbus_modem_signal_set_nr5g@Base 1.16.6 mm_gdbus_modem_signal_set_rate@Base 1.2.0 mm_gdbus_modem_signal_set_umts@Base 1.2.0 mm_gdbus_modem_signal_skeleton_get_type@Base 1.2.0 @@ -1012,11 +1024,14 @@ mm_gdbus_sim_complete_enable_pin@Base 0.7.991 mm_gdbus_sim_complete_send_pin@Base 0.7.991 mm_gdbus_sim_complete_send_puk@Base 0.7.991 + mm_gdbus_sim_dup_eid@Base 1.16.6 mm_gdbus_sim_dup_emergency_numbers@Base 1.12.6 mm_gdbus_sim_dup_imsi@Base 0.7.991 mm_gdbus_sim_dup_operator_identifier@Base 0.7.991 mm_gdbus_sim_dup_operator_name@Base 0.7.991 mm_gdbus_sim_dup_sim_identifier@Base 0.7.991 + mm_gdbus_sim_get_active@Base 1.16.6 + mm_gdbus_sim_get_eid@Base 1.16.6 mm_gdbus_sim_get_emergency_numbers@Base 1.12.6 mm_gdbus_sim_get_imsi@Base 0.7.991 mm_gdbus_sim_get_operator_identifier@Base 0.7.991 @@ -1032,6 +1047,8 @@ mm_gdbus_sim_proxy_new_for_bus_finish@Base 0.7.991 mm_gdbus_sim_proxy_new_for_bus_sync@Base 0.7.991 mm_gdbus_sim_proxy_new_sync@Base 0.7.991 + mm_gdbus_sim_set_active@Base 1.16.6 + mm_gdbus_sim_set_eid@Base 1.16.6 mm_gdbus_sim_set_emergency_numbers@Base 1.12.6 mm_gdbus_sim_set_imsi@Base 0.7.991 mm_gdbus_sim_set_operator_identifier@Base 0.7.991 @@ -1318,6 +1335,7 @@ mm_modem_dup_primary_port@Base 0.7.991 mm_modem_dup_revision@Base 0.7.991 mm_modem_dup_sim_path@Base 0.7.991 + mm_modem_dup_sim_slot_paths@Base 1.16.6 mm_modem_enable@Base 0.7.991 mm_modem_enable_finish@Base 0.7.991 mm_modem_enable_sync@Base 0.7.991 @@ -1360,11 +1378,13 @@ mm_modem_get_ports@Base 1.0.0 mm_modem_get_power_state@Base 0.7.991 mm_modem_get_primary_port@Base 0.7.991 + mm_modem_get_primary_sim_slot@Base 1.16.6 mm_modem_get_revision@Base 0.7.991 mm_modem_get_signal_quality@Base 0.7.991 mm_modem_get_sim@Base 0.7.991 mm_modem_get_sim_finish@Base 0.7.991 mm_modem_get_sim_path@Base 0.7.991 + mm_modem_get_sim_slot_paths@Base 1.16.6 mm_modem_get_sim_sync@Base 0.7.991 mm_modem_get_state@Base 0.7.991 mm_modem_get_state_failed_reason@Base 0.7.991 @@ -1378,6 +1398,9 @@ mm_modem_list_bearers@Base 0.7.991 mm_modem_list_bearers_finish@Base 0.7.991 mm_modem_list_bearers_sync@Base 0.7.991 + mm_modem_list_sim_slots@Base 1.16.6 + mm_modem_list_sim_slots_finish@Base 1.16.6 + mm_modem_list_sim_slots_sync@Base 1.16.6 mm_modem_location_assistance_data_type_build_string_from_mask@Base 1.10.0 mm_modem_location_assistance_data_type_get_type@Base 1.10.0 mm_modem_location_dup_assistance_data_servers@Base 1.10.0 @@ -1485,11 +1508,15 @@ mm_modem_set_power_state@Base 0.7.991 mm_modem_set_power_state_finish@Base 0.7.991 mm_modem_set_power_state_sync@Base 0.7.991 + mm_modem_set_primary_sim_slot@Base 1.16.6 + mm_modem_set_primary_sim_slot_finish@Base 1.16.6 + mm_modem_set_primary_sim_slot_sync@Base 1.16.6 mm_modem_signal_dup_path@Base 1.2.0 mm_modem_signal_get_cdma@Base 1.2.0 mm_modem_signal_get_evdo@Base 1.2.0 mm_modem_signal_get_gsm@Base 1.2.0 mm_modem_signal_get_lte@Base 1.2.0 + mm_modem_signal_get_nr5g@Base 1.16.6 mm_modem_signal_get_path@Base 1.2.0 mm_modem_signal_get_rate@Base 1.2.0 mm_modem_signal_get_type@Base 1.2.0 @@ -1498,6 +1525,7 @@ mm_modem_signal_peek_evdo@Base 1.2.0 mm_modem_signal_peek_gsm@Base 1.2.0 mm_modem_signal_peek_lte@Base 1.2.0 + mm_modem_signal_peek_nr5g@Base 1.16.6 mm_modem_signal_peek_umts@Base 1.2.0 mm_modem_signal_setup@Base 1.2.0 mm_modem_signal_setup_finish@Base 1.2.0 @@ -1644,6 +1672,7 @@ mm_sim_disable_pin@Base 0.7.991 mm_sim_disable_pin_finish@Base 0.7.991 mm_sim_disable_pin_sync@Base 0.7.991 + mm_sim_dup_eid@Base 1.16.6 mm_sim_dup_emergency_numbers@Base 1.12.6 mm_sim_dup_identifier@Base 0.7.991 mm_sim_dup_imsi@Base 0.7.991 @@ -1653,6 +1682,8 @@ mm_sim_enable_pin@Base 0.7.991 mm_sim_enable_pin_finish@Base 0.7.991 mm_sim_enable_pin_sync@Base 0.7.991 + mm_sim_get_active@Base 1.16.6 + mm_sim_get_eid@Base 1.16.6 mm_sim_get_emergency_numbers@Base 1.12.6 mm_sim_get_identifier@Base 0.7.991 mm_sim_get_imsi@Base 0.7.991 @@ -1676,6 +1707,7 @@ mm_simple_connect_properties_get_operator_id@Base 0.7.991 mm_simple_connect_properties_get_password@Base 0.7.991 mm_simple_connect_properties_get_pin@Base 0.7.991 + mm_simple_connect_properties_get_rm_protocol@Base 1.16.6 mm_simple_connect_properties_get_type@Base 0.7.991 mm_simple_connect_properties_get_user@Base 0.7.991 mm_simple_connect_properties_new@Base 0.7.991 @@ -1689,6 +1721,7 @@ mm_simple_connect_properties_set_operator_id@Base 0.7.991 mm_simple_connect_properties_set_password@Base 0.7.991 mm_simple_connect_properties_set_pin@Base 0.7.991 + mm_simple_connect_properties_set_rm_protocol@Base 1.16.6 mm_simple_connect_properties_set_user@Base 0.7.991 mm_simple_status_get_3gpp_operator_code@Base 0.7.991 mm_simple_status_get_3gpp_operator_name@Base 0.7.991 diff -Nru modemmanager-1.14.10/docs/Makefile.in modemmanager-1.16.6/docs/Makefile.in --- modemmanager-1.14.10/docs/Makefile.in 2021-01-16 21:19:55.000000000 +0800 +++ modemmanager-1.16.6/docs/Makefile.in 2021-06-06 21:43:42.000000000 +0800 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 Free Software Foundation, Inc. @@ -254,6 +254,8 @@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBELOGIND_CFLAGS = @LIBELOGIND_CFLAGS@ +LIBELOGIND_LIBS = @LIBELOGIND_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBMM_GLIB_CFLAGS = @LIBMM_GLIB_CFLAGS@ @@ -378,6 +380,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff -Nru modemmanager-1.14.10/docs/man/Makefile.in modemmanager-1.16.6/docs/man/Makefile.in --- modemmanager-1.14.10/docs/man/Makefile.in 2021-01-16 21:19:55.000000000 +0800 +++ modemmanager-1.16.6/docs/man/Makefile.in 2021-06-06 21:43:42.000000000 +0800 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 Free Software Foundation, Inc. @@ -226,6 +226,8 @@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBELOGIND_CFLAGS = @LIBELOGIND_CFLAGS@ +LIBELOGIND_LIBS = @LIBELOGIND_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBMM_GLIB_CFLAGS = @LIBMM_GLIB_CFLAGS@ @@ -350,6 +352,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff -Nru modemmanager-1.14.10/docs/man/mmcli.1 modemmanager-1.16.6/docs/man/mmcli.1 --- modemmanager-1.14.10/docs/man/mmcli.1 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/docs/man/mmcli.1 2021-06-06 21:40:59.000000000 +0800 @@ -281,6 +281,12 @@ An example would be: 'egsm|dcs|pcs|g850' to select all the GSM frequency bands. .TP +.B \-\-set\-primary\-sim\-slot=[SLOT] +Request to switch the primary SIM slot. + +The given \fBSLOT\fR must be a valid slot number in the [1,N] range, where +N is the amount of SIM slots available in the system. +.TP .B \-\-inhibit Inhibit the specific modem from being used by ModemManager. This method is completely equivalent to \fB\-\-inhibit\-device\fR, with the only diff -Nru modemmanager-1.14.10/docs/reference/Makefile.in modemmanager-1.16.6/docs/reference/Makefile.in --- modemmanager-1.14.10/docs/reference/Makefile.in 2021-01-16 21:19:55.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/Makefile.in 2021-06-06 21:43:42.000000000 +0800 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 Free Software Foundation, Inc. @@ -254,6 +254,8 @@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBELOGIND_CFLAGS = @LIBELOGIND_CFLAGS@ +LIBELOGIND_LIBS = @LIBELOGIND_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBMM_GLIB_CFLAGS = @LIBMM_GLIB_CFLAGS@ @@ -378,6 +380,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff -Nru modemmanager-1.14.10/docs/reference/api/Makefile.in modemmanager-1.16.6/docs/reference/api/Makefile.in --- modemmanager-1.14.10/docs/reference/api/Makefile.in 2021-01-16 21:19:55.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/Makefile.in 2021-06-06 21:43:42.000000000 +0800 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 Free Software Foundation, Inc. @@ -15,6 +15,24 @@ @SET_MAKE@ # -*- mode: makefile -*- +# +# gtk-doc.make - make rules for gtk-doc +# Copyright (C) 2003 James Henstridge +# 2004-2007 Damon Chaplin +# 2007-2017 Stefan Sauer +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . #################################### # Everything below here is generic # @@ -201,6 +219,8 @@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBELOGIND_CFLAGS = @LIBELOGIND_CFLAGS@ +LIBELOGIND_LIBS = @LIBELOGIND_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBMM_GLIB_CFLAGS = @LIBMM_GLIB_CFLAGS@ @@ -325,6 +345,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -497,34 +518,34 @@ @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_PDF_TRUE@PDF_BUILD_STAMP = pdf-build.stamp #### setup #### -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SETUP = $(GTK_DOC_V_SETUP_$(V)) -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SETUP_ = $(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SETUP = $(GTK_DOC_V_SETUP_@AM_V@) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SETUP_ = $(GTK_DOC_V_SETUP_@AM_DEFAULT_V@) @ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SETUP_0 = @echo " DOC Preparing build"; #### scan #### -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SCAN = $(GTK_DOC_V_SCAN_$(V)) -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SCAN_ = $(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SCAN = $(GTK_DOC_V_SCAN_@AM_V@) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SCAN_ = $(GTK_DOC_V_SCAN_@AM_DEFAULT_V@) @ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SCAN_0 = @echo " DOC Scanning header files"; -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_INTROSPECT = $(GTK_DOC_V_INTROSPECT_$(V)) -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_INTROSPECT_ = $(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_INTROSPECT = $(GTK_DOC_V_INTROSPECT_@AM_V@) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_INTROSPECT_ = $(GTK_DOC_V_INTROSPECT_@AM_DEFAULT_V@) @ENABLE_GTK_DOC_TRUE@GTK_DOC_V_INTROSPECT_0 = @echo " DOC Introspecting gobjects"; #### xml #### -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XML = $(GTK_DOC_V_XML_$(V)) -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XML_ = $(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XML = $(GTK_DOC_V_XML_@AM_V@) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XML_ = $(GTK_DOC_V_XML_@AM_DEFAULT_V@) @ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XML_0 = @echo " DOC Building XML"; #### html #### -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_HTML = $(GTK_DOC_V_HTML_$(V)) -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_HTML_ = $(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_HTML = $(GTK_DOC_V_HTML_@AM_V@) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_HTML_ = $(GTK_DOC_V_HTML_@AM_DEFAULT_V@) @ENABLE_GTK_DOC_TRUE@GTK_DOC_V_HTML_0 = @echo " DOC Building HTML"; -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XREF = $(GTK_DOC_V_XREF_$(V)) -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XREF_ = $(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XREF = $(GTK_DOC_V_XREF_@AM_V@) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XREF_ = $(GTK_DOC_V_XREF_@AM_DEFAULT_V@) @ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XREF_0 = @echo " DOC Fixing cross-references"; #### pdf #### -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_PDF = $(GTK_DOC_V_PDF_$(V)) -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_PDF_ = $(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_PDF = $(GTK_DOC_V_PDF_@AM_V@) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_PDF_ = $(GTK_DOC_V_PDF_@AM_DEFAULT_V@) @ENABLE_GTK_DOC_TRUE@GTK_DOC_V_PDF_0 = @echo " DOC Building PDF"; all: all-am @@ -648,10 +669,10 @@ @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." @ENABLE_GTK_DOC_FALSE@maintainer-clean-local: -@ENABLE_GTK_DOC_FALSE@clean-local: @ENABLE_GTK_DOC_FALSE@uninstall-local: -@ENABLE_GTK_DOC_FALSE@install-data-local: +@ENABLE_GTK_DOC_FALSE@clean-local: @ENABLE_GTK_DOC_FALSE@distclean-local: +@ENABLE_GTK_DOC_FALSE@install-data-local: clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am @@ -754,38 +775,38 @@ @ENABLE_GTK_DOC_TRUE@setup-build.stamp: @ENABLE_GTK_DOC_TRUE@ -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ -@ENABLE_GTK_DOC_TRUE@ files=`echo $(SETUP_FILES) $(DOC_MODULE).types`; \ -@ENABLE_GTK_DOC_TRUE@ if test "x$$files" != "x" ; then \ -@ENABLE_GTK_DOC_TRUE@ for file in $$files ; do \ -@ENABLE_GTK_DOC_TRUE@ destdir=`dirname $(abs_builddir)/$$file`; \ -@ENABLE_GTK_DOC_TRUE@ test -d "$$destdir" || mkdir -p "$$destdir"; \ -@ENABLE_GTK_DOC_TRUE@ test -f $(abs_srcdir)/$$file && \ -@ENABLE_GTK_DOC_TRUE@ cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ -@ENABLE_GTK_DOC_TRUE@ done; \ -@ENABLE_GTK_DOC_TRUE@ fi; \ +@ENABLE_GTK_DOC_TRUE@ files=`echo $(SETUP_FILES) $(DOC_MODULE).types`; \ +@ENABLE_GTK_DOC_TRUE@ if test "x$$files" != "x" ; then \ +@ENABLE_GTK_DOC_TRUE@ for file in $$files ; do \ +@ENABLE_GTK_DOC_TRUE@ destdir=`dirname $(abs_builddir)/$$file`; \ +@ENABLE_GTK_DOC_TRUE@ test -d "$$destdir" || mkdir -p "$$destdir"; \ +@ENABLE_GTK_DOC_TRUE@ test -f $(abs_srcdir)/$$file && \ +@ENABLE_GTK_DOC_TRUE@ cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ +@ENABLE_GTK_DOC_TRUE@ done; \ +@ENABLE_GTK_DOC_TRUE@ fi; \ @ENABLE_GTK_DOC_TRUE@ fi @ENABLE_GTK_DOC_TRUE@ $(AM_V_at)touch setup-build.stamp @ENABLE_GTK_DOC_TRUE@scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB) @ENABLE_GTK_DOC_TRUE@ $(GTK_DOC_V_SCAN)_source_dir='' ; \ @ENABLE_GTK_DOC_TRUE@ for i in $(DOC_SOURCE_DIR) ; do \ -@ENABLE_GTK_DOC_TRUE@ _source_dir="$${_source_dir} --source-dir=$$i" ; \ +@ENABLE_GTK_DOC_TRUE@ _source_dir="$${_source_dir} --source-dir=$$i" ; \ @ENABLE_GTK_DOC_TRUE@ done ; \ @ENABLE_GTK_DOC_TRUE@ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) @ENABLE_GTK_DOC_TRUE@ $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ -@ENABLE_GTK_DOC_TRUE@ scanobj_options=""; \ -@ENABLE_GTK_DOC_TRUE@ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ -@ENABLE_GTK_DOC_TRUE@ if test "$$?" = "0"; then \ -@ENABLE_GTK_DOC_TRUE@ if test "x$(V)" = "x1"; then \ -@ENABLE_GTK_DOC_TRUE@ scanobj_options="--verbose"; \ -@ENABLE_GTK_DOC_TRUE@ fi; \ +@ENABLE_GTK_DOC_TRUE@ scanobj_options=""; \ +@ENABLE_GTK_DOC_TRUE@ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ +@ENABLE_GTK_DOC_TRUE@ if test "$$?" = "0"; then \ +@ENABLE_GTK_DOC_TRUE@ if test "x$(V)" = "x1"; then \ +@ENABLE_GTK_DOC_TRUE@ scanobj_options="--verbose"; \ @ENABLE_GTK_DOC_TRUE@ fi; \ -@ENABLE_GTK_DOC_TRUE@ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ -@ENABLE_GTK_DOC_TRUE@ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ +@ENABLE_GTK_DOC_TRUE@ fi; \ +@ENABLE_GTK_DOC_TRUE@ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ +@ENABLE_GTK_DOC_TRUE@ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ @ENABLE_GTK_DOC_TRUE@ else \ -@ENABLE_GTK_DOC_TRUE@ for i in $(SCANOBJ_FILES) ; do \ -@ENABLE_GTK_DOC_TRUE@ test -f $$i || touch $$i ; \ -@ENABLE_GTK_DOC_TRUE@ done \ +@ENABLE_GTK_DOC_TRUE@ for i in $(SCANOBJ_FILES) ; do \ +@ENABLE_GTK_DOC_TRUE@ test -f $$i || touch $$i ; \ +@ENABLE_GTK_DOC_TRUE@ done \ @ENABLE_GTK_DOC_TRUE@ fi @ENABLE_GTK_DOC_TRUE@ $(AM_V_at)touch scan-build.stamp @@ -795,7 +816,7 @@ @ENABLE_GTK_DOC_TRUE@sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(HFILE_GLOB) $(CFILE_GLOB) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) xml/gtkdocentities.ent @ENABLE_GTK_DOC_TRUE@ $(GTK_DOC_V_XML)_source_dir='' ; \ @ENABLE_GTK_DOC_TRUE@ for i in $(DOC_SOURCE_DIR) ; do \ -@ENABLE_GTK_DOC_TRUE@ _source_dir="$${_source_dir} --source-dir=$$i" ; \ +@ENABLE_GTK_DOC_TRUE@ _source_dir="$${_source_dir} --source-dir=$$i" ; \ @ENABLE_GTK_DOC_TRUE@ done ; \ @ENABLE_GTK_DOC_TRUE@ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) @ENABLE_GTK_DOC_TRUE@ $(AM_V_at)touch sgml-build.stamp @@ -803,6 +824,9 @@ @ENABLE_GTK_DOC_TRUE@sgml.stamp: sgml-build.stamp @ENABLE_GTK_DOC_TRUE@ @true +@ENABLE_GTK_DOC_TRUE@$(DOC_MAIN_SGML_FILE): sgml-build.stamp +@ENABLE_GTK_DOC_TRUE@ @true + @ENABLE_GTK_DOC_TRUE@xml/gtkdocentities.ent: Makefile @ENABLE_GTK_DOC_TRUE@ $(GTK_DOC_V_XML)$(MKDIR_P) $(@D) && ( \ @ENABLE_GTK_DOC_TRUE@ echo ""; \ @@ -830,12 +854,9 @@ @ENABLE_GTK_DOC_TRUE@ cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) @ENABLE_GTK_DOC_TRUE@ -@test "x$(HTML_IMAGES)" = "x" || \ @ENABLE_GTK_DOC_TRUE@ for file in $(HTML_IMAGES) ; do \ -@ENABLE_GTK_DOC_TRUE@ if test -f $(abs_srcdir)/$$file ; then \ -@ENABLE_GTK_DOC_TRUE@ cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ -@ENABLE_GTK_DOC_TRUE@ fi; \ -@ENABLE_GTK_DOC_TRUE@ if test -f $(abs_builddir)/$$file ; then \ -@ENABLE_GTK_DOC_TRUE@ cp $(abs_builddir)/$$file $(abs_builddir)/html; \ -@ENABLE_GTK_DOC_TRUE@ fi; \ +@ENABLE_GTK_DOC_TRUE@ test -f $(abs_srcdir)/$$file && cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ +@ENABLE_GTK_DOC_TRUE@ test -f $(abs_builddir)/$$file && cp $(abs_builddir)/$$file $(abs_builddir)/html; \ +@ENABLE_GTK_DOC_TRUE@ test -f $$file && cp $$file $(abs_builddir)/html; \ @ENABLE_GTK_DOC_TRUE@ done; @ENABLE_GTK_DOC_TRUE@ $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) @ENABLE_GTK_DOC_TRUE@ $(AM_V_at)touch html-build.stamp @@ -902,7 +923,6 @@ @ENABLE_GTK_DOC_TRUE@ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ @ENABLE_GTK_DOC_TRUE@ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ @ENABLE_GTK_DOC_TRUE@ fi; \ -@ENABLE_GTK_DOC_TRUE@ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ @ENABLE_GTK_DOC_TRUE@ fi @ENABLE_GTK_DOC_TRUE@uninstall-local: diff -Nru modemmanager-1.14.10/docs/reference/api/ModemManager-docs.xml modemmanager-1.16.6/docs/reference/api/ModemManager-docs.xml --- modemmanager-1.14.10/docs/reference/api/ModemManager-docs.xml 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/ModemManager-docs.xml 2021-06-06 21:40:59.000000000 +0800 @@ -15,6 +15,8 @@ For ModemManager version &version; + The latest version of this documentation can be found on-line at + https://www.freedesktop.org/software/ModemManager/doc/latest/ModemManager/. @@ -52,6 +54,7 @@ 2018 2019 2020 + 2021 The ModemManager Authors @@ -139,4 +142,8 @@ Index of new symbols in 1.12 + + Index of new symbols in 1.16 + + diff -Nru modemmanager-1.14.10/docs/reference/api/ModemManager-overview.xml modemmanager-1.16.6/docs/reference/api/ModemManager-overview.xml --- modemmanager-1.14.10/docs/reference/api/ModemManager-overview.xml 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/ModemManager-overview.xml 2021-06-06 21:40:59.000000000 +0800 @@ -159,10 +159,10 @@ - MM_FILTER_RULE_CDC_WDM + MM_FILTER_RULE_USBMISC - This filter will automatically flag as allowed all cdc-wdm ports exposed by - devices. Unless there is a will to explicitly forbid the cdc-wdm ports exposed + This filter will automatically flag as allowed all cdc-wdm ports exposed in the + usbmisc subsystem. Unless there is a will to explicitly forbid the cdc-wdm ports exposed by qmi_wwan, cdc_mbim or huawei-cdc-ncm kernel drivers, this filter should always be enabled. @@ -254,7 +254,7 @@ MM_FILTER_RULE_EXPLICIT_BLACKLIST MM_FILTER_RULE_VIRTUAL MM_FILTER_RULE_NET - MM_FILTER_RULE_CDC_WDM + MM_FILTER_RULE_USBMISC MM_FILTER_RULE_TTY MM_FILTER_RULE_TTY_BLACKLIST MM_FILTER_RULE_TTY_MANUAL_SCAN_ONLY @@ -280,7 +280,7 @@ MM_FILTER_RULE_EXPLICIT_BLACKLIST MM_FILTER_RULE_VIRTUAL MM_FILTER_RULE_NET - MM_FILTER_RULE_CDC_WDM + MM_FILTER_RULE_USBMISC MM_FILTER_RULE_TTY MM_FILTER_RULE_TTY_PLATFORM_DRIVER MM_FILTER_RULE_TTY_DRIVER @@ -307,7 +307,7 @@ MM_FILTER_RULE_EXPLICIT_BLACKLIST MM_FILTER_RULE_VIRTUAL MM_FILTER_RULE_NET - MM_FILTER_RULE_CDC_WDM + MM_FILTER_RULE_USBMISC MM_FILTER_RULE_TTY MM_FILTER_RULE_TTY_BLACKLIST MM_FILTER_RULE_TTY_MANUAL_SCAN_ONLY @@ -339,7 +339,7 @@ net and cdc-wdm ports forbidden completely: # MM_FILTER_RULE_NET=0 \ - MM_FILTER_RULE_CDC_WDM=0 \ + MM_FILTER_RULE_USBMISC=0 \ /usr/sbin/ModemManager --filter-policy=DEFAULT @@ -348,7 +348,7 @@ net ports (e.g. 'lo') are also being allowed. # MM_FILTER_RULE_NET=1 \ - MM_FILTER_RULE_CDC_WDM=1 \ + MM_FILTER_RULE_USBMISC=1 \ /usr/sbin/ModemManager --filter-policy=WHITELIST-ONLY diff -Nru modemmanager-1.14.10/docs/reference/api/ModemManager-sections.txt modemmanager-1.16.6/docs/reference/api/ModemManager-sections.txt --- modemmanager-1.14.10/docs/reference/api/ModemManager-sections.txt 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/ModemManager-sections.txt 2021-06-06 21:45:11.000000000 +0800 @@ -164,6 +164,8 @@ ID_MM_PORT_TYPE_GPS ID_MM_PORT_TYPE_QCDM ID_MM_PORT_TYPE_AUDIO +ID_MM_PORT_TYPE_QMI +ID_MM_PORT_TYPE_MBIM ID_MM_TTY_BAUDRATE ID_MM_TTY_FLOW_CONTROL diff -Nru modemmanager-1.14.10/docs/reference/api/html/ModemManager-API-break-replacements.html modemmanager-1.16.6/docs/reference/api/html/ModemManager-API-break-replacements.html --- modemmanager-1.14.10/docs/reference/api/html/ModemManager-API-break-replacements.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ModemManager-API-break-replacements.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -1127,6 +1127,6 @@ +
Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ModemManager-Common-udev-tags.html modemmanager-1.16.6/docs/reference/api/html/ModemManager-Common-udev-tags.html --- modemmanager-1.14.10/docs/reference/api/html/ModemManager-Common-udev-tags.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ModemManager-Common-udev-tags.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -93,6 +93,14 @@ #define +ID_MM_PORT_TYPE_QMI + + +#define +ID_MM_PORT_TYPE_MBIM + + +#define ID_MM_TTY_BAUDRATE @@ -268,6 +276,30 @@
+

ID_MM_PORT_TYPE_QMI

+
#define ID_MM_PORT_TYPE_QMI "ID_MM_PORT_TYPE_QMI"
+
+

This is a port-specific tag applied to generic ports that we know in advance +are QMI ports.

+

This tag will also prevent other types of probing (e.g. AT, MBIM) on the +port.

+

This tag is not required for QMI ports exposed by the qmi_wwan driver.

+

Since: 1.16

+
+
+
+

ID_MM_PORT_TYPE_MBIM

+
#define ID_MM_PORT_TYPE_MBIM "ID_MM_PORT_TYPE_MBIM"
+
+

This is a port-specific tag applied to generic ports that we know in advance +are MBIM ports.

+

This tag will also prevent other types of probing (e.g. AT, QMI) on the +port.

+

This tag is not required for MBIM ports exposed by the cdc_mbim driver.

+

Since: 1.16

+
+
+

ID_MM_TTY_BAUDRATE

#define ID_MM_TTY_BAUDRATE "ID_MM_TTY_BAUDRATE"
 
@@ -297,6 +329,6 @@
+
Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ModemManager-Errors.html modemmanager-1.16.6/docs/reference/api/html/ModemManager-Errors.html --- modemmanager-1.14.10/docs/reference/api/html/ModemManager-Errors.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ModemManager-Errors.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -1195,6 +1195,6 @@ +
Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ModemManager-Flags-and-Enumerations.html modemmanager-1.16.6/docs/reference/api/html/ModemManager-Flags-and-Enumerations.html --- modemmanager-1.14.10/docs/reference/api/html/ModemManager-Flags-and-Enumerations.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ModemManager-Flags-and-Enumerations.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -3000,6 +3000,13 @@ ย  + +

MM_MODEM_PORT_TYPE_IGNORED

+ +

Ignored port. Since 1.16.

+ +ย  + @@ -4543,6 +4550,6 @@ +
Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ModemManager-Version-checks.html modemmanager-1.16.6/docs/reference/api/html/ModemManager-Version-checks.html --- modemmanager-1.14.10/docs/reference/api/html/ModemManager-Version-checks.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ModemManager-Version-checks.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -127,7 +127,7 @@

MM_MINOR_VERSION

-
#define MM_MINOR_VERSION (14)
+
#define MM_MINOR_VERSION (16)
 

Evaluates to the minor version number of ModemManager which this source is compiled against.

@@ -136,7 +136,7 @@

MM_MICRO_VERSION

-
#define MM_MICRO_VERSION (10)
+
#define MM_MICRO_VERSION (6)
 

Evaluates to the micro version number of ModemManager which this source compiled against.

@@ -145,6 +145,6 @@
+
Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ModemManager.devhelp2 modemmanager-1.16.6/docs/reference/api/html/ModemManager.devhelp2 --- modemmanager-1.14.10/docs/reference/api/html/ModemManager.devhelp2 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ModemManager.devhelp2 2021-06-06 21:45:11.000000000 +0800 @@ -1,5 +1,5 @@ - + @@ -91,6 +91,7 @@ + @@ -158,6 +159,8 @@ + + @@ -175,9 +178,12 @@ + + + @@ -289,6 +295,7 @@ + @@ -313,8 +320,10 @@ + + @@ -736,6 +745,7 @@ + diff -Nru modemmanager-1.14.10/docs/reference/api/html/api-index-1-0.html modemmanager-1.16.6/docs/reference/api/html/api-index-1-0.html --- modemmanager-1.14.10/docs/reference/api/html/api-index-1-0.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/api-index-1-0.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -449,6 +449,6 @@
+
Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/api-index-1-10.html modemmanager-1.16.6/docs/reference/api/html/api-index-1-10.html --- modemmanager-1.14.10/docs/reference/api/html/api-index-1-10.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/api-index-1-10.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -91,6 +91,6 @@
+
Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/api-index-1-12.html modemmanager-1.16.6/docs/reference/api/html/api-index-1-12.html --- modemmanager-1.14.10/docs/reference/api/html/api-index-1-12.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/api-index-1-12.html 2021-06-06 21:45:11.000000000 +0800 @@ -7,7 +7,8 @@ - + + @@ -16,7 +17,7 @@ Home Prev - +Next

@@ -36,6 +37,6 @@

+
Generated by GTK-Doc V1.33.1
\ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/api-index-1-16.html modemmanager-1.16.6/docs/reference/api/html/api-index-1-16.html --- modemmanager-1.14.10/docs/reference/api/html/api-index-1-16.html 1970-01-01 08:00:00.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/api-index-1-16.html 2021-06-06 21:45:11.000000000 +0800 @@ -0,0 +1,37 @@ + + + + +Index of new symbols in 1.16: ModemManager Reference Manual + + + + + + + + + + + + + + + +
+

+Index of new symbols in 1.16

+

I

+
+ID_MM_PORT_TYPE_MBIM, macro in Common udev tags +
+
+
+ID_MM_PORT_TYPE_QMI, macro in Common udev tags +
+
+
+ + + \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/api-index-1-2.html modemmanager-1.16.6/docs/reference/api/html/api-index-1-2.html --- modemmanager-1.14.10/docs/reference/api/html/api-index-1-2.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/api-index-1-2.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -59,6 +59,6 @@
+
Generated by GTK-Doc V1.33.1
\ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/api-index-1-4.html modemmanager-1.16.6/docs/reference/api/html/api-index-1-4.html --- modemmanager-1.14.10/docs/reference/api/html/api-index-1-4.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/api-index-1-4.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -29,6 +29,6 @@
+
Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/api-index-1-6.html modemmanager-1.16.6/docs/reference/api/html/api-index-1-6.html --- modemmanager-1.14.10/docs/reference/api/html/api-index-1-6.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/api-index-1-6.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -44,6 +44,6 @@
+
Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/api-index-1-8.html modemmanager-1.16.6/docs/reference/api/html/api-index-1-8.html --- modemmanager-1.14.10/docs/reference/api/html/api-index-1-8.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/api-index-1-8.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -29,6 +29,6 @@
+
Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/api-index-deprecated.html modemmanager-1.16.6/docs/reference/api/html/api-index-deprecated.html --- modemmanager-1.14.10/docs/reference/api/html/api-index-deprecated.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/api-index-deprecated.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -293,6 +293,6 @@
+
Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/api-index-full.html modemmanager-1.16.6/docs/reference/api/html/api-index-full.html --- modemmanager-1.14.10/docs/reference/api/html/api-index-full.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/api-index-full.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -127,10 +127,18 @@
+ID_MM_PORT_TYPE_MBIM, macro in Common udev tags +
+
+
ID_MM_PORT_TYPE_QCDM, macro in Common udev tags
+ID_MM_PORT_TYPE_QMI, macro in Common udev tags +
+
+
ID_MM_TTY_BAUDRATE, macro in Common udev tags
@@ -579,6 +587,6 @@
+
Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ch02s02.html modemmanager-1.16.6/docs/reference/api/html/ch02s02.html --- modemmanager-1.14.10/docs/reference/api/html/ch02s02.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ch02s02.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -36,6 +36,6 @@

+
Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ch03s02.html modemmanager-1.16.6/docs/reference/api/html/ch03s02.html --- modemmanager-1.14.10/docs/reference/api/html/ch03s02.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ch03s02.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -43,7 +43,7 @@
  • MM_FILTER_RULE_EXPLICIT_BLACKLIST
  • MM_FILTER_RULE_VIRTUAL
  • MM_FILTER_RULE_NET
  • -
  • MM_FILTER_RULE_CDC_WDM
  • +
  • MM_FILTER_RULE_USBMISC
  • MM_FILTER_RULE_TTY
  • MM_FILTER_RULE_TTY_BLACKLIST
  • MM_FILTER_RULE_TTY_MANUAL_SCAN_ONLY
  • @@ -71,7 +71,7 @@
  • MM_FILTER_RULE_EXPLICIT_BLACKLIST
  • MM_FILTER_RULE_VIRTUAL
  • MM_FILTER_RULE_NET
  • -
  • MM_FILTER_RULE_CDC_WDM
  • +
  • MM_FILTER_RULE_USBMISC
  • MM_FILTER_RULE_TTY
  • MM_FILTER_RULE_TTY_PLATFORM_DRIVER
  • MM_FILTER_RULE_TTY_DRIVER
  • @@ -100,7 +100,7 @@
  • MM_FILTER_RULE_EXPLICIT_BLACKLIST
  • MM_FILTER_RULE_VIRTUAL
  • MM_FILTER_RULE_NET
  • -
  • MM_FILTER_RULE_CDC_WDM
  • +
  • MM_FILTER_RULE_USBMISC
  • MM_FILTER_RULE_TTY
  • MM_FILTER_RULE_TTY_BLACKLIST
  • MM_FILTER_RULE_TTY_MANUAL_SCAN_ONLY
  • @@ -133,7 +133,7 @@

     # MM_FILTER_RULE_NET=0 \
    -  MM_FILTER_RULE_CDC_WDM=0 \
    +  MM_FILTER_RULE_USBMISC=0 \
       /usr/sbin/ModemManager --filter-policy=DEFAULT

    @@ -144,7 +144,7 @@

     # MM_FILTER_RULE_NET=1 \
    -  MM_FILTER_RULE_CDC_WDM=1 \
    +  MM_FILTER_RULE_USBMISC=1 \
       /usr/sbin/ModemManager --filter-policy=WHITELIST-ONLY

    @@ -154,6 +154,6 @@

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ch04s02.html modemmanager-1.16.6/docs/reference/api/html/ch04s02.html --- modemmanager-1.14.10/docs/reference/api/html/ch04s02.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ch04s02.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -109,6 +109,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ch04s03.html modemmanager-1.16.6/docs/reference/api/html/ch04s03.html --- modemmanager-1.14.10/docs/reference/api/html/ch04s03.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ch04s03.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -95,6 +95,6 @@

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ch04s04.html modemmanager-1.16.6/docs/reference/api/html/ch04s04.html --- modemmanager-1.14.10/docs/reference/api/html/ch04s04.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ch04s04.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -63,7 +63,7 @@ }; static const gchar *vendor_strings[] = { "vendor", NULL }; - return MM_PLUGIN ( + return MM_PLUGIN ( g_object_new (MM_TYPE_PLUGIN_IRIDIUM, MM_PLUGIN_NAME, "Example", @@ -119,7 +119,7 @@ static const gchar *vendor_strings[] = { "vendor", NULL }; static const mm_str_pair product_strings[] = { "another-vendor", "product xyz" }; - return MM_PLUGIN ( + return MM_PLUGIN ( g_object_new (MM_TYPE_PLUGIN_IRIDIUM, MM_PLUGIN_NAME, "Example", @@ -190,7 +190,7 @@ 42 43
    static gboolean
    -parse_custom_at (const gchar *response,
    +parse_custom_at (const gchar *response,
                      const GError *error,
                      GValue *result,
                      GError **result_error)
    @@ -217,7 +217,7 @@
         static const gchar *subsystems[] = { "tty", NULL };
         static const guint16 vendor_ids[] = { 0xabcd, 0 };
     
    -    return MM_PLUGIN (
    +    return MM_PLUGIN (
             g_object_new (MM_TYPE_PLUGIN_EXAMPLE,
                           MM_PLUGIN_NAME, "Example",
     
    @@ -241,6 +241,6 @@
     
    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ch06s02.html modemmanager-1.16.6/docs/reference/api/html/ch06s02.html --- modemmanager-1.14.10/docs/reference/api/html/ch06s02.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ch06s02.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -77,6 +77,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ch06s03.html modemmanager-1.16.6/docs/reference/api/html/ch06s03.html --- modemmanager-1.14.10/docs/reference/api/html/ch06s03.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ch06s03.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -41,6 +41,6 @@

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ch06s04.html modemmanager-1.16.6/docs/reference/api/html/ch06s04.html --- modemmanager-1.14.10/docs/reference/api/html/ch06s04.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ch06s04.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -81,6 +81,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ch16.html modemmanager-1.16.6/docs/reference/api/html/ch16.html --- modemmanager-1.14.10/docs/reference/api/html/ch16.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ch16.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -59,6 +59,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ch16s02.html modemmanager-1.16.6/docs/reference/api/html/ch16s02.html --- modemmanager-1.14.10/docs/reference/api/html/ch16s02.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ch16s02.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -46,6 +46,6 @@

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ch16s03.html modemmanager-1.16.6/docs/reference/api/html/ch16s03.html --- modemmanager-1.14.10/docs/reference/api/html/ch16s03.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ch16s03.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -64,6 +64,6 @@

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ch16s04.html modemmanager-1.16.6/docs/reference/api/html/ch16s04.html --- modemmanager-1.14.10/docs/reference/api/html/ch16s04.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ch16s04.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -55,6 +55,6 @@

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Bearer.html modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Bearer.html --- modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Bearer.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Bearer.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -169,7 +169,7 @@

    If the bearer specifies configuration via PPP or DHCP, only the - "method" item will be present. + "method" item is guaranteed to be present.

    Additional items which are only applicable when using the MM_BEARER_IP_METHOD_STATIC @@ -462,6 +462,6 @@

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Call.html modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Call.html --- modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Call.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Call.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -341,6 +341,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Firmware.html modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Firmware.html --- modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Firmware.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Firmware.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -285,6 +285,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Location.html modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Location.html --- modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Location.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Location.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -545,6 +545,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Messaging.html modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Messaging.html --- modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Messaging.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Messaging.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -237,6 +237,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.html modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.html --- modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -173,6 +173,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Modem3gpp.html modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Modem3gpp.html --- modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Modem3gpp.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Modem3gpp.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -384,6 +384,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.ModemCdma.html modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.ModemCdma.html --- modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.ModemCdma.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.ModemCdma.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -289,6 +289,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Oma.html modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Oma.html --- modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Oma.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Oma.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -250,6 +250,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Signal.html modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Signal.html --- modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Signal.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Signal.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -47,6 +47,7 @@ Gsm readable a{sv} Umts readable a{sv} Lte readable a{sv} +Nr5g readable a{sv}
    @@ -307,9 +308,54 @@

    +
    +
    +

    The "Nr5g" property

    +
    +Nr5g  readable   a{sv}
    +
    +

    Dictionary of available signal information for the 5G access + technology. +

    +

    This dictionary is composed of a string key, with an associated data + which contains type-specific information. +

    +

    +
    ++++ + + + + + + + + + + + + + + +

    "rsrq"

    + The 5G RSRQ (Reference Signal Received Quality), in dB, given as + a floating point value (signature "d"). +

    "rsrp"

    + The 5G (Reference Signal Received Power), in dBm, given as + a floating point value (signature "d"). +

    "snr"

    + The 5G S/R ratio, in dB, given as + a floating point value (signature "d"). +

    +

    +

    +
    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Simple.html modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Simple.html --- modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Simple.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Simple.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -134,8 +134,9 @@

    "number"

    - For POTS devices the number to dial,, + Number to dial for the data connection, given as a string value (signature "s"). + Deprecated since version 1.10.0. @@ -317,6 +318,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Time.html modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Time.html --- modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Time.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Time.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -157,6 +157,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Voice.html modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Voice.html --- modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Voice.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.Voice.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -326,6 +326,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.html modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.html --- modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Modem.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -47,6 +47,7 @@ SetCurrentCapabilities (IN u capabilities); SetCurrentModes (IN (uu) modes); SetCurrentBands (IN au bands); +SetPrimarySimSlot (IN u sim_slot); Command (IN s cmd, IN u timeout, OUT s response); @@ -64,6 +65,8 @@

    Properties

     Sim                           readable   o
    +SimSlots                      readable   ao
    +PrimarySimSlot                readable   u
     Bearers                       readable   ao
     SupportedCapabilities         readable   au
     CurrentCapabilities           readable   u
    @@ -205,7 +208,7 @@
     
     
     

    "number"

    -

    Telephone number to dial, given as a string value (signature "s"). Required in POTS.

    +

    Number to dial for the data connection, given as a string value (signature "s"). Deprecated since version 1.10.0.

    @@ -380,6 +383,33 @@
    +

    The SetPrimarySimSlot() method

    +
    +SetPrimarySimSlot (IN  u sim_slot);
    +
    +

    Selects which SIM slot to be considered as primary, on devices that expose + multiple slots in the "SimSlots" property. +

    +

    When the switch happens the modem may require a full device reprobe, so the modem + object in DBus will get removed, and recreated once the selected SIM slot is in + use. +

    +

    There is no limitation on which SIM slot to select, so the user may also set as + primary a slot that doesn't currently have any valid SIM card inserted. +

    +
    ++++ + + + + +

    IN u sim_slot:

    SIM slot number to set as primary.

    +
    +
    +

    The Command() method

     Command (IN  s cmd,
    @@ -454,7 +484,56 @@
     
     Sim  readable   o
     
    -

    The path of the SIM object available in this device, if any. +

    The path of the primary active SIM object available in this device, + if any. +

    +

    This SIM object is the one used for network registration and data + connection setup. +

    +

    If multiple org.freedesktop.ModemManager1.Modem.SimSlots are + supported, the org.freedesktop.ModemManager1.Modem.PrimarySimSlot + index value specifies which is the slot number where this SIM card + is available. +

    +
    +
    +
    +

    The "SimSlots" property

    +
    +SimSlots  readable   ao
    +
    +

    The list of SIM slots available in the system, including the SIM object + paths if the cards are present. If a given SIM slot at a given index + doesn't have a SIM card available, an empty object path will be given. +

    +

    The length of this array of objects will be equal to the amount of + available SIM slots in the system, and the index in the array is the + slot index. +

    +

    This list includes the SIM object considered as primary active SIM slot + (org.freedesktop.ModemManager1.Modem.Sim) at index + org.freedesktop.ModemManager1.Modem.ActiveSimSlot. +

    +
    +
    +
    +

    The "PrimarySimSlot" property

    +
    +PrimarySimSlot  readable   u
    +
    +

    The index of the primary active SIM slot in the + org.freedesktop.ModemManager1.Modem.SimSlots array, given in the [1,N] + range. +

    +

    If multiple SIM slots aren't supported, this property will report + value 0. +

    +

    In a Multi SIM Single Standby setup, this index identifies the only SIM + that is currently active. All the remaining slots will be inactive. +

    +

    In a Multi SIM Multi Standby setup, this index identifies the active SIM + that is considered primary, i.e. the one that will be used when a data + connection is setup.


    @@ -863,6 +942,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Sim.html modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Sim.html --- modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Sim.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Sim.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -47,8 +47,10 @@

    Properties

    +Active              readable   b
     SimIdentifier       readable   s
     Imsi                readable   s
    +Eid                 readable   s
     OperatorIdentifier  readable   s
     OperatorName        readable   s
     EmergencyNumbers    readable   as
    @@ -162,6 +164,21 @@
     

    Property Details

    +

    The "Active" property

    +
    +Active  readable   b
    +
    +

    Boolean indicating whether the SIM is currently active. +

    +

    On systems that support Multi SIM Single Standby, only one SIM may be + active at any given time, which will be the one considered primary. +

    +

    On systems that support Multi SIM Multi Standby, more than one SIM may + be active at any given time, but only one of them is considered primary. +

    +
    +
    +

    The "SimIdentifier" property

     SimIdentifier  readable   s
    @@ -183,6 +200,15 @@
     

    +

    The "Eid" property

    +
    +Eid  readable   s
    +
    +

    The EID of the SIM card, if any. +

    +
    +
    +

    The "OperatorIdentifier" property

     OperatorIdentifier  readable   s
    @@ -213,6 +239,6 @@
     
    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Sms.html modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Sms.html --- modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Sms.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.Sms.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -310,6 +310,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.html modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.html --- modemmanager-1.14.10/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/gdbus-org.freedesktop.ModemManager1.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -226,6 +226,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/index.html modemmanager-1.16.6/docs/reference/api/html/index.html --- modemmanager-1.14.10/docs/reference/api/html/index.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/index.html 2021-06-06 21:45:11.000000000 +0800 @@ -6,7 +6,7 @@ - + @@ -36,10 +36,12 @@

    - For ModemManager version 1.14.10 + For ModemManager version 1.16.6 + The latest version of this documentation can be found on-line at + https://www.freedesktop.org/software/ModemManager/doc/latest/ModemManager/.

    -
    +

    Permission is granted to copy, distribute and/or modify this @@ -203,9 +205,10 @@

    Index of new symbols in 1.8
    Index of new symbols in 1.10
    Index of new symbols in 1.12
    +
    Index of new symbols in 1.16
    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ref-common-types.html modemmanager-1.16.6/docs/reference/api/html/ref-common-types.html --- modemmanager-1.14.10/docs/reference/api/html/ref-common-types.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ref-common-types.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -38,6 +38,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ref-compat.html modemmanager-1.16.6/docs/reference/api/html/ref-compat.html --- modemmanager-1.14.10/docs/reference/api/html/ref-compat.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ref-compat.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -30,6 +30,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ref-dbus-bus-name.html modemmanager-1.16.6/docs/reference/api/html/ref-dbus-bus-name.html --- modemmanager-1.14.10/docs/reference/api/html/ref-dbus-bus-name.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ref-dbus-bus-name.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -32,6 +32,6 @@

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ref-dbus-object-bearer.html modemmanager-1.16.6/docs/reference/api/html/ref-dbus-object-bearer.html --- modemmanager-1.14.10/docs/reference/api/html/ref-dbus-object-bearer.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ref-dbus-object-bearer.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -33,6 +33,6 @@

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ref-dbus-object-call.html modemmanager-1.16.6/docs/reference/api/html/ref-dbus-object-call.html --- modemmanager-1.14.10/docs/reference/api/html/ref-dbus-object-call.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ref-dbus-object-call.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -32,6 +32,6 @@

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ref-dbus-object-manager.html modemmanager-1.16.6/docs/reference/api/html/ref-dbus-object-manager.html --- modemmanager-1.14.10/docs/reference/api/html/ref-dbus-object-manager.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ref-dbus-object-manager.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -40,6 +40,6 @@

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ref-dbus-object-modem.html modemmanager-1.16.6/docs/reference/api/html/ref-dbus-object-modem.html --- modemmanager-1.14.10/docs/reference/api/html/ref-dbus-object-modem.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ref-dbus-object-modem.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -94,6 +94,6 @@

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ref-dbus-object-sim.html modemmanager-1.16.6/docs/reference/api/html/ref-dbus-object-sim.html --- modemmanager-1.14.10/docs/reference/api/html/ref-dbus-object-sim.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ref-dbus-object-sim.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -33,6 +33,6 @@

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ref-dbus-object-sms.html modemmanager-1.16.6/docs/reference/api/html/ref-dbus-object-sms.html --- modemmanager-1.14.10/docs/reference/api/html/ref-dbus-object-sms.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ref-dbus-object-sms.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -32,6 +32,6 @@

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ref-dbus-standard-interfaces-introspectables.html modemmanager-1.16.6/docs/reference/api/html/ref-dbus-standard-interfaces-introspectables.html --- modemmanager-1.14.10/docs/reference/api/html/ref-dbus-standard-interfaces-introspectables.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ref-dbus-standard-interfaces-introspectables.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -37,6 +37,6 @@

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ref-dbus-standard-interfaces-objectmanager.html modemmanager-1.16.6/docs/reference/api/html/ref-dbus-standard-interfaces-objectmanager.html --- modemmanager-1.14.10/docs/reference/api/html/ref-dbus-standard-interfaces-objectmanager.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ref-dbus-standard-interfaces-objectmanager.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -36,6 +36,6 @@

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ref-dbus-standard-interfaces.html modemmanager-1.16.6/docs/reference/api/html/ref-dbus-standard-interfaces.html --- modemmanager-1.14.10/docs/reference/api/html/ref-dbus-standard-interfaces.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ref-dbus-standard-interfaces.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -53,6 +53,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ref-dbus.html modemmanager-1.16.6/docs/reference/api/html/ref-dbus.html --- modemmanager-1.14.10/docs/reference/api/html/ref-dbus.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ref-dbus.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -95,6 +95,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ref-migrating.html modemmanager-1.16.6/docs/reference/api/html/ref-migrating.html --- modemmanager-1.14.10/docs/reference/api/html/ref-migrating.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ref-migrating.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -49,6 +49,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ref-overview-introduction.html modemmanager-1.16.6/docs/reference/api/html/ref-overview-introduction.html --- modemmanager-1.14.10/docs/reference/api/html/ref-overview-introduction.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ref-overview-introduction.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -57,6 +57,6 @@

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ref-overview-modem-detection.html modemmanager-1.16.6/docs/reference/api/html/ref-overview-modem-detection.html --- modemmanager-1.14.10/docs/reference/api/html/ref-overview-modem-detection.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ref-overview-modem-detection.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -44,6 +44,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ref-overview-modem-filter.html modemmanager-1.16.6/docs/reference/api/html/ref-overview-modem-filter.html --- modemmanager-1.14.10/docs/reference/api/html/ref-overview-modem-filter.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ref-overview-modem-filter.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -96,10 +96,10 @@

  • -

    MM_FILTER_RULE_CDC_WDM

    +

    MM_FILTER_RULE_USBMISC

    - This filter will automatically flag as allowed all cdc-wdm ports exposed by - devices. Unless there is a will to explicitly forbid the cdc-wdm ports exposed + This filter will automatically flag as allowed all cdc-wdm ports exposed in the + usbmisc subsystem. Unless there is a will to explicitly forbid the cdc-wdm ports exposed by qmi_wwan, cdc_mbim or huawei-cdc-ncm kernel drivers, this filter should always be enabled.

    @@ -171,6 +171,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ref-overview-modem-object-creation.html modemmanager-1.16.6/docs/reference/api/html/ref-overview-modem-object-creation.html --- modemmanager-1.14.10/docs/reference/api/html/ref-overview-modem-object-creation.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ref-overview-modem-object-creation.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -34,6 +34,6 @@

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ref-overview-modem-port-probing.html modemmanager-1.16.6/docs/reference/api/html/ref-overview-modem-port-probing.html --- modemmanager-1.14.10/docs/reference/api/html/ref-overview-modem-port-probing.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ref-overview-modem-port-probing.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -133,6 +133,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ref-overview-modem-state-machine.html modemmanager-1.16.6/docs/reference/api/html/ref-overview-modem-state-machine.html --- modemmanager-1.14.10/docs/reference/api/html/ref-overview-modem-state-machine.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ref-overview-modem-state-machine.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -117,6 +117,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ref-overview-plugin-specific-modems.html modemmanager-1.16.6/docs/reference/api/html/ref-overview-plugin-specific-modems.html --- modemmanager-1.14.10/docs/reference/api/html/ref-overview-plugin-specific-modems.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ref-overview-plugin-specific-modems.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -70,6 +70,6 @@

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ref-overview.html modemmanager-1.16.6/docs/reference/api/html/ref-overview.html --- modemmanager-1.14.10/docs/reference/api/html/ref-overview.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ref-overview.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -56,6 +56,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/ref-udev.html modemmanager-1.16.6/docs/reference/api/html/ref-udev.html --- modemmanager-1.14.10/docs/reference/api/html/ref-udev.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/ref-udev.html 2021-06-06 21:45:11.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -30,6 +30,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/api/html/style.css modemmanager-1.16.6/docs/reference/api/html/style.css --- modemmanager-1.14.10/docs/reference/api/html/style.css 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/api/html/style.css 2021-06-06 21:45:11.000000000 +0800 @@ -455,10 +455,10 @@ } } -pre { line-height: 125%; margin: 0; } -td.linenos pre { color: #000000; background-color: #f0f0f0; padding-left: 5px; padding-right: 5px; } -span.linenos { color: #000000; background-color: #f0f0f0; padding-left: 5px; padding-right: 5px; } -td.linenos pre.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .hll { background-color: #ffffcc } .c { color: #408080; font-style: italic } /* Comment */ diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/Makefile.in modemmanager-1.16.6/docs/reference/libmm-glib/Makefile.in --- modemmanager-1.14.10/docs/reference/libmm-glib/Makefile.in 2021-01-16 21:19:55.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/Makefile.in 2021-06-06 21:43:42.000000000 +0800 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 Free Software Foundation, Inc. @@ -15,6 +15,24 @@ @SET_MAKE@ # -*- mode: makefile -*- +# +# gtk-doc.make - make rules for gtk-doc +# Copyright (C) 2003 James Henstridge +# 2004-2007 Damon Chaplin +# 2007-2017 Stefan Sauer +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . #################################### # Everything below here is generic # @@ -201,6 +219,8 @@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBELOGIND_CFLAGS = @LIBELOGIND_CFLAGS@ +LIBELOGIND_LIBS = @LIBELOGIND_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBMM_GLIB_CFLAGS = @LIBMM_GLIB_CFLAGS@ @@ -325,6 +345,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -477,34 +498,34 @@ @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_PDF_TRUE@PDF_BUILD_STAMP = pdf-build.stamp #### setup #### -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SETUP = $(GTK_DOC_V_SETUP_$(V)) -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SETUP_ = $(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SETUP = $(GTK_DOC_V_SETUP_@AM_V@) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SETUP_ = $(GTK_DOC_V_SETUP_@AM_DEFAULT_V@) @ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SETUP_0 = @echo " DOC Preparing build"; #### scan #### -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SCAN = $(GTK_DOC_V_SCAN_$(V)) -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SCAN_ = $(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SCAN = $(GTK_DOC_V_SCAN_@AM_V@) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SCAN_ = $(GTK_DOC_V_SCAN_@AM_DEFAULT_V@) @ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SCAN_0 = @echo " DOC Scanning header files"; -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_INTROSPECT = $(GTK_DOC_V_INTROSPECT_$(V)) -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_INTROSPECT_ = $(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_INTROSPECT = $(GTK_DOC_V_INTROSPECT_@AM_V@) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_INTROSPECT_ = $(GTK_DOC_V_INTROSPECT_@AM_DEFAULT_V@) @ENABLE_GTK_DOC_TRUE@GTK_DOC_V_INTROSPECT_0 = @echo " DOC Introspecting gobjects"; #### xml #### -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XML = $(GTK_DOC_V_XML_$(V)) -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XML_ = $(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XML = $(GTK_DOC_V_XML_@AM_V@) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XML_ = $(GTK_DOC_V_XML_@AM_DEFAULT_V@) @ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XML_0 = @echo " DOC Building XML"; #### html #### -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_HTML = $(GTK_DOC_V_HTML_$(V)) -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_HTML_ = $(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_HTML = $(GTK_DOC_V_HTML_@AM_V@) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_HTML_ = $(GTK_DOC_V_HTML_@AM_DEFAULT_V@) @ENABLE_GTK_DOC_TRUE@GTK_DOC_V_HTML_0 = @echo " DOC Building HTML"; -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XREF = $(GTK_DOC_V_XREF_$(V)) -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XREF_ = $(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XREF = $(GTK_DOC_V_XREF_@AM_V@) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XREF_ = $(GTK_DOC_V_XREF_@AM_DEFAULT_V@) @ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XREF_0 = @echo " DOC Fixing cross-references"; #### pdf #### -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_PDF = $(GTK_DOC_V_PDF_$(V)) -@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_PDF_ = $(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_PDF = $(GTK_DOC_V_PDF_@AM_V@) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_PDF_ = $(GTK_DOC_V_PDF_@AM_DEFAULT_V@) @ENABLE_GTK_DOC_TRUE@GTK_DOC_V_PDF_0 = @echo " DOC Building PDF"; all: all-am @@ -734,38 +755,38 @@ @ENABLE_GTK_DOC_TRUE@setup-build.stamp: @ENABLE_GTK_DOC_TRUE@ -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ -@ENABLE_GTK_DOC_TRUE@ files=`echo $(SETUP_FILES) $(DOC_MODULE).types`; \ -@ENABLE_GTK_DOC_TRUE@ if test "x$$files" != "x" ; then \ -@ENABLE_GTK_DOC_TRUE@ for file in $$files ; do \ -@ENABLE_GTK_DOC_TRUE@ destdir=`dirname $(abs_builddir)/$$file`; \ -@ENABLE_GTK_DOC_TRUE@ test -d "$$destdir" || mkdir -p "$$destdir"; \ -@ENABLE_GTK_DOC_TRUE@ test -f $(abs_srcdir)/$$file && \ -@ENABLE_GTK_DOC_TRUE@ cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ -@ENABLE_GTK_DOC_TRUE@ done; \ -@ENABLE_GTK_DOC_TRUE@ fi; \ +@ENABLE_GTK_DOC_TRUE@ files=`echo $(SETUP_FILES) $(DOC_MODULE).types`; \ +@ENABLE_GTK_DOC_TRUE@ if test "x$$files" != "x" ; then \ +@ENABLE_GTK_DOC_TRUE@ for file in $$files ; do \ +@ENABLE_GTK_DOC_TRUE@ destdir=`dirname $(abs_builddir)/$$file`; \ +@ENABLE_GTK_DOC_TRUE@ test -d "$$destdir" || mkdir -p "$$destdir"; \ +@ENABLE_GTK_DOC_TRUE@ test -f $(abs_srcdir)/$$file && \ +@ENABLE_GTK_DOC_TRUE@ cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ +@ENABLE_GTK_DOC_TRUE@ done; \ +@ENABLE_GTK_DOC_TRUE@ fi; \ @ENABLE_GTK_DOC_TRUE@ fi @ENABLE_GTK_DOC_TRUE@ $(AM_V_at)touch setup-build.stamp @ENABLE_GTK_DOC_TRUE@scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB) @ENABLE_GTK_DOC_TRUE@ $(GTK_DOC_V_SCAN)_source_dir='' ; \ @ENABLE_GTK_DOC_TRUE@ for i in $(DOC_SOURCE_DIR) ; do \ -@ENABLE_GTK_DOC_TRUE@ _source_dir="$${_source_dir} --source-dir=$$i" ; \ +@ENABLE_GTK_DOC_TRUE@ _source_dir="$${_source_dir} --source-dir=$$i" ; \ @ENABLE_GTK_DOC_TRUE@ done ; \ @ENABLE_GTK_DOC_TRUE@ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) @ENABLE_GTK_DOC_TRUE@ $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ -@ENABLE_GTK_DOC_TRUE@ scanobj_options=""; \ -@ENABLE_GTK_DOC_TRUE@ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ -@ENABLE_GTK_DOC_TRUE@ if test "$$?" = "0"; then \ -@ENABLE_GTK_DOC_TRUE@ if test "x$(V)" = "x1"; then \ -@ENABLE_GTK_DOC_TRUE@ scanobj_options="--verbose"; \ -@ENABLE_GTK_DOC_TRUE@ fi; \ +@ENABLE_GTK_DOC_TRUE@ scanobj_options=""; \ +@ENABLE_GTK_DOC_TRUE@ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ +@ENABLE_GTK_DOC_TRUE@ if test "$$?" = "0"; then \ +@ENABLE_GTK_DOC_TRUE@ if test "x$(V)" = "x1"; then \ +@ENABLE_GTK_DOC_TRUE@ scanobj_options="--verbose"; \ @ENABLE_GTK_DOC_TRUE@ fi; \ -@ENABLE_GTK_DOC_TRUE@ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ -@ENABLE_GTK_DOC_TRUE@ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ +@ENABLE_GTK_DOC_TRUE@ fi; \ +@ENABLE_GTK_DOC_TRUE@ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ +@ENABLE_GTK_DOC_TRUE@ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ @ENABLE_GTK_DOC_TRUE@ else \ -@ENABLE_GTK_DOC_TRUE@ for i in $(SCANOBJ_FILES) ; do \ -@ENABLE_GTK_DOC_TRUE@ test -f $$i || touch $$i ; \ -@ENABLE_GTK_DOC_TRUE@ done \ +@ENABLE_GTK_DOC_TRUE@ for i in $(SCANOBJ_FILES) ; do \ +@ENABLE_GTK_DOC_TRUE@ test -f $$i || touch $$i ; \ +@ENABLE_GTK_DOC_TRUE@ done \ @ENABLE_GTK_DOC_TRUE@ fi @ENABLE_GTK_DOC_TRUE@ $(AM_V_at)touch scan-build.stamp @@ -775,7 +796,7 @@ @ENABLE_GTK_DOC_TRUE@sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(HFILE_GLOB) $(CFILE_GLOB) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) xml/gtkdocentities.ent @ENABLE_GTK_DOC_TRUE@ $(GTK_DOC_V_XML)_source_dir='' ; \ @ENABLE_GTK_DOC_TRUE@ for i in $(DOC_SOURCE_DIR) ; do \ -@ENABLE_GTK_DOC_TRUE@ _source_dir="$${_source_dir} --source-dir=$$i" ; \ +@ENABLE_GTK_DOC_TRUE@ _source_dir="$${_source_dir} --source-dir=$$i" ; \ @ENABLE_GTK_DOC_TRUE@ done ; \ @ENABLE_GTK_DOC_TRUE@ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) @ENABLE_GTK_DOC_TRUE@ $(AM_V_at)touch sgml-build.stamp @@ -783,6 +804,9 @@ @ENABLE_GTK_DOC_TRUE@sgml.stamp: sgml-build.stamp @ENABLE_GTK_DOC_TRUE@ @true +@ENABLE_GTK_DOC_TRUE@$(DOC_MAIN_SGML_FILE): sgml-build.stamp +@ENABLE_GTK_DOC_TRUE@ @true + @ENABLE_GTK_DOC_TRUE@xml/gtkdocentities.ent: Makefile @ENABLE_GTK_DOC_TRUE@ $(GTK_DOC_V_XML)$(MKDIR_P) $(@D) && ( \ @ENABLE_GTK_DOC_TRUE@ echo ""; \ @@ -810,12 +834,9 @@ @ENABLE_GTK_DOC_TRUE@ cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) @ENABLE_GTK_DOC_TRUE@ -@test "x$(HTML_IMAGES)" = "x" || \ @ENABLE_GTK_DOC_TRUE@ for file in $(HTML_IMAGES) ; do \ -@ENABLE_GTK_DOC_TRUE@ if test -f $(abs_srcdir)/$$file ; then \ -@ENABLE_GTK_DOC_TRUE@ cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ -@ENABLE_GTK_DOC_TRUE@ fi; \ -@ENABLE_GTK_DOC_TRUE@ if test -f $(abs_builddir)/$$file ; then \ -@ENABLE_GTK_DOC_TRUE@ cp $(abs_builddir)/$$file $(abs_builddir)/html; \ -@ENABLE_GTK_DOC_TRUE@ fi; \ +@ENABLE_GTK_DOC_TRUE@ test -f $(abs_srcdir)/$$file && cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ +@ENABLE_GTK_DOC_TRUE@ test -f $(abs_builddir)/$$file && cp $(abs_builddir)/$$file $(abs_builddir)/html; \ +@ENABLE_GTK_DOC_TRUE@ test -f $$file && cp $$file $(abs_builddir)/html; \ @ENABLE_GTK_DOC_TRUE@ done; @ENABLE_GTK_DOC_TRUE@ $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) @ENABLE_GTK_DOC_TRUE@ $(AM_V_at)touch html-build.stamp @@ -882,7 +903,6 @@ @ENABLE_GTK_DOC_TRUE@ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ @ENABLE_GTK_DOC_TRUE@ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ @ENABLE_GTK_DOC_TRUE@ fi; \ -@ENABLE_GTK_DOC_TRUE@ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ @ENABLE_GTK_DOC_TRUE@ fi @ENABLE_GTK_DOC_TRUE@uninstall-local: diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMBearer.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMBearer.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMBearer.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMBearer.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -97,7 +97,7 @@ -MMBearerType +MMBearerType mm_bearer_get_bearer_typeย () @@ -277,7 +277,7 @@

    Returns

    The DBus path of the MMBearer object.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -306,7 +306,7 @@

    Returns

    The DBus path of the MMBearer object. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -341,7 +341,7 @@

    Returns

    The name of the interface, or NULL if it couldn't be retrieved.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -372,7 +372,7 @@

    Returns

    The name of the interface, or NULL if it couldn't be retrieved. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -463,7 +463,7 @@

    mm_bearer_get_bearer_typeย ()

    -
    MMBearerType
    +
    MMBearerType
     mm_bearer_get_bearer_type (MMBearer *self);

    Gets the type of bearer.

    @@ -483,7 +483,7 @@

    Returns

    -

    a MMBearerType.

    +

    a MMBearerType.

    Since: 1.0

    @@ -518,7 +518,7 @@

    A MMBearerIpConfig. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -552,7 +552,7 @@

    Returns

    A MMBearerIpConfig that must be freed with g_object_unref() or NULL if unknown.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -587,7 +587,7 @@

    A MMBearerIpConfig. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -621,7 +621,7 @@

    Returns

    A MMBearerIpConfig that must be freed with g_object_unref() or NULL if unknown.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -656,7 +656,7 @@

    A MMBearerProperties. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -690,7 +690,7 @@

    Returns

    A MMBearerProperties that must be freed with g_object_unref() or NULL if unknown.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -725,7 +725,7 @@

    A MMBearerStats. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.6

    @@ -759,7 +759,7 @@

    Returns

    A MMBearerStats that must be freed with g_object_unref() or NULL if unknown.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.6

    @@ -1053,6 +1053,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMBearerIpConfig.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMBearerIpConfig.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMBearerIpConfig.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMBearerIpConfig.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -42,7 +42,7 @@ -MMBearerIpMethod +MMBearerIpMethod mm_bearer_ip_config_get_methodย () @@ -119,7 +119,7 @@

    Functions

    mm_bearer_ip_config_get_methodย ()

    -
    MMBearerIpMethod
    +
    MMBearerIpMethod
     mm_bearer_ip_config_get_method (MMBearerIpConfig *self);

    Gets the IP method to be used with this bearer.

    @@ -139,7 +139,7 @@

    Since: 1.0

    @@ -225,7 +225,7 @@

    a NULL-terminated array of strings. Do not free the returned value, it is owned by self .

    -

    [transfer none][array zero-terminated=1]

    +

    [transfer none][array zero-terminated=1]

    Since: 1.0

    @@ -297,6 +297,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMBearerProperties.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMBearerProperties.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMBearerProperties.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMBearerProperties.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -65,7 +65,7 @@ -MMBearerAllowedAuth +MMBearerAllowedAuth mm_bearer_properties_get_allowed_authย () @@ -111,7 +111,7 @@ -MMBearerIpFamily +MMBearerIpFamily mm_bearer_properties_get_ip_typeย () @@ -158,7 +158,7 @@ -MMModemCdmaRmProtocol +MMModemCdmaRmProtocol mm_bearer_properties_get_rm_protocolย () @@ -211,7 +211,7 @@

    Returns

    a MMBearerProperties. The returned value should be freed with g_object_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -241,7 +241,7 @@

    the access point, or NULL if not set. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -279,7 +279,7 @@

    mm_bearer_properties_get_allowed_authย ()

    -
    MMBearerAllowedAuth
    +
    MMBearerAllowedAuth
     mm_bearer_properties_get_allowed_auth (MMBearerProperties *self);

    Gets the authentication methods allowed in the connection.

    @@ -299,8 +299,8 @@

    Returns

    -

    a bitmask of MMBearerAllowedAuth values, or -MM_BEARER_ALLOWED_AUTH_UNKNOWN to request the modem-default method.

    +

    a bitmask of MMBearerAllowedAuth values, or +MM_BEARER_ALLOWED_AUTH_UNKNOWN to request the modem-default method.

    Since: 1.0

    @@ -309,7 +309,7 @@

    mm_bearer_properties_set_allowed_authย ()

    void
     mm_bearer_properties_set_allowed_auth (MMBearerProperties *self,
    -                                       MMBearerAllowedAuth allowed_auth);
    + MMBearerAllowedAuth allowed_auth);
  • Sets the authentication method to use.

    Parameters

    @@ -327,8 +327,8 @@

    allowed_auth

    -

    a bitmask of MMBearerAllowedAuth values. -MM_BEARER_ALLOWED_AUTH_UNKNOWN may be given to request the modem-default +

    a bitmask of MMBearerAllowedAuth values. +MM_BEARER_ALLOWED_AUTH_UNKNOWN may be given to request the modem-default method.

    ย  @@ -363,7 +363,7 @@

    the username, or NULL if not set. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -424,7 +424,7 @@

    the password, or NULL if not set. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -462,7 +462,7 @@

    mm_bearer_properties_get_ip_typeย ()

    -
    MMBearerIpFamily
    +
    MMBearerIpFamily
     mm_bearer_properties_get_ip_type (MMBearerProperties *self);

    Sets the IP type to use.

    @@ -482,7 +482,7 @@

    Since: 1.0

    @@ -491,7 +491,7 @@

    mm_bearer_properties_set_ip_typeย ()

    void
     mm_bearer_properties_set_ip_type (MMBearerProperties *self,
    -                                  MMBearerIpFamily ip_type);
    + MMBearerIpFamily ip_type);

    Sets the IP type to use.

    Parameters

    @@ -509,7 +509,7 @@

    ip_type

    -

    a MMBearerIpFamily.

    +

    a MMBearerIpFamily.

    ย  @@ -609,7 +609,7 @@

    the number, or NULL if not set. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -652,7 +652,7 @@

    mm_bearer_properties_get_rm_protocolย ()

    -
    MMModemCdmaRmProtocol
    +
    MMModemCdmaRmProtocol
     mm_bearer_properties_get_rm_protocol (MMBearerProperties *self);

    Gets the RM protocol requested to use in the CDMA connection.

    @@ -672,7 +672,7 @@

    Since: 1.0

    @@ -681,7 +681,7 @@

    mm_bearer_properties_set_rm_protocolย ()

    void
     mm_bearer_properties_set_rm_protocol (MMBearerProperties *self,
    -                                      MMModemCdmaRmProtocol protocol);
    + MMModemCdmaRmProtocol protocol);

    Sets the RM protocol to use in the CDMA connection.

    Parameters

    @@ -699,7 +699,7 @@

    protocol

    -

    a MMModemCdmaRmProtocol.

    +

    a MMModemCdmaRmProtocol.

    ย  @@ -719,6 +719,6 @@
    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMBearerStats.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMBearerStats.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMBearerStats.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMBearerStats.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -364,6 +364,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMCall.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMCall.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMCall.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMCall.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -73,7 +73,7 @@ -MMCallDirection +MMCallDirection mm_call_get_directionย () @@ -81,7 +81,7 @@ -MMCallState +MMCallState mm_call_get_stateย () @@ -89,7 +89,7 @@ -MMCallStateReason +MMCallStateReason mm_call_get_state_reasonย () @@ -364,7 +364,7 @@

    Returns

    The DBus path of the MMCall object.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.6

    @@ -393,7 +393,7 @@

    Returns

    The DBus path of the MMCall object. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.6

    @@ -426,7 +426,7 @@

    Returns

    The number, or NULL if it couldn't be retrieved.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.6

    @@ -456,14 +456,14 @@

    Returns

    The number, or NULL if it couldn't be retrieved. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.6


    mm_call_get_directionย ()

    -
    MMCallDirection
    +
    MMCallDirection
     mm_call_get_direction (MMCall *self);

    Gets the call direction.

    @@ -483,14 +483,14 @@

    Returns

    -

    a MMCallDirection.

    +

    a MMCallDirection.

    Since: 1.6


    mm_call_get_stateย ()

    -
    MMCallState
    +
    MMCallState
     mm_call_get_state (MMCall *self);

    Gets the current state of call.

    @@ -510,14 +510,14 @@

    Returns

    -

    a MMCallState.

    +

    a MMCallState.

    Since: 1.6


    mm_call_get_state_reasonย ()

    -
    MMCallStateReason
    +
    MMCallStateReason
     mm_call_get_state_reason (MMCall *self);

    Gets the reason of why the call changes its state.

    @@ -537,7 +537,7 @@

    Since: 1.6

    @@ -566,7 +566,7 @@

    Returns

    The audio port, or NULL if call audio is not routed via the host or couldn't be retrieved.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.10

    @@ -595,7 +595,7 @@

    Returns

    The audio port, or NULL if call audio is not routed via the host or couldn't be retrieved.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.10

    @@ -629,7 +629,7 @@

    Returns

    A MMCallAudioFormat that must be freed with g_object_unref() or NULL if unknown.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.10

    @@ -664,7 +664,7 @@

    A MMCallAudioFormat. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.10

    @@ -1707,6 +1707,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMCallAudioFormat.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMCallAudioFormat.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMCallAudioFormat.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMCallAudioFormat.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -192,6 +192,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMCallProperties.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMCallProperties.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMCallProperties.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMCallProperties.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -65,7 +65,7 @@ -MMCallDirection +MMCallDirection mm_call_properties_get_directionย () @@ -81,7 +81,7 @@ -MMCallState +MMCallState mm_call_properties_get_stateย () @@ -97,7 +97,7 @@ -MMCallStateReason +MMCallStateReason mm_call_properties_get_state_reasonย () @@ -151,7 +151,7 @@

    Returns

    a MMCallProperties. The returned value should be freed with g_object_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.6

    @@ -218,7 +218,7 @@

    mm_call_properties_get_directionย ()

    -
    MMCallDirection
    +
    MMCallDirection
     mm_call_properties_get_direction (MMCallProperties *self);

    mm_call_properties_get_direction has been deprecated since version 1.12 and should not be used in newly-written code.

    @@ -253,7 +253,7 @@

    mm_call_properties_set_directionย ()

    void
     mm_call_properties_set_direction (MMCallProperties *self,
    -                                  MMCallDirection direction);
    + MMCallDirection direction);

    mm_call_properties_set_direction has been deprecated since version 1.12 and should not be used in newly-written code.

    the user should not specify the direction of the call, as @@ -288,7 +288,7 @@


    mm_call_properties_get_stateย ()

    -
    MMCallState
    +
    MMCallState
     mm_call_properties_get_state (MMCallProperties *self);

    mm_call_properties_get_state has been deprecated since version 1.12 and should not be used in newly-written code.

    @@ -323,7 +323,7 @@

    mm_call_properties_set_stateย ()

    void
     mm_call_properties_set_state (MMCallProperties *self,
    -                              MMCallState state);
    + MMCallState state);

    mm_call_properties_set_state has been deprecated since version 1.12 and should not be used in newly-written code.

    the user should not specify the state of the call before @@ -358,7 +358,7 @@


    mm_call_properties_get_state_reasonย ()

    -
    MMCallStateReason
    +
    MMCallStateReason
     mm_call_properties_get_state_reason (MMCallProperties *self);

    mm_call_properties_get_state_reason has been deprecated since version 1.12 and should not be used in newly-written code.

    @@ -393,7 +393,7 @@

    mm_call_properties_set_state_reasonย ()

    void
     mm_call_properties_set_state_reason (MMCallProperties *self,
    -                                     MMCallStateReason state_reason);
    + MMCallStateReason state_reason);

    mm_call_properties_set_state_reason has been deprecated since version 1.12 and should not be used in newly-written code.

    the user should not specify the state reason of the call @@ -437,6 +437,6 @@

    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMCdmaManualActivationProperties.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMCdmaManualActivationProperties.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMCdmaManualActivationProperties.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMCdmaManualActivationProperties.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -217,7 +217,7 @@

    Returns

    A MMCdmaManualActivationProperties. The returned value should be freed with g_object_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.2

    @@ -248,7 +248,7 @@

    The SPC. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.2

    @@ -382,7 +382,7 @@

    The MDN. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.2

    @@ -456,7 +456,7 @@

    The MIN. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.2

    @@ -530,7 +530,7 @@

    The MN-HA key. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.2

    @@ -604,7 +604,7 @@

    The MN-AAA key. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.2

    @@ -687,7 +687,7 @@

    The PRL. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.2

    @@ -718,7 +718,7 @@

    A GByteArray with the PRL, or NULL if it doesn't contain any. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.2

    @@ -748,7 +748,7 @@

    Returns

    A GByteArray with the PRL, or NULL if it doesn't contain any. The returned value should be freed with g_byte_array_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.2

    @@ -859,6 +859,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMFirmwareProperties.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMFirmwareProperties.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMFirmwareProperties.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMFirmwareProperties.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -42,7 +42,7 @@ -MMFirmwareImageType +MMFirmwareImageType mm_firmware_properties_get_image_typeย () @@ -123,7 +123,7 @@

    Functions

    mm_firmware_properties_get_image_typeย ()

    -
    MMFirmwareImageType
    +
    MMFirmwareImageType
     mm_firmware_properties_get_image_type (MMFirmwareProperties *self);

    Gets the type of the firmare image.

    @@ -143,7 +143,7 @@

    Returns

    -

    A MMFirmwareImageType specifying The type of the image.

    +

    A MMFirmwareImageType specifying The type of the image.

    Since: 1.0

    @@ -173,7 +173,7 @@

    The ID of the image. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -183,7 +183,7 @@
    const gcharย *
     mm_firmware_properties_get_gobi_pri_version
                                    (MMFirmwareProperties *self);
    -

    Gets the PRI version of a firmware image of type MM_FIRMWARE_IMAGE_TYPE_GOBI.

    +

    Gets the PRI version of a firmware image of type MM_FIRMWARE_IMAGE_TYPE_GOBI.

    Parameters

    @@ -213,7 +213,7 @@
    const gcharย *
     mm_firmware_properties_get_gobi_pri_info
                                    (MMFirmwareProperties *self);
    -

    Gets the PRI info of a firmware image of type MM_FIRMWARE_IMAGE_TYPE_GOBI.

    +

    Gets the PRI info of a firmware image of type MM_FIRMWARE_IMAGE_TYPE_GOBI.

    Parameters

    @@ -244,7 +244,7 @@ mm_firmware_properties_get_gobi_boot_version (MMFirmwareProperties *self);

    Gets the boot version of a firmware image of type -MM_FIRMWARE_IMAGE_TYPE_GOBI.

    +MM_FIRMWARE_IMAGE_TYPE_GOBI.

    Parameters

    @@ -275,7 +275,7 @@ mm_firmware_properties_get_gobi_pri_unique_id (MMFirmwareProperties *self);

    Gets the PRI unique ID of a firmware image of type -MM_FIRMWARE_IMAGE_TYPE_GOBI.

    +MM_FIRMWARE_IMAGE_TYPE_GOBI.

    Parameters

    @@ -306,7 +306,7 @@ mm_firmware_properties_get_gobi_modem_unique_id (MMFirmwareProperties *self);

    Gets the MODEM unique ID of a firmware image of type -MM_FIRMWARE_IMAGE_TYPE_GOBI.

    +MM_FIRMWARE_IMAGE_TYPE_GOBI.

    Parameters

    @@ -342,6 +342,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMFirmwareUpdateSettings.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMFirmwareUpdateSettings.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMFirmwareUpdateSettings.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMFirmwareUpdateSettings.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -49,7 +49,7 @@ - + @@ -3282,11 +3750,11 @@

    mm_modem_set_power_state_syncย ()

    gboolean
     mm_modem_set_power_state_sync (MMModem *self,
    -                               MMModemPowerState state,
    +                               MMModemPowerState state,
                                    GCancellable *cancellable,
                                    GError **error);

    Synchronously sets the power state of the device. This method can only be -used while the modem is in MM_MODEM_STATE_DISABLED state.

    +used while the modem is in MM_MODEM_STATE_DISABLED state.

    The calling thread is blocked until a reply is received. See mm_modem_set_power_state() for the asynchronous version of this method.

    @@ -3305,8 +3773,8 @@
    - + @@ -3335,8 +3803,8 @@

    mm_modem_set_current_modesย ()

    void
     mm_modem_set_current_modes (MMModem *self,
    -                            MMModemMode modes,
    -                            MMModemMode preferred,
    +                            MMModemMode modes,
    +                            MMModemMode preferred,
                                 GCancellable *cancellable,
                                 GAsyncReadyCallback callback,
                                 gpointer user_data);
    @@ -3364,14 +3832,14 @@ - + - +is the preferred one, or MM_MODEM_MODE_NONE if none.

    @@ -3444,8 +3912,8 @@

    mm_modem_set_current_modes_syncย ()

    gboolean
     mm_modem_set_current_modes_sync (MMModem *self,
    -                                 MMModemMode modes,
    -                                 MMModemMode preferred,
    +                                 MMModemMode modes,
    +                                 MMModemMode preferred,
                                      GCancellable *cancellable,
                                      GError **error);

    Synchronously sets the access technologies (e.g. 2G/3G/4G preference) the @@ -3468,14 +3936,14 @@

    - + - +is the preferred one, or MM_MODEM_MODE_NONE if none.

    @@ -3503,7 +3971,7 @@

    mm_modem_set_current_bandsย ()

    void
     mm_modem_set_current_bands (MMModem *self,
    -                            const MMModemBand *bands,
    +                            const MMModemBand *bands,
                                 guint n_bands,
                                 GCancellable *cancellable,
                                 GAsyncReadyCallback callback,
    @@ -3532,7 +4000,7 @@
     
    - + @@ -3611,7 +4079,7 @@

    mm_modem_set_current_bands_syncย ()

    gboolean
     mm_modem_set_current_bands_sync (MMModem *self,
    -                                 const MMModemBand *bands,
    +                                 const MMModemBand *bands,
                                      guint n_bands,
                                      GCancellable *cancellable,
                                      GError **error);
    @@ -3635,7 +4103,7 @@ - + @@ -3669,7 +4137,7 @@

    mm_modem_set_current_capabilitiesย ()

    void
     mm_modem_set_current_capabilities (MMModem *self,
    -                                   MMModemCapability capabilities,
    +                                   MMModemCapability capabilities,
                                        GCancellable *cancellable,
                                        GAsyncReadyCallback callback,
                                        gpointer user_data);
    @@ -3698,7 +4166,7 @@ - + @@ -3774,7 +4242,7 @@
    gboolean
     mm_modem_set_current_capabilities_sync
                                    (MMModem *self,
    -                                MMModemCapability capabilities,
    +                                MMModemCapability capabilities,
                                     GCancellable *cancellable,
                                     GError **error);

    Synchronously sets the capabilities of the device. A restart of the modem may @@ -3798,7 +4266,7 @@

    - + @@ -4206,7 +4674,7 @@

    The list of MMBearer objects, or NULL if either none found or if error is set.

    -

    [transfer full][element-type ModemManager.Bearer]

    +

    [transfer full][element-type ModemManager.Bearer]

    Since: 1.0

    @@ -4252,7 +4720,7 @@

    The list of MMBearer objects, or NULL if either none found or if error is set.

    -

    [transfer full][element-type ModemManager.Bearer]

    +

    [transfer full][element-type ModemManager.Bearer]

    Since: 1.0

    @@ -4269,7 +4737,7 @@

    This request may fail if the modem does not support additional bearers, if too many bearers are already defined, or if properties are invalid.

    -

    See CreateBearer +

    See CreateBearer to check which properties may be passed.

    When the operation is finished, callback will be invoked in the

    @@ -4359,7 +4827,7 @@

    A newly created MMBearer, or NULL if error is set.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -4375,7 +4843,7 @@

    This request may fail if the modem does not support additional bearers, if too many bearers are already defined, or if properties are invalid.

    -

    See CreateBearer +

    See CreateBearer to check which properties may be passed.

    The calling thread is blocked until a reply is received. See mm_modem_create_bearer() for the asynchronous version of this method.

    @@ -4416,7 +4884,7 @@

    A newly created MMBearer, or NULL if error is set.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -4675,7 +5143,7 @@ command, or NULL if error is set. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -4734,7 +5202,7 @@ command, or NULL if error is set. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -4787,7 +5255,7 @@ MMModemMode preferred; }; -

    MMModemModeCombination is a simple struct holding a pair of MMModemMode +

    MMModemModeCombination is a simple struct holding a pair of MMModemMode values.

    Members

    @@ -4799,13 +5267,13 @@
    - - + + - - + + @@ -4837,8 +5305,8 @@ - - + + @@ -4849,6 +5317,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMModem3gpp.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMModem3gpp.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMModem3gpp.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMModem3gpp.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -64,7 +64,7 @@ - + @@ -1656,7 +1656,7 @@
    gboolean
     mm_modem_3gpp_set_eps_ue_mode_operation_sync
                                    (MMModem3gpp *self,
    -                                MMModem3gppEpsUeModeOperation mode,
    +                                MMModem3gppEpsUeModeOperation mode,
                                     GCancellable *cancellable,
                                     GError **error);

    Synchronously requests to update the EPS UE mode of operation.

    @@ -1679,7 +1679,7 @@ - + @@ -1875,6 +1875,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMModem3gppUssd.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMModem3gppUssd.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMModem3gppUssd.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMModem3gppUssd.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -58,7 +58,7 @@ - + - + @@ -356,14 +356,14 @@ - + - + @@ -569,7 +569,7 @@

    Returns

    A MMFirmwareUpdateSettings that must be freed with g_object_unref() or NULL if unknown.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.10

    @@ -605,7 +605,7 @@

    A MMFirmwareUpdateSettings. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.10

    @@ -621,6 +621,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMModemLocation.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMModemLocation.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMModemLocation.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMModemLocation.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -58,7 +58,7 @@ - @@ -829,7 +829,7 @@

    mm_modem_location_setup_syncย ()

    gboolean
     mm_modem_location_setup_sync (MMModemLocation *self,
    -                              MMModemLocationSource sources,
    +                              MMModemLocationSource sources,
                                   gboolean signal_location,
                                   GCancellable *cancellable,
                                   GError **error);
    @@ -853,7 +853,7 @@ - @@ -1457,7 +1457,7 @@

    Returns

    A MMLocation3gpp, or NULL if not available. The returned value should be freed with g_object_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -1502,7 +1502,7 @@

    Returns

    A MMLocation3gpp, or NULL if not available. The returned value should be freed with g_object_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -1597,7 +1597,7 @@

    Returns

    A MMLocationGpsNmea, or NULL if not available. The returned value should be freed with g_object_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -1642,7 +1642,7 @@

    Returns

    A MMLocationGpsNmea, or NULL if not available. The returned value should be freed with g_object_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -1737,7 +1737,7 @@

    Returns

    A MMLocationGpsRaw, or NULL if not available. The returned value should be freed with g_object_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -1782,7 +1782,7 @@

    Returns

    A MMLocationGpsRaw, or NULL if not available. The returned value should be freed with g_object_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -1877,7 +1877,7 @@

    Returns

    A MMLocationCdmaBs, or NULL if not available. The returned value should be freed with g_object_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -1922,7 +1922,7 @@

    Returns

    A MMLocationCdmaBs, or NULL if not available. The returned value should be freed with g_object_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -2008,28 +2008,28 @@ - + - + - + - + @@ -2085,28 +2085,28 @@ - + - + - + - + @@ -2166,6 +2166,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMModemMessaging.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMModemMessaging.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMModemMessaging.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMModemMessaging.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -74,7 +74,7 @@ - @@ -300,7 +300,7 @@
    gboolean
     mm_modem_messaging_get_supported_storages
                                    (MMModemMessaging *self,
    -                                MMSmsStorage **storages,
    +                                MMSmsStorage **storages,
                                     guint *n_storages);

    Gets the list of SMS storages supported by the MMModem.

    @@ -320,7 +320,7 @@
    @@ -344,7 +344,7 @@

    mm_modem_messaging_get_default_storageย ()

    -
    MMSmsStorage
    +
    MMSmsStorage
     mm_modem_messaging_get_default_storage
                                    (MMModemMessaging *self);

    Gets the default SMS storage used when storing or receiving SMS messages.

    @@ -365,7 +365,7 @@

    Returns

    -

    the default MMSmsStorage.

    +

    the default MMSmsStorage.

    Since: 1.0

    @@ -467,7 +467,7 @@

    A newly created MMSms, or NULL if error is set. The returned value should be freed with g_object_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -519,7 +519,7 @@

    A newly created MMSms, or NULL if error is set. The returned value should be freed with g_object_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -767,7 +767,7 @@ is set. The returned value should be freed with g_list_free_full() using g_object_unref() as GDestroyNotify function.

    -

    [element-type ModemManager.Sms][transfer full]

    +

    [element-type ModemManager.Sms][transfer full]

    Since: 1.0

    @@ -815,7 +815,7 @@ is set. The returned value should be freed with g_list_free_full() using g_object_unref() as GDestroyNotify function.

    -

    [element-type ModemManager.Sms][transfer full]

    +

    [element-type ModemManager.Sms][transfer full]

    Since: 1.0

    @@ -831,6 +831,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMModemOma.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMModemOma.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMModemOma.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMModemOma.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -154,7 +154,7 @@ - + @@ -399,7 +399,7 @@

    mm_modem_oma_setup_syncย ()

    gboolean
     mm_modem_oma_setup_sync (MMModemOma *self,
    -                         MMOmaFeature features,
    +                         MMOmaFeature features,
                              GCancellable *cancellable,
                              GError **error);

    Synchronously sets up the OMA device management service.

    @@ -421,7 +421,7 @@ - + @@ -450,7 +450,7 @@
    void
     mm_modem_oma_start_client_initiated_session
                                    (MMModemOma *self,
    -                                MMOmaSessionType session_type,
    +                                MMOmaSessionType session_type,
                                     GCancellable *cancellable,
                                     GAsyncReadyCallback callback,
                                     gpointer user_data);
    @@ -478,7 +478,7 @@ - + @@ -554,7 +554,7 @@
    gboolean
     mm_modem_oma_start_client_initiated_session_sync
                                    (MMModemOma *self,
    -                                MMOmaSessionType session_type,
    +                                MMOmaSessionType session_type,
                                     GCancellable *cancellable,
                                     GError **error);

    Synchronously starts a client-initiated OMA device management session.

    @@ -577,7 +577,7 @@ - + @@ -909,7 +909,7 @@

    mm_modem_oma_get_featuresย ()

    -
    MMOmaFeature
    +
    MMOmaFeature
     mm_modem_oma_get_features (MMModemOma *self);

    Gets the currently enabled OMA features.

    @@ -929,14 +929,14 @@

    Returns

    -

    a bitmask of MMOmaFeature values.

    +

    a bitmask of MMOmaFeature values.

    Since: 1.2


    mm_modem_oma_get_session_typeย ()

    -
    MMOmaSessionType
    +
    MMOmaSessionType
     mm_modem_oma_get_session_type (MMModemOma *self);

    Gets the type of the current OMA device management session.

    @@ -956,14 +956,14 @@

    Since: 1.2


    mm_modem_oma_get_session_stateย ()

    -
    MMOmaSessionState
    +
    MMOmaSessionState
     mm_modem_oma_get_session_state (MMModemOma *self);

    Gets the state of the current OMA device management session.

    @@ -983,7 +983,7 @@

    Since: 1.2

    @@ -1111,8 +1111,8 @@ - - + + @@ -1128,6 +1128,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMModemSignal.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMModemSignal.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMModemSignal.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMModemSignal.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -146,6 +146,22 @@ + + + + + + + + - + @@ -323,7 +323,7 @@

    A MMBearer, or FALSE if error is set. The returned value must be freed with g_object_ref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -356,7 +356,7 @@ - + @@ -376,7 +376,7 @@

    A MMBearer, or FALSE if error is set. The returned value must be freed with g_object_ref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -626,7 +626,7 @@

    A MMSimpleStatus, or FALSE if error is set. The returned value must be freed with g_object_ref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -672,7 +672,7 @@

    A MMSimpleStatus, or FALSE if error is set. The returned value must be freed with g_object_ref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -688,6 +688,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMModemTime.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMModemTime.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMModemTime.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMModemTime.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -157,7 +157,7 @@

    Returns

    The DBus path of the MMObject object.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -187,7 +187,7 @@

    Returns

    The DBus path of the MMObject. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -220,7 +220,7 @@

    A MMNetworkTimezone. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -253,7 +253,7 @@

    Returns

    A MMNetworkTimezone that must be freed with g_object_unref() or NULL if unknown.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -349,7 +349,7 @@

    A string containing the network time, or NULL if error is set. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -395,7 +395,7 @@

    A string containing the network time, or NULL if error is set. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -411,6 +411,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMModemVoice.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMModemVoice.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMModemVoice.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMModemVoice.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -341,7 +341,7 @@

    Returns

    The DBus path of the MMObject object.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.6

    @@ -371,7 +371,7 @@

    Returns

    The DBus path of the MMObject. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.6

    @@ -500,7 +500,7 @@

    A newly created MMCall, or NULL if error is set. The returned value should be freed with g_object_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.6

    @@ -552,7 +552,7 @@

    A newly created MMCall, or NULL if error is set. The returned value should be freed with g_object_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.6

    @@ -800,7 +800,7 @@ is set. The returned value should be freed with g_list_free_full() using g_object_unref() as GDestroyNotify function.

    -

    [element-type ModemManager.Call][transfer full]

    +

    [element-type ModemManager.Call][transfer full]

    Since: 1.6

    @@ -848,7 +848,7 @@ is set. The returned value should be freed with g_list_free_full() using g_object_unref() as GDestroyNotify function.

    -

    [element-type ModemManager.Call][transfer full]

    +

    [element-type ModemManager.Call][transfer full]

    Since: 1.6

    @@ -1732,6 +1732,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMNetworkTimezone.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMNetworkTimezone.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMNetworkTimezone.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMNetworkTimezone.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -215,6 +215,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMObject.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMObject.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMObject.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMObject.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -311,7 +311,7 @@

    Returns

    The DBus path of the MMObject object.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -340,7 +340,7 @@

    Returns

    The DBus path of the MMObject. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -375,7 +375,7 @@ does not implement the interface. Do not free the returned object, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -407,7 +407,7 @@

    A MMModem that must be freed with g_object_unref() or NULL if self does not implement the interface.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -442,7 +442,7 @@ does not implement the interface. Do not free the returned object, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -474,7 +474,7 @@

    A MMModem3gpp that must be freed with g_object_unref() or NULL if self does not implement the interface.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -510,7 +510,7 @@ implement the interface. Do not free the returned object, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -542,7 +542,7 @@

    A MMModem3gppUssd that must be freed with g_object_unref() or NULL if self does not implement the interface.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -577,7 +577,7 @@ does not implement the interface. Do not free the returned object, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -609,7 +609,7 @@

    A MMModemCdma that must be freed with g_object_unref() or NULL if self does not implement the interface.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -645,7 +645,7 @@ implement the interface. Do not free the returned object, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -677,7 +677,7 @@

    A MMModemLocation that must be freed with g_object_unref() or NULL if self does not implement the interface.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -713,7 +713,7 @@ implement the interface. Do not free the returned object, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -745,7 +745,7 @@

    A MMModemMessaging that must be freed with g_object_unref() or NULL if self does not implement the interface.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -780,7 +780,7 @@ does not implement the interface. Do not free the returned object, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -812,7 +812,7 @@

    A MMModemTime that must be freed with g_object_unref() or NULL if self does not implement the interface.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -848,7 +848,7 @@ implement the interface. Do not free the returned object, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -880,7 +880,7 @@

    A MMModemFirmware that must be freed with g_object_unref() or NULL if self does not implement the interface.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -915,7 +915,7 @@ does not implement the interface. Do not free the returned object, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.2

    @@ -947,7 +947,7 @@

    A MMModemOma that must be freed with g_object_unref() or NULL if self does not implement the interface.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.2

    @@ -983,7 +983,7 @@ implement the interface. Do not free the returned object, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -1015,7 +1015,7 @@

    A MMModemSimple that must be freed with g_object_unref() or NULL if self does not implement the interface.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -1051,7 +1051,7 @@ implement the interface. Do not free the returned object, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.2

    @@ -1083,7 +1083,7 @@

    A MMModemSignal that must be freed with g_object_unref() or NULL if self does not implement the interface.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.2

    @@ -1119,7 +1119,7 @@ implement the interface. Do not free the returned object, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.6

    @@ -1151,7 +1151,7 @@

    A MMModemVoice that must be freed with g_object_unref() or NULL if self does not implement the interface.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.6

    @@ -1167,6 +1167,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMPco.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMPco.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMPco.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMPco.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -188,7 +188,7 @@

    Returns

    the PCO data, or NULL if it doesn't contain any.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.10

    @@ -215,7 +215,7 @@ - +
    -MMModemFirmwareUpdateMethod +MMModemFirmwareUpdateMethod mm_firmware_update_settings_get_methodย () @@ -106,7 +106,7 @@

    Gets the AT command that should be sent to the module to trigger a reset into fastboot mode.

    Only applicable if the update method includes -MM_MODEM_FIRMWARE_UPDATE_METHOD_FASTBOOT.

    +MM_MODEM_FIRMWARE_UPDATE_METHOD_FASTBOOT.

    Parameters

    @@ -133,7 +133,7 @@

    mm_firmware_update_settings_get_methodย ()

    -
    MMModemFirmwareUpdateMethod
    +
    MMModemFirmwareUpdateMethod
     mm_firmware_update_settings_get_method
                                    (MMFirmwareUpdateSettings *self);

    Gets the methods to use during the firmware update operation.

    @@ -154,7 +154,7 @@

    Returns

    -

    a bitmask of MMModemFirmwareUpdateMethod values.

    +

    a bitmask of MMModemFirmwareUpdateMethod values.

    Since: 1.10

    @@ -186,7 +186,7 @@

    The list of device ids, or NULL if unknown. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.10

    @@ -232,6 +232,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMKernelEventProperties.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMKernelEventProperties.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMKernelEventProperties.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMKernelEventProperties.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -148,7 +148,7 @@

    Returns

    a MMKernelEventProperties. The returned value should be freed with g_object_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.8

    @@ -178,7 +178,7 @@

    The action. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.8

    @@ -239,7 +239,7 @@

    The name. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.8

    @@ -301,7 +301,7 @@

    The subsystem. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.8

    @@ -363,7 +363,7 @@

    The uid. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.8

    @@ -410,6 +410,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMLocation3gpp.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMLocation3gpp.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMLocation3gpp.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMLocation3gpp.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -265,6 +265,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMLocationCdmaBs.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMLocationCdmaBs.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMLocationCdmaBs.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMLocationCdmaBs.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -153,6 +153,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMLocationGpsNmea.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMLocationGpsNmea.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMLocationGpsNmea.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMLocationGpsNmea.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -156,7 +156,7 @@

    Returns

    The list of traces, or NULL if none available. The returned value should be freed with g_strfreev().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.14

    @@ -191,7 +191,7 @@

    Returns

    a string containing all traces, or NULL if none available. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -207,6 +207,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMLocationGpsRaw.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMLocationGpsRaw.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMLocationGpsRaw.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMLocationGpsRaw.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -224,6 +224,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMManager.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMManager.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMManager.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMManager.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -274,7 +274,7 @@ , or NULL if none. Do not free the returned object, it is owned by manager .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -305,7 +305,7 @@

    The GDBusProxy interface of manager , or NULL if none. The returned object must be freed with g_object_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -400,7 +400,7 @@

    The constructed object manager client or NULL if error is set.

    -

    [transfer full][type MMManager]

    +

    [transfer full][type MMManager]

    Since: 1.0

    @@ -452,7 +452,7 @@

    The constructed object manager client or NULL if error is set.

    -

    [transfer full][type MMManager]

    +

    [transfer full][type MMManager]

    Since: 1.0

    @@ -483,7 +483,7 @@

    The version, or NULL if none available. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -1270,6 +1270,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMModem.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMModem.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMModem.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMModem.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -58,7 +58,7 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -860,7 +931,7 @@

    The DBus path of the MMObject object. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -890,14 +961,14 @@

    Returns

    The DBus path of the MMObject. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0


    mm_modem_get_stateย ()

    -
    MMModemState
    +
    MMModemState
     mm_modem_get_state (MMModem *self);

    Gets the overall state of the MMModem.

    @@ -917,16 +988,16 @@

    Returns

    -

    A MMModemState value.

    +

    A MMModemState value.

    Since: 1.0


    mm_modem_get_state_failed_reasonย ()

    -
    MMModemStateFailedReason
    +
    MMModemStateFailedReason
     mm_modem_get_state_failed_reason (MMModem *self);
    -

    Gets the reason specifying why the modem is in MM_MODEM_STATE_FAILED state.

    +

    Gets the reason specifying why the modem is in MM_MODEM_STATE_FAILED state.

    Parameters

    -MMModemState +MMModemState mm_modem_get_stateย () @@ -66,7 +66,7 @@
    -MMModemStateFailedReason +MMModemStateFailedReason mm_modem_get_state_failed_reasonย () @@ -74,7 +74,7 @@
    -MMModemPowerState +MMModemPowerState mm_modem_get_power_stateย () @@ -98,7 +98,7 @@
    -MMModemCapability +MMModemCapability mm_modem_get_current_capabilitiesย () @@ -302,7 +302,7 @@
    -MMModemLock +MMModemLock mm_modem_get_unlock_requiredย () @@ -428,7 +428,7 @@
    -MMBearerIpFamily +MMBearerIpFamily mm_modem_get_supported_ip_familiesย () @@ -444,7 +444,7 @@
    -MMModemAccessTechnology +MMModemAccessTechnology mm_modem_get_access_technologiesย () @@ -490,6 +490,77 @@
    const gcharย * const * + +mm_modem_get_sim_slot_pathsย () +
    +gcharย ** + +mm_modem_dup_sim_slot_pathsย () +
    +guint + +mm_modem_get_primary_sim_slotย () +
    +void + +mm_modem_list_sim_slotsย () +
    +GPtrArrayย * + +mm_modem_list_sim_slots_finishย () +
    +GPtrArrayย * + +mm_modem_list_sim_slots_syncย () +
    +void + +mm_modem_set_primary_sim_slotย () +
    +gboolean + +mm_modem_set_primary_sim_slot_finishย () +
    +gboolean + +mm_modem_set_primary_sim_slot_syncย () +
    void
    @@ -944,14 +1015,14 @@

    Returns

    -

    A MMModemStateFailedReason value.

    +

    A MMModemStateFailedReason value.

    Since: 1.0


    mm_modem_get_power_stateย ()

    -
    MMModemPowerState
    +
    MMModemPowerState
     mm_modem_get_power_state (MMModem *self);

    Gets the power state of the MMModem.

    @@ -971,7 +1042,7 @@

    Returns

    -

    A MMModemPowerState value.

    +

    A MMModemPowerState value.

    Since: 1.0

    @@ -980,7 +1051,7 @@

    mm_modem_peek_supported_capabilitiesย ()

    gboolean
     mm_modem_peek_supported_capabilities (MMModem *self,
    -                                      const MMModemCapability **capabilities,
    +                                      const MMModemCapability **capabilities,
                                           guint *n_capabilities);

    Gets the list of combinations of generic families of access technologies supported by this MMModem.

    @@ -1001,7 +1072,7 @@ @@ -1030,7 +1101,7 @@

    mm_modem_get_supported_capabilitiesย ()

    gboolean
     mm_modem_get_supported_capabilities (MMModem *self,
    -                                     MMModemCapability **capabilities,
    +                                     MMModemCapability **capabilities,
                                          guint *n_capabilities);

    Gets the list of combinations of generic families of access technologies supported by this MMModem.

    @@ -1051,7 +1122,7 @@ @@ -1077,7 +1148,7 @@

    mm_modem_get_current_capabilitiesย ()

    -
    MMModemCapability
    +
    MMModemCapability
     mm_modem_get_current_capabilities (MMModem *self);

    Gets the list of generic families of access technologies supported by this MMModem without a firmware reload or reinitialization.

    @@ -1098,7 +1169,7 @@

    Returns

    -

    A bitmask of MMModemCapability flags.

    +

    A bitmask of MMModemCapability flags.

    Since: 1.0

    @@ -1131,7 +1202,7 @@

    The equipment manufacturer, or NULL if none available. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -1160,7 +1231,7 @@

    Returns

    The equipment manufacturer, or NULL if none available. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -1193,7 +1264,7 @@

    The equipment model, or NULL if none available. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -1222,7 +1293,7 @@

    Returns

    The equipment model, or NULL if none available. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -1255,7 +1326,7 @@

    The equipment revision, or NULL if none available. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -1284,7 +1355,7 @@

    Returns

    The equipment revision, or NULL if none available. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -1318,7 +1389,7 @@

    The carrier configuration, or NULL if none available. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.12

    @@ -1348,7 +1419,7 @@

    Returns

    The carrier configuration, or NULL if none available. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.12

    @@ -1383,7 +1454,7 @@

    The carrier configuration revision, or NULL if none available. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.12

    @@ -1414,7 +1485,7 @@

    Returns

    The carrier configuration revision, or NULL if none available. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.12

    @@ -1447,7 +1518,7 @@

    The equipment hardware revision, or NULL if none available. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.8

    @@ -1476,7 +1547,7 @@

    Returns

    The equipment hardware revision, or NULL if none available. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.8

    @@ -1510,7 +1581,7 @@

    The drivers, or NULL if none available. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -1540,7 +1611,7 @@

    Returns

    The drivers, or NULL if none available. The returned value should be freed with g_strfreev().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -1573,7 +1644,7 @@

    The name of the plugin, or NULL if none available. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -1602,7 +1673,7 @@

    Returns

    The name of the plugin, or NULL if none available. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -1635,7 +1706,7 @@

    The name of the primary port. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -1664,7 +1735,7 @@

    Returns

    The name of the primary port. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -1696,7 +1767,7 @@ array of MMModemPortInfo values. Do not free the returned value, it is owned by self .

    - + @@ -1791,7 +1862,7 @@

    The device, or NULL if none available. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -1821,7 +1892,7 @@

    Returns

    The device, or NULL if none available. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -1856,7 +1927,7 @@

    The equipment identifier, or NULL if none available. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -1887,7 +1958,7 @@

    Returns

    The equipment identifier, or NULL if none available. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -1927,7 +1998,7 @@

    The device identifier, or NULL if none available. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -1964,14 +2035,14 @@

    Returns

    The device identifier, or NULL if none available. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0


    mm_modem_get_unlock_requiredย ()

    -
    MMModemLock
    +
    MMModemLock
     mm_modem_get_unlock_required (MMModem *self);

    Gets current lock state of the MMModem.

    @@ -1991,7 +2062,7 @@

    Returns

    -

    A MMModemLock value, specifying the current lock state.

    +

    A MMModemLock value, specifying the current lock state.

    Since: 1.0

    @@ -2001,7 +2072,7 @@
    MMUnlockRetriesย *
     mm_modem_peek_unlock_retries (MMModem *self);

    Gets a MMUnlockRetries object, which provides, for each

    -MMModemLock handled by the modem, the +MMModemLock handled by the modem, the

    number of PIN tries remaining before the code becomes blocked (requiring a PUK) or permanently blocked.

    The returned value is only valid until the property changes so it is @@ -2027,7 +2098,7 @@

    A MMUnlockRetries. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -2037,7 +2108,7 @@
    MMUnlockRetriesย *
     mm_modem_get_unlock_retries (MMModem *self);

    Gets a MMUnlockRetries object, which provides, for each

    -MMModemLock handled by the modem, the +MMModemLock handled by the modem, the

    number of PIN tries remaining before the code becomes blocked (requiring a PUK) or permanently blocked.

    The values reported by self are not updated when the values in the @@ -2063,7 +2134,7 @@

    Returns

    A MMUnlockRetries that must be freed with g_object_unref() or NULL if unknown.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -2161,7 +2232,7 @@ MMModem, or NULL if none available. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -2191,7 +2262,7 @@

    The DBus paths of the MMBearer handled in this MMModem, or NULL if none available. The returned value should be freed with g_strfreev().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -2226,7 +2297,7 @@

    The list of own numbers or NULL if none available. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -2256,7 +2327,7 @@

    Returns

    The list of own numbers or NULL if none is available. The returned value should be freed with g_strfreev().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -2358,8 +2429,8 @@

    mm_modem_get_current_modesย ()

    gboolean
     mm_modem_get_current_modes (MMModem *self,
    -                            MMModemMode *allowed,
    -                            MMModemMode *preferred);
    + MMModemMode *allowed, + MMModemMode *preferred);

    Gets the list of modes specifying the access technologies (eg 2G/3G/4G) the MMModem is currently allowed to use when connecting to a network, as well as the preferred one, if any.

    @@ -2379,12 +2450,12 @@ - + - + @@ -2403,11 +2474,11 @@

    mm_modem_peek_supported_bandsย ()

    gboolean
     mm_modem_peek_supported_bands (MMModem *self,
    -                               const MMModemBand **bands,
    +                               const MMModemBand **bands,
                                    guint *n_bands);

    Gets the list of radio frequency and technology bands supported by the MMModem.

    -

    For POTS devices, only MM_MODEM_BAND_ANY will be returned in bands +

    For POTS devices, only MM_MODEM_BAND_ANY will be returned in bands .

    Parameters

    @@ -2426,7 +2497,7 @@
    @@ -2452,11 +2523,11 @@

    mm_modem_get_supported_bandsย ()

    gboolean
     mm_modem_get_supported_bands (MMModem *self,
    -                              MMModemBand **bands,
    +                              MMModemBand **bands,
                                   guint *n_bands);

    Gets the list of radio frequency and technology bands supported by the MMModem.

    -

    For POTS devices, only MM_MODEM_BAND_ANY will be returned in bands +

    For POTS devices, only MM_MODEM_BAND_ANY will be returned in bands .

    Parameters

    @@ -2475,7 +2546,7 @@
    @@ -2501,11 +2572,11 @@

    mm_modem_peek_current_bandsย ()

    gboolean
     mm_modem_peek_current_bands (MMModem *self,
    -                             const MMModemBand **bands,
    +                             const MMModemBand **bands,
                                  guint *n_bands);

    Gets the list of radio frequency and technology bands the MMModem is currently using when connecting to a network.

    -

    For POTS devices, only the MM_MODEM_BAND_ANY band is supported.

    +

    For POTS devices, only the MM_MODEM_BAND_ANY band is supported.

    Parameters

    capabilities

    Return location for the -array of MMModemCapability values. Do not free the returned array, it is +array of MMModemCapability values. Do not free the returned array, it is owned by self .

    [out][array length=n_capabilities]

    capabilities

    Return location for the -array of MMModemCapability values. The returned array should be freed with +array of MMModemCapability values. The returned array should be freed with g_free() when no longer needed.

    [out][array length=n_capabilities]
    [out][array length=n_ports][transfer none][out][array length=n_ports][transfer none]

    n_ports

    allowed

    Return location for a bitmask of MMModemMode values.

    Return location for a bitmask of MMModemMode values.

    [out]

    preferred

    Return location for a MMModemMode value.

    Return location for a MMModemMode value.

    [out]

    bands

    Return location for the array of -MMModemBand values. Do not free the returned array, it is owned by self +MMModemBand values. Do not free the returned array, it is owned by self .

    [out][array length=n_bands]

    bands

    Return location for the array of -MMModemBand values. The returned array should be freed with g_free() when +MMModemBand values. The returned array should be freed with g_free() when no longer needed.

    [out][array length=n_bands]
    @@ -2523,7 +2594,7 @@ @@ -2549,11 +2620,11 @@

    mm_modem_get_current_bandsย ()

    gboolean
     mm_modem_get_current_bands (MMModem *self,
    -                            MMModemBand **bands,
    +                            MMModemBand **bands,
                                 guint *n_bands);

    Gets the list of radio frequency and technology bands the MMModem is currently using when connecting to a network.

    -

    For POTS devices, only the MM_MODEM_BAND_ANY band is supported.

    +

    For POTS devices, only the MM_MODEM_BAND_ANY band is supported.

    Parameters

    bands

    Return location for the array of -MMModemBand values. Do not free the returned value, it is owned by self +MMModemBand values. Do not free the returned value, it is owned by self .

    [out][array length=n_bands]
    @@ -2571,7 +2642,7 @@ @@ -2595,7 +2666,7 @@

    mm_modem_get_supported_ip_familiesย ()

    -
    MMBearerIpFamily
    +
    MMBearerIpFamily
     mm_modem_get_supported_ip_families (MMModem *self);

    Gets the list of supported IP families.

    @@ -2615,7 +2686,7 @@

    Returns

    -

    A bitmask of MMBearerIpFamily values.

    +

    A bitmask of MMBearerIpFamily values.

    Since: 1.0

    @@ -2660,7 +2731,7 @@

    mm_modem_get_access_technologiesย ()

    -
    MMModemAccessTechnology
    +
    MMModemAccessTechnology
     mm_modem_get_access_technologies (MMModem *self);

    Gets the current network access technology used by the MMModem to communicate with the network.

    @@ -2681,7 +2752,7 @@

    Returns

    -

    A #MMModemAccessTechnology value.

    +

    A #MMModemAccessTechnology value.

    Since: 1.0

    @@ -2716,7 +2787,7 @@ MMModem, or NULL if none available. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -2746,7 +2817,7 @@

    The DBus path of the MMSim handled in this MMModem, or NULL if none available. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -2842,7 +2913,7 @@

    a MMSim or NULL if error is set. The returned value should be freed with g_object_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -2888,12 +2959,409 @@

    a MMSim or NULL if error is set. The returned value should be freed with g_object_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0


    +

    mm_modem_get_sim_slot_pathsย ()

    +
    const gcharย * const *
    +mm_modem_get_sim_slot_paths (MMModem *self);
    +

    Gets the DBus paths of the MMSim objects available in the different SIM +slots handled in this MMModem. If a given SIM slot at a given index doesn't +have a SIM card available, an empty object path will be given. This list +includes the currently active SIM object path.

    +
    The returned value is only valid until the property changes so it is +only safe to use this function on the thread where self was constructed. Use +mm_modem_dup_sim_slot_paths() if on another thread.
    +
    +

    Parameters

    +

    bands

    Return location for the array of -MMModemBand values. The returned array should be freed with g_free() when +MMModemBand values. The returned array should be freed with g_free() when no longer needed.

    [out][array length=n_bands]
    +++++ + + + + + +

    self

    A MMModem.

    ย 
    +
    +
    +

    Returns

    +

    The DBus paths of the MMSim objects handled in +this MMModem, or NULL if none available. Do not free the returned value, it +belongs to self +.

    +

    [transfer none]

    +
    +

    Since: 1.16

    + +
    +
    +

    mm_modem_dup_sim_slot_pathsย ()

    +
    gcharย **
    +mm_modem_dup_sim_slot_paths (MMModem *self);
    +

    Gets a copy of the DBus paths of the MMSim objects available in the +different SIM slots handled in this MMModem. If a given SIM slot at a given +index doesn't have a SIM card available, an empty object path will be given. +This list includes the currently active SIM object path.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    self

    A MMModem.

    ย 
    +
    +
    +

    Returns

    +

    The DBus paths of the MMSim objects handled in +this MMModem, or NULL if none available. The returned value should be +freed with g_strfreev().

    +

    [transfer full]

    +
    +

    Since: 1.16

    +
    +
    +
    +

    mm_modem_get_primary_sim_slotย ()

    +
    guint
    +mm_modem_get_primary_sim_slot (MMModem *self);
    +

    Gets the SIM slot number of the primary active SIM.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    self

    A MMModem.

    ย 
    +
    +
    +

    Returns

    +

    slot number, in the [1,N] range.

    +
    +

    Since: 1.16

    +
    +
    +
    +

    mm_modem_list_sim_slotsย ()

    +
    void
    +mm_modem_list_sim_slots (MMModem *self,
    +                         GCancellable *cancellable,
    +                         GAsyncReadyCallback callback,
    +                         gpointer user_data);
    +

    Asynchronously lists the SIM slots available in the MMModem.

    +

    The returned array contains one element per slot available in the system; +a MMSim in each of the slots that contains a valid SIM card or NULL if +no SIM card is found.

    +

    When the operation is finished, callback + will be invoked in the

    +thread-default main loop

    of the thread you are calling this method from. You can then call +mm_modem_list_sim_slots_finish() to get the result of the operation.

    +

    See mm_modem_list_sim_slots_sync() for the synchronous, blocking version of +this method.

    +
    +

    Parameters

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + +

    self

    A MMModem.

    ย 

    cancellable

    A GCancellable or NULL.

    [allow-none]

    callback

    A GAsyncReadyCallback to call when the request is satisfied or +NULL.

    ย 

    user_data

    User data to pass to callback +.

    ย 
    +
    +

    Since: 1.16

    +
    +
    +
    +

    mm_modem_list_sim_slots_finishย ()

    +
    GPtrArrayย *
    +mm_modem_list_sim_slots_finish (MMModem *self,
    +                                GAsyncResult *res,
    +                                GError **error);
    +

    Finishes an operation started with mm_modem_list_sim_slots().

    +
    +

    Parameters

    +
    +++++ + + + + + + + + + + + + + + + + + +

    self

    A MMModem.

    ย 

    res

    The GAsyncResult obtained from the GAsyncReadyCallback passed to +mm_modem_list_sim_slots().

    ย 

    error

    Return location for error or NULL.

    ย 
    +
    +
    +

    Returns

    +

    The array of +MMSim objects, or NULL if error +is set.

    +

    [transfer full][element-type ModemManager.Sim]

    +
    +

    Since: 1.16

    +
    +
    +
    +

    mm_modem_list_sim_slots_syncย ()

    +
    GPtrArrayย *
    +mm_modem_list_sim_slots_sync (MMModem *self,
    +                              GCancellable *cancellable,
    +                              GError **error);
    +

    Synchronously lists the SIM slots available in the MMModem.

    +

    The returned array contains one element per slot available in the system; +a MMSim in each of the slots that contains a valid SIM card or NULL if +no SIM card is found.

    +

    The calling thread is blocked until a reply is received. See +mm_modem_list_sim_slots() for the asynchronous version of this method.

    +
    +

    Parameters

    +
    +++++ + + + + + + + + + + + + + + + + + +

    self

    A MMModem.

    ย 

    cancellable

    A GCancellable or NULL.

    [allow-none]

    error

    Return location for error or NULL.

    ย 
    +
    +
    +

    Returns

    +

    The array of +MMSim objects, or NULL if error +is set.

    +

    [transfer full][element-type ModemManager.Sim]

    +
    +

    Since: 1.16

    +
    +
    +
    +

    mm_modem_set_primary_sim_slotย ()

    +
    void
    +mm_modem_set_primary_sim_slot (MMModem *self,
    +                               guint sim_slot,
    +                               GCancellable *cancellable,
    +                               GAsyncReadyCallback callback,
    +                               gpointer user_data);
    +

    Asynchronously requests to select which SIM slot to be considered as primary.

    +

    When the operation is finished, callback + will be invoked in the

    +thread-default main loop

    of the thread you are calling this method from. You can then call +mm_modem_set_primary_sim_slot_finish() to get the result of the operation.

    +

    See mm_modem_set_primary_sim_slot_sync() for the synchronous, blocking version of +this method.

    +
    +

    Parameters

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    self

    A MMModem.

    ย 

    sim_slot

    SIM slot number.

    ย 

    cancellable

    A GCancellable or NULL.

    [allow-none]

    callback

    A GAsyncReadyCallback to call when the request is satisfied or +NULL.

    ย 

    user_data

    User data to pass to callback +.

    ย 
    +
    +

    Since: 1.16

    +
    +
    +
    +

    mm_modem_set_primary_sim_slot_finishย ()

    +
    gboolean
    +mm_modem_set_primary_sim_slot_finish (MMModem *self,
    +                                      GAsyncResult *res,
    +                                      GError **error);
    +

    Finishes an operation started with mm_modem_set_primary_sim_slot().

    +
    +

    Parameters

    +
    +++++ + + + + + + + + + + + + + + + + + +

    self

    A MMModem.

    ย 

    res

    The GAsyncResult obtained from the GAsyncReadyCallback passed to +mm_modem_set_primary_sim_slot().

    ย 

    error

    Return location for error or NULL.

    ย 
    +
    +
    +

    Returns

    +

    TRUE if the SIM slot switch has been successfully requested, FALSE if +error +is set.

    +
    +

    Since: 1.16

    +
    +
    +
    +

    mm_modem_set_primary_sim_slot_syncย ()

    +
    gboolean
    +mm_modem_set_primary_sim_slot_sync (MMModem *self,
    +                                    guint sim_slot,
    +                                    GCancellable *cancellable,
    +                                    GError **error);
    +

    Synchronously requests to select which SIM slot to be considered as primary.

    +

    The calling thread is blocked until a reply is received. See +mm_modem_set_primary_sim_slot() for the asynchronous version of this method.

    +
    +

    Parameters

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + +

    self

    A MMModem.

    ย 

    sim_slot

    SIM slot number.

    ย 

    cancellable

    A GCancellable or NULL.

    [allow-none]

    error

    Return location for error or NULL.

    ย 
    +
    +
    +

    Returns

    +

    TRUE if the SIM slot switch has been successfully requested, FALSE if +error +is set.

    +
    +

    Since: 1.16

    +
    +
    +

    mm_modem_enableย ()

    void
     mm_modem_enable (MMModem *self,
    @@ -3179,12 +3647,12 @@
     

    mm_modem_set_power_stateย ()

    void
     mm_modem_set_power_state (MMModem *self,
    -                          MMModemPowerState state,
    +                          MMModemPowerState state,
                               GCancellable *cancellable,
                               GAsyncReadyCallback callback,
                               gpointer user_data);

    Asynchronously sets the power state of the device. This method can only be -used while the modem is in MM_MODEM_STATE_DISABLED state.

    +used while the modem is in MM_MODEM_STATE_DISABLED state.

    When the operation is finished, callback will be invoked in the

    thread-default main loop

    of the thread you are calling this method from. You can then call @@ -3207,8 +3675,8 @@

    state

    Either MM_MODEM_POWER_STATE_LOW or MM_MODEM_POWER_STATE_ON. Every -other MMModemPowerState value is not allowed.

    Either MM_MODEM_POWER_STATE_LOW or MM_MODEM_POWER_STATE_ON. Every +other MMModemPowerState value is not allowed.

    ย 

    state

    Either MM_MODEM_POWER_STATE_LOW or MM_MODEM_POWER_STATE_ON. Every -other MMModemPowerState value is not allowed.

    Either MM_MODEM_POWER_STATE_LOW or MM_MODEM_POWER_STATE_ON. Every +other MMModemPowerState value is not allowed.

    ย 

    modes

    Mask of MMModemMode values specifying which modes are allowed.

    Mask of MMModemMode values specifying which modes are allowed.

    ย 

    preferred

    A MMModemMode value specifying which of the modes given in +

    A MMModemMode value specifying which of the modes given in modes -is the preferred one, or MM_MODEM_MODE_NONE if none.

    ย 

    modes

    Mask of MMModemMode values specifying which modes are allowed.

    Mask of MMModemMode values specifying which modes are allowed.

    ย 

    preferred

    A MMModemMode value specifying which of the modes given in +

    A MMModemMode value specifying which of the modes given in modes -is the preferred one, or MM_MODEM_MODE_NONE if none.

    ย 

    bands

    An array of MMModemBand values specifying which bands are allowed.

    An array of MMModemBand values specifying which bands are allowed.

    ย 

    bands

    An array of MMModemBand values specifying which bands are allowed.

    An array of MMModemBand values specifying which bands are allowed.

    ย 

    capabilities

    A MMModemCapability mask.

    A MMModemCapability mask.

    ย 

    capabilities

    A MMModemCapability mask.

    A MMModemCapability mask.

    ย 

    MMModemModeย allowed;

    Mask of MMModemMode values specifying allowed modes.

    MMModemModeย allowed;

    Mask of MMModemMode values specifying allowed modes.

    ย 

    MMModemModeย preferred;

    A single MMModemMode value specifying the preferred mode.

    MMModemModeย preferred;

    A single MMModemMode value specifying the preferred mode.

    ย 
    ย 

    MMModemPortTypeย type;

    A MMModemPortType value.

    MMModemPortTypeย type;

    A MMModemPortType value.

    ย 
    -MMModemAccessTechnology +MMModemAccessTechnology mm_modem_3gpp_network_get_access_technologyย () @@ -72,7 +72,7 @@
    -MMModem3gppNetworkAvailability +MMModem3gppNetworkAvailability mm_modem_3gpp_network_get_availabilityย () @@ -148,7 +148,7 @@
    -MMModem3gppFacility +MMModem3gppFacility mm_modem_3gpp_get_enabled_facility_locksย () @@ -156,7 +156,7 @@
    -MMModem3gppRegistrationState +MMModem3gppRegistrationState mm_modem_3gpp_get_registration_stateย () @@ -164,7 +164,7 @@
    -MMModem3gppSubscriptionState +MMModem3gppSubscriptionState mm_modem_3gpp_get_subscription_stateย () @@ -180,7 +180,7 @@
    -MMModem3gppEpsUeModeOperation +MMModem3gppEpsUeModeOperation mm_modem_3gpp_get_eps_ue_mode_operationย () @@ -380,8 +380,8 @@

    The MMModem3gpp is an object providing access to the methods, signals and properties of the 3GPP interface.

    The 3GPP interface is exposed whenever a modem has any of the 3GPP -capabilities (MM_MODEM_CAPABILITY_GSM_UMTS, MM_MODEM_CAPABILITY_LTE -or MM_MODEM_CAPABILITY_5GNR).

    +capabilities (MM_MODEM_CAPABILITY_GSM_UMTS, MM_MODEM_CAPABILITY_LTE +or MM_MODEM_CAPABILITY_5GNR).

    Functions

    @@ -409,7 +409,7 @@

    Returns

    The operator code, or NULL if none available.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -438,7 +438,7 @@

    Returns

    The long operator name, or NULL if none available.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -467,14 +467,14 @@

    Returns

    The long operator name, or NULL if none available.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0


    mm_modem_3gpp_network_get_access_technologyย ()

    -
    MMModemAccessTechnology
    +
    MMModemAccessTechnology
     mm_modem_3gpp_network_get_access_technology
                                    (const MMModem3gppNetwork *network);

    Get the technology used to access the 3GPP network.

    @@ -495,14 +495,14 @@

    Since: 1.0


    mm_modem_3gpp_network_get_availabilityย ()

    -
    MMModem3gppNetworkAvailability
    +
    MMModem3gppNetworkAvailability
     mm_modem_3gpp_network_get_availability
                                    (const MMModem3gppNetwork *network);

    Get availability of the 3GPP network.

    @@ -523,7 +523,7 @@

    Since: 1.0

    @@ -574,7 +574,7 @@

    Returns

    The DBus path of the MMObject object.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -604,7 +604,7 @@

    Returns

    The DBus path of the MMObject. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -637,7 +637,7 @@

    Returns

    The IMEI, or NULL if none available.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -667,7 +667,7 @@

    Returns

    The IMEI, or NULL if none available. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -706,7 +706,7 @@

    Returns

    The operator code, or NULL if none available.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -740,7 +740,7 @@

    Returns

    The operator code, or NULL if none available. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -773,7 +773,7 @@

    Returns

    The operator name, or NULL if none available.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -803,14 +803,14 @@

    Returns

    The operator name, or NULL if none available. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0


    mm_modem_3gpp_get_enabled_facility_locksย ()

    -
    MMModem3gppFacility
    +
    MMModem3gppFacility
     mm_modem_3gpp_get_enabled_facility_locks
                                    (MMModem3gpp *self);

    Get the list of facilities for which PIN locking is enabled.

    @@ -831,7 +831,7 @@

    Returns

    -

    A bitmask of MMModem3gppFacility flags, specifying which facilities +

    A bitmask of MMModem3gppFacility flags, specifying which facilities have locks enabled.

    Since: 1.0

    @@ -839,7 +839,7 @@

    mm_modem_3gpp_get_registration_stateย ()

    -
    MMModem3gppRegistrationState
    +
    MMModem3gppRegistrationState
     mm_modem_3gpp_get_registration_state (MMModem3gpp *self);

    Get the the mobile registration status as defined in 3GPP TS 27.007 section 10.1.19.

    @@ -860,7 +860,7 @@

    Returns

    -

    A MMModem3gppRegistrationState value, specifying the current +

    A MMModem3gppRegistrationState value, specifying the current registration state.

    Since: 1.0

    @@ -868,7 +868,7 @@

    mm_modem_3gpp_get_subscription_stateย ()

    -
    MMModem3gppSubscriptionState
    +
    MMModem3gppSubscriptionState
     mm_modem_3gpp_get_subscription_state (MMModem3gpp *self);

    mm_modem_3gpp_get_subscription_state has been deprecated since version 1.10.0. and should not be used in newly-written code.

    @@ -898,7 +898,7 @@

    Returns

    -

    A MMModem3gppSubscriptionState value, specifying the current +

    A MMModem3gppSubscriptionState value, specifying the current subscription state.

    Since: 1.0

    @@ -930,14 +930,14 @@ objects, or NULL if error is set. The returned value should be freed with g_list_free_full() using g_object_unref() as GDestroyNotify function.

    -

    [transfer full][element-type ModemManager.Pco]

    +

    [transfer full][element-type ModemManager.Pco]

    Since: 1.10


    mm_modem_3gpp_get_eps_ue_mode_operationย ()

    -
    MMModem3gppEpsUeModeOperation
    +
    MMModem3gppEpsUeModeOperation
     mm_modem_3gpp_get_eps_ue_mode_operation
                                    (MMModem3gpp *self);

    Get the UE mode of operation for EPS.

    @@ -958,7 +958,7 @@

    Since: 1.8

    @@ -994,7 +994,7 @@

    The DBus path of the MMBearer, or NULL if none available. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.10

    @@ -1025,7 +1025,7 @@

    Returns

    The DBus path of the MMBearer, or NULL if none available. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.10

    @@ -1124,7 +1124,7 @@

    a MMSim or NULL if error is set. The returned value should be freed with g_object_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.10

    @@ -1173,7 +1173,7 @@

    a MMBearer or NULL if error is set. The returned value should be freed with g_object_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.10

    @@ -1208,7 +1208,7 @@

    Returns

    A MMBearerProperties that must be freed with g_object_unref() or NULL if unknown.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.10

    @@ -1244,7 +1244,7 @@

    A MMBearerProperties. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.10

    @@ -1494,7 +1494,7 @@ is set. The returned value should be freed with g_list_free_full() using mm_modem_3gpp_network_free() as GDestroyNotify function.

    -

    [transfer full][element-type ModemManager.Modem3gppNetwork]

    +

    [transfer full][element-type ModemManager.Modem3gppNetwork]

    Since: 1.0

    @@ -1542,7 +1542,7 @@ is set. The returned value should be freed with g_list_free_full() using mm_modem_3gpp_network_free() as GDestroyNotify function.

    -

    [transfer full][element-type ModemManager.Modem3gppNetwork]

    +

    [transfer full][element-type ModemManager.Modem3gppNetwork]

    Since: 1.0

    @@ -1552,7 +1552,7 @@
    void
     mm_modem_3gpp_set_eps_ue_mode_operation
                                    (MMModem3gpp *self,
    -                                MMModem3gppEpsUeModeOperation mode,
    +                                MMModem3gppEpsUeModeOperation mode,
                                     GCancellable *cancellable,
                                     GAsyncReadyCallback callback,
                                     gpointer user_data);
    @@ -1581,7 +1581,7 @@

    mode

    A MMModem3gppEpsUeModeOperation.

    A MMModem3gppEpsUeModeOperation.

    ย 

    mode

    A MMModem3gppEpsUeModeOperation.

    A MMModem3gppEpsUeModeOperation.

    ย 
    -MMModem3gppUssdSessionState +MMModem3gppUssdSessionState mm_modem_3gpp_ussd_get_stateย () @@ -227,7 +227,7 @@

    Returns

    The DBus path of the MMObject object.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -257,14 +257,14 @@

    Returns

    The DBus path of the MMObject. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0


    mm_modem_3gpp_ussd_get_stateย ()

    -
    MMModem3gppUssdSessionState
    +
    MMModem3gppUssdSessionState
     mm_modem_3gpp_ussd_get_state (MMModem3gppUssd *self);

    Get the state of the ongoing USSD session, if any.

    @@ -284,7 +284,7 @@

    Returns

    -

    A MMModem3gppUssdSessionState value, specifying the current state.

    +

    A MMModem3gppUssdSessionState value, specifying the current state.

    Since: 1.0

    @@ -317,7 +317,7 @@

    Returns

    The network request, or NULL if none available.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -347,7 +347,7 @@

    Returns

    The network request, or NULL if none available. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -381,7 +381,7 @@

    Returns

    The network notification, or NULL if none available.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -412,7 +412,7 @@

    Returns

    The network notification, or NULL if none available. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -886,6 +886,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMModemCdma.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMModemCdma.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMModemCdma.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMModemCdma.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -104,7 +104,7 @@
    -MMModemCdmaRegistrationState +MMModemCdmaRegistrationState mm_modem_cdma_get_cdma1x_registration_stateย () @@ -112,7 +112,7 @@
    -MMModemCdmaRegistrationState +MMModemCdmaRegistrationState mm_modem_cdma_get_evdo_registration_stateย () @@ -120,7 +120,7 @@
    -MMModemCdmaActivationState +MMModemCdmaActivationState mm_modem_cdma_get_activation_stateย () @@ -219,7 +219,7 @@

    The MMModemCdma is an object providing access to the methods, signals and properties of the CDMA interface.

    The CDMA interface is exposed whenever a modem has CDMA capabilities -(MM_MODEM_CAPABILITY_CDMA_EVDO).

    +(MM_MODEM_CAPABILITY_CDMA_EVDO).

    Functions

    @@ -246,7 +246,7 @@

    Returns

    The DBus path of the MMObject object.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -276,7 +276,7 @@

    Returns

    The DBus path of the MMObject. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -310,7 +310,7 @@

    Returns

    The ESN, or NULL if none available.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -342,7 +342,7 @@

    Returns

    The ESN, or NULL if none available. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -375,7 +375,7 @@

    Returns

    The MEID, or NULL if none available.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -406,7 +406,7 @@

    Returns

    The MEID, or NULL if none available. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -471,7 +471,7 @@

    mm_modem_cdma_get_cdma1x_registration_stateย ()

    -
    MMModemCdmaRegistrationState
    +
    MMModemCdmaRegistrationState
     mm_modem_cdma_get_cdma1x_registration_state
                                    (MMModemCdma *self);

    Gets the state of the registration in the CDMA 1x network.

    @@ -492,14 +492,14 @@

    Since: 1.0


    mm_modem_cdma_get_evdo_registration_stateย ()

    -
    MMModemCdmaRegistrationState
    +
    MMModemCdmaRegistrationState
     mm_modem_cdma_get_evdo_registration_state
                                    (MMModemCdma *self);

    Gets the state of the registration in the EV-DO network.

    @@ -520,14 +520,14 @@

    Since: 1.0


    mm_modem_cdma_get_activation_stateย ()

    -
    MMModemCdmaActivationState
    +
    MMModemCdmaActivationState
     mm_modem_cdma_get_activation_state (MMModemCdma *self);

    Gets the state of the activation in the 3GPP2 network.

    @@ -547,7 +547,7 @@

    Since: 1.0

    @@ -880,6 +880,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMModemFirmware.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMModemFirmware.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMModemFirmware.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMModemFirmware.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -181,7 +181,7 @@

    Returns

    The DBus path of the MMObject object.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -211,7 +211,7 @@

    Returns

    The DBus path of the MMObject. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -295,14 +295,14 @@

    The selected firmware slot, or NULL if no slot is selected (such as if all slots are empty, or no slots exist). The returned value should be freed with g_object_unref().

    [out][allow-none][transfer full][out][allow-none][transfer full]

    installed

    A list of MMFirmwareProperties objects specifying the installed images. The returned value should be freed with g_list_free_full() using g_object_unref() as GDestroyNotify.

    [out][allow-none][transfer full][element-type ModemManager.FirmwareProperties][out][allow-none][transfer full][element-type ModemManager.FirmwareProperties]

    res

    The selected firmware slot, or NULL if no slot is selected (such as if all slots are empty, or no slots exist). The returned value should be freed with g_object_unref().

    [out][allow-none][transfer full][out][allow-none][transfer full]

    installed

    A list of MMFirmwareProperties objects specifying the installed images. The returned value should be freed with g_list_free_full() using g_object_unref() as GDestroyNotify.

    [out][allow-none][transfer full][element-type ModemManager.FirmwareProperties][out][allow-none][transfer full][element-type ModemManager.FirmwareProperties]

    cancellable

    -MMModemLocationSource +MMModemLocationSource mm_modem_location_get_capabilitiesย () @@ -66,7 +66,7 @@
    -MMModemLocationSource +MMModemLocationSource mm_modem_location_get_enabledย () @@ -105,7 +105,7 @@
    -MMModemLocationAssistanceDataType +MMModemLocationAssistanceDataType mm_modem_location_get_supported_assistance_dataย () @@ -417,7 +417,7 @@

    Returns

    The DBus path of the MMObject object.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -447,14 +447,14 @@

    Returns

    The DBus path of the MMObject. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0


    mm_modem_location_get_capabilitiesย ()

    -
    MMModemLocationSource
    +
    MMModemLocationSource
     mm_modem_location_get_capabilities (MMModemLocation *self);

    Gets a bitmask of the location capabilities supported by this MMModemLocation.

    @@ -475,14 +475,14 @@

    Since: 1.0


    mm_modem_location_get_enabledย ()

    -
    MMModemLocationSource
    +
    MMModemLocationSource
     mm_modem_location_get_enabled (MMModemLocation *self);

    Gets a bitmask of the location capabilities which are enabled in this MMModemLocation.

    @@ -502,7 +502,7 @@

    Since: 1.0

    @@ -586,7 +586,7 @@

    Returns

    The SUPL server address, or NULL if none available. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.6

    @@ -619,14 +619,14 @@

    The SUPL server address, or NULL if none available. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.6


    mm_modem_location_get_supported_assistance_dataย ()

    -
    MMModemLocationAssistanceDataType
    +
    MMModemLocationAssistanceDataType
     mm_modem_location_get_supported_assistance_data
                                    (MMModemLocation *self);

    Gets a bitmask of the supported assistance data types.

    @@ -647,7 +647,7 @@

    Since: 1.10

    @@ -678,7 +678,7 @@

    a NULL-terminated array of server addresses, or NULL if none available. The returned value should be freed with g_strfreev().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.10

    @@ -713,7 +713,7 @@

    a NULL-terminated array of server addresses, or NULL if none available. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.10

    @@ -722,7 +722,7 @@

    mm_modem_location_setupย ()

    void
     mm_modem_location_setup (MMModemLocation *self,
    -                         MMModemLocationSource sources,
    +                         MMModemLocationSource sources,
                              gboolean signal_location,
                              GCancellable *cancellable,
                              GAsyncReadyCallback callback,
    @@ -751,7 +751,7 @@
     

    sources

    Bitmask of MMModemLocationSource values specifying which locations +

    Bitmask of MMModemLocationSource values specifying which locations should get enabled.

    ย 

    sources

    Bitmask of MMModemLocationSource values specifying which locations +

    Bitmask of MMModemLocationSource values specifying which locations should get enabled.

    ย 

    Return location for a MMLocation3gpp if 3GPP location is requested, or NULL if not required. The returned value should be freed with g_object_unref().

    [out][allow-none][transfer full][out][allow-none][transfer full]

    location_gps_nmea

    Return location for a MMLocationGpsNmea if GPS NMEA location is requested, or NULL if not required. The returned value should be freed with g_object_unref().

    [out][allow-none][transfer full][out][allow-none][transfer full]

    location_gps_raw

    Return location for a MMLocationGpsRaw if GPS raw location is requested, or NULL if not required. The returned value should be freed with g_object_unref().

    [out][allow-none][transfer full][out][allow-none][transfer full]

    location_cdma_bs

    Return location for a MMLocationCdmaBs if CDMA Base Station location is requested, or NULL if not required. The returned value should be freed with g_object_unref().

    [out][allow-none][transfer full][out][allow-none][transfer full]

    res

    Return location for a MMLocation3gpp if 3GPP location is requested, or NULL if not required. The returned value should be freed with g_object_unref().

    [out][allow-none][transfer full][out][allow-none][transfer full]

    location_gps_nmea

    Return location for a MMLocationGpsNmea if GPS NMEA location is requested, or NULL if not required. The returned value should be freed with g_object_unref().

    [out][allow-none][transfer full][out][allow-none][transfer full]

    location_gps_raw

    Return location for a MMLocationGpsRaw if GPS raw location is requested, or NULL if not required. The returned value should be freed with g_object_unref().

    [out][allow-none][transfer full][out][allow-none][transfer full]

    location_cdma_bs

    Return location for a MMLocationCdmaBs if CDMA Base Station location is requested, or NULL if not required. The returned value should be freed with g_object_unref().

    [out][allow-none][transfer full][out][allow-none][transfer full]

    cancellable

    -MMSmsStorage +MMSmsStorage mm_modem_messaging_get_default_storageย () @@ -213,7 +213,7 @@

    Returns

    The DBus path of the MMObject object.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -243,7 +243,7 @@

    Returns

    The DBus path of the MMObject. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -253,7 +253,7 @@
    gboolean
     mm_modem_messaging_peek_supported_storages
                                    (MMModemMessaging *self,
    -                                const MMSmsStorage **storages,
    +                                const MMSmsStorage **storages,
                                     guint *n_storages);

    Gets the list of SMS storages supported by the MMModem.

    @@ -272,7 +272,7 @@

    storages

    Return location for the array of MMSmsStorage values. Do +

    Return location for the array of MMSmsStorage values. Do not free the returned array, it is owned by self .

    [out]

    storages

    Return location for the array of -MMSmsStorage values. The returned array should be freed with g_free() when +MMSmsStorage values. The returned array should be freed with g_free() when no longer needed.

    [out][array length=n_storages]
    -MMOmaFeature +MMOmaFeature mm_modem_oma_get_featuresย () @@ -162,7 +162,7 @@
    -MMOmaSessionType +MMOmaSessionType mm_modem_oma_get_session_typeย () @@ -170,7 +170,7 @@
    -MMOmaSessionState +MMOmaSessionState mm_modem_oma_get_session_stateย () @@ -260,7 +260,7 @@

    Returns

    The DBus path of the MMObject object.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.2

    @@ -290,7 +290,7 @@

    Returns

    The DBus path of the MMObject. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.2

    @@ -299,7 +299,7 @@

    mm_modem_oma_setupย ()

    void
     mm_modem_oma_setup (MMModemOma *self,
    -                    MMOmaFeature features,
    +                    MMOmaFeature features,
                         GCancellable *cancellable,
                         GAsyncReadyCallback callback,
                         gpointer user_data);
    @@ -326,7 +326,7 @@

    features

    Mask of MMOmaFeature values to enable.

    Mask of MMOmaFeature values to enable.

    ย 

    features

    Mask of MMOmaFeature values to enable.

    Mask of MMOmaFeature values to enable.

    ย 

    session_type

    A MMOmaSessionType.

    A MMOmaSessionType.

    ย 

    session_type

    A MMOmaSessionType.

    A MMOmaSessionType.

    ย 

    MMOmaSessionTypeย session_type;

    A MMOmaSessionType.

    MMOmaSessionTypeย session_type;

    A MMOmaSessionType.

    ย 
    +MMSignalย * + +mm_modem_signal_peek_nr5gย () +
    +MMSignalย * + +mm_modem_signal_get_nr5gย () +
    void @@ -230,7 +246,7 @@

    Returns

    The DBus path of the MMObject object.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.2

    @@ -260,7 +276,7 @@

    Returns

    The DBus path of the MMObject. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.2

    @@ -320,7 +336,7 @@

    A MMSignal. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.2

    @@ -353,7 +369,7 @@

    Returns

    A MMSignal that must be freed with g_object_unref() or NULL if unknown.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.2

    @@ -386,7 +402,7 @@

    A MMSignal. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.2

    @@ -419,7 +435,7 @@

    Returns

    A MMSignal that must be freed with g_object_unref() or NULL if unknown.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.2

    @@ -452,7 +468,7 @@

    A MMSignal. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.2

    @@ -485,7 +501,7 @@

    Returns

    A MMSignal that must be freed with g_object_unref() or NULL if unknown.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.2

    @@ -518,7 +534,7 @@

    A MMSignal. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.2

    @@ -551,7 +567,7 @@

    Returns

    A MMSignal that must be freed with g_object_unref() or NULL if unknown.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.2

    @@ -584,7 +600,7 @@

    A MMSignal. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.2

    @@ -617,12 +633,78 @@

    Returns

    A MMSignal that must be freed with g_object_unref() or NULL if unknown.

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.2


    +

    mm_modem_signal_peek_nr5gย ()

    +
    MMSignalย *
    +mm_modem_signal_peek_nr5g (MMModemSignal *self);
    +

    Gets a MMSignal object specifying the 5G signal information.

    +
    The returned value is only valid until the property changes so it is +only safe to use this function on the thread where self was constructed. Use +mm_modem_signal_get_nr5g() if on another thread.
    +
    +

    Parameters

    +
    +++++ + + + + + +

    self

    A MMModem.

    ย 
    +
    +
    +

    Returns

    +

    A MMSignal. Do not free the returned value, it +belongs to self +.

    +

    [transfer none]

    +
    +

    Since: 1.16

    +
    +
    +
    +

    mm_modem_signal_get_nr5gย ()

    +
    MMSignalย *
    +mm_modem_signal_get_nr5g (MMModemSignal *self);
    +

    Gets a MMSignal object specifying the 5G signal information.

    +
    The values reported by self are not updated when the values in the +interface change. Instead, the client is expected to call +mm_modem_signal_get_nr5g() again to get a new MMSignal with the new values. +
    +
    +

    Parameters

    +
    +++++ + + + + + +

    self

    A MMModem.

    ย 
    +
    +
    +

    Returns

    +

    A MMSignal that must be freed with +g_object_unref() or NULL if unknown.

    +

    [transfer full]

    +
    +

    Since: 1.16

    +
    +
    +

    mm_modem_signal_setupย ()

    void
     mm_modem_signal_setup (MMModemSignal *self,
    @@ -783,6 +865,6 @@
     
    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMModemSimple.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMModemSimple.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMModemSimple.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMModemSimple.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -163,7 +163,7 @@

    The MMModemSimple is an object providing access to the methods, signals and properties of the Simple interface.

    The Simple interface is exposed on modems which are not in -MM_MODEM_STATE_FAILED state.

    +MM_MODEM_STATE_FAILED state.

    Functions

    @@ -190,7 +190,7 @@

    Returns

    The DBus path of the MMObject object.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -220,7 +220,7 @@

    Returns

    The DBus path of the MMObject. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -258,7 +258,7 @@

    properties

    A MMSimpleConnectProperties bundle.

    [transfer none][transfer none]

    cancellable

    properties

    A MMSimpleConnectProperties bundle.

    [transfer none][transfer none]

    cancellable

    pco_list

    a GList of MMPco.

    [transfer full][element-type ModemManager.Pco][transfer full][element-type ModemManager.Pco]
    @@ -233,6 +233,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMSignal.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMSignal.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMSignal.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMSignal.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -380,6 +380,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMSim.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMSim.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMSim.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMSim.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -57,6 +57,14 @@ + +gboolean + + +mm_sim_get_activeย () + + + const gcharย * @@ -90,6 +98,21 @@ const gcharย * +mm_sim_get_eidย () + + + + +gcharย * + + +mm_sim_dup_eidย () + + + +const gcharย * + + mm_sim_get_operator_identifierย () @@ -313,7 +336,7 @@

    Returns

    The DBus path of the MMSim object.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -342,12 +365,39 @@

    Returns

    The DBus path of the MMSim object. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0


    +

    mm_sim_get_activeย ()

    +
    gboolean
    +mm_sim_get_active (MMSim *self);
    +

    Checks whether the MMSim is currently active.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    self

    A MMSim.

    ย 
    +
    +
    +

    Returns

    +

    TRUE if the SIM is active, FALSE otherwise.

    +
    +

    Since: 1.16

    +
    +
    +

    mm_sim_get_identifierย ()

    const gcharย *
     mm_sim_get_identifier (MMSim *self);
    @@ -374,7 +424,7 @@

    Returns

    The unique identifier of the MMSim object, or NULL if it couldn't be retrieved.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -404,7 +454,7 @@

    The unique identifier of the MMSim object, or NULL if it couldn't be retrieved. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -437,7 +487,7 @@

    Returns

    The IMSI of the MMSim object, or NULL if it couldn't be retrieved.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -467,12 +517,73 @@

    Returns

    The IMSI of the MMSim object, or NULL if it couldn't be retrieved. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0


    +

    mm_sim_get_eidย ()

    +
    const gcharย *
    +mm_sim_get_eid (MMSim *self);
    +

    Gets the Embedded UICC ID (or EID) of the MMSim object.

    +
    The returned value is only valid until the property changes so it is +only safe to use this function on the thread where self was constructed. Use +mm_sim_dup_eid() if on another thread.
    +
    +

    Parameters

    +
    +++++ + + + + + +

    self

    A MMSim.

    ย 
    +
    +
    +

    Returns

    +

    The EID of the MMSim object, or NULL if it +couldn't be retrieved.

    +

    [transfer none]

    +
    +

    Since: 1.16

    +
    +
    +
    +

    mm_sim_dup_eidย ()

    +
    gcharย *
    +mm_sim_dup_eid (MMSim *self);
    +

    Gets a copy of the Embedded UICC ID (EID) of the MMSim object.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    self

    A MMSim.

    ย 
    +
    +
    +

    Returns

    +

    The EID of the MMSim object, or NULL if it +couldn't be retrieved. The returned value should be freed with g_free().

    +

    [transfer full]

    +
    +

    Since: 1.16

    +
    +
    +

    mm_sim_get_operator_identifierย ()

    const gcharย *
     mm_sim_get_operator_identifier (MMSim *self);
    @@ -499,7 +610,7 @@

    Returns

    The Operator Identifier of the MMSim object, or NULL if it couldn't be retrieved.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -529,7 +640,7 @@

    The Operator Identifier of the MMSim object, or NULL if it couldn't be retrieved. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -561,7 +672,7 @@

    Returns

    The Operator Name of the MMSim object, or NULL if it couldn't be retrieved.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -590,7 +701,7 @@

    Returns

    The Operator Name of the MMSim object, or NULL if it couldn't be retrieved. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -623,7 +734,7 @@

    The emergency numbers, or NULL if none available. Do not free the returned value, it belongs to self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.12

    @@ -652,7 +763,7 @@

    Returns

    The emergency numbers, or NULL if none available. The returned value should be freed with g_strfreev().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.12

    @@ -1442,6 +1553,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMSimpleConnectProperties.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMSimpleConnectProperties.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMSimpleConnectProperties.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMSimpleConnectProperties.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -95,7 +95,7 @@ -MMBearerAllowedAuth +MMBearerAllowedAuth mm_simple_connect_properties_get_allowed_authย () @@ -141,7 +141,7 @@ -MMBearerIpFamily +MMBearerIpFamily mm_simple_connect_properties_get_ip_typeย () @@ -172,6 +172,22 @@ + +MMModemCdmaRmProtocol + + +mm_simple_connect_properties_get_rm_protocolย () + + + + +void + + +mm_simple_connect_properties_set_rm_protocolย () + + + const gcharย * @@ -225,7 +241,7 @@

    Returns

    a MMSimpleConnectProperties. The returned value should be freed with g_object_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -255,7 +271,7 @@

    the PIN, or NULL if not set. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -317,7 +333,7 @@

    the operator ID, or NULL if not set. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -379,7 +395,7 @@

    the access point, or NULL if not set. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -417,7 +433,7 @@

    mm_simple_connect_properties_get_allowed_authย ()

    -
    MMBearerAllowedAuth
    +
    MMBearerAllowedAuth
     mm_simple_connect_properties_get_allowed_auth
                                    (MMSimpleConnectProperties *self);

    Gets the authentication methods allowed in the connection.

    @@ -438,8 +454,8 @@

    Returns

    -

    a bitmask of MMBearerAllowedAuth values, or -MM_BEARER_ALLOWED_AUTH_UNKNOWN to request the modem-default method.

    +

    a bitmask of MMBearerAllowedAuth values, or +MM_BEARER_ALLOWED_AUTH_UNKNOWN to request the modem-default method.

    Since: 1.0

    @@ -449,7 +465,7 @@
    void
     mm_simple_connect_properties_set_allowed_auth
                                    (MMSimpleConnectProperties *self,
    -                                MMBearerAllowedAuth allowed_auth);
    + MMBearerAllowedAuth allowed_auth);

    Sets the authentication method to use.

    Parameters

    @@ -467,8 +483,8 @@

    allowed_auth

    -

    a bitmask of MMBearerAllowedAuth values. -MM_BEARER_ALLOWED_AUTH_UNKNOWN may be given to request the modem-default method.

    +

    a bitmask of MMBearerAllowedAuth values. +MM_BEARER_ALLOWED_AUTH_UNKNOWN may be given to request the modem-default method.

    ย  @@ -502,7 +518,7 @@

    the username, or NULL if not set. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -564,7 +580,7 @@

    the password, or NULL if not set. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -603,7 +619,7 @@

    mm_simple_connect_properties_get_ip_typeย ()

    -
    MMBearerIpFamily
    +
    MMBearerIpFamily
     mm_simple_connect_properties_get_ip_type
                                    (MMSimpleConnectProperties *self);

    Sets the IP type to use.

    @@ -624,7 +640,7 @@

    Since: 1.0

    @@ -634,7 +650,7 @@
    void
     mm_simple_connect_properties_set_ip_type
                                    (MMSimpleConnectProperties *self,
    -                                MMBearerIpFamily ip_type);
    + MMBearerIpFamily ip_type);

    Sets the IP type to use.

    Parameters

    @@ -652,7 +668,7 @@

    ip_type

    -

    a MMBearerIpFamily.

    +

    a MMBearerIpFamily.

    ย  @@ -723,6 +739,66 @@

    +

    mm_simple_connect_properties_get_rm_protocolย ()

    +
    MMModemCdmaRmProtocol
    +mm_simple_connect_properties_get_rm_protocol
    +                               (MMSimpleConnectProperties *self);
    +

    Get the RM protocol requested by the user.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    self

    a MMSimpleConnectProperties.

    ย 
    +
    +
    +

    Returns

    +

    a MMModemCdmaRmProtocol.

    +
    +

    Since: 1.16

    +
    +
    +
    +

    mm_simple_connect_properties_set_rm_protocolย ()

    +
    void
    +mm_simple_connect_properties_set_rm_protocol
    +                               (MMSimpleConnectProperties *self,
    +                                MMModemCdmaRmProtocol protocol);
    +

    Sets the RM protocol requested by the user.

    +
    +

    Parameters

    +
    +++++ + + + + + + + + + + + + +

    self

    a MMSimpleConnectProperties.

    ย 

    protocol

    a MMModemCdmaRmProtocol.

    ย 
    +
    +

    Since: 1.16

    +
    +
    +

    mm_simple_connect_properties_get_numberย ()

    const gcharย *
     mm_simple_connect_properties_get_number
    @@ -753,7 +829,7 @@
     

    the number, or NULL if not set. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -806,6 +882,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMSimpleStatus.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMSimpleStatus.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMSimpleStatus.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMSimpleStatus.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -43,7 +43,7 @@ -MMModemState +MMModemState mm_simple_status_get_stateย () @@ -59,7 +59,7 @@ -MMModemAccessTechnology +MMModemAccessTechnology mm_simple_status_get_access_technologiesย () @@ -75,7 +75,7 @@ -MMModem3gppRegistrationState +MMModem3gppRegistrationState mm_simple_status_get_3gpp_registration_stateย () @@ -97,7 +97,7 @@ -MMModem3gppSubscriptionState +MMModem3gppSubscriptionState mm_simple_status_get_3gpp_subscription_stateย () @@ -105,7 +105,7 @@ -MMModemCdmaRegistrationState +MMModemCdmaRegistrationState mm_simple_status_get_cdma_cdma1x_registration_stateย () @@ -113,7 +113,7 @@ -MMModemCdmaRegistrationState +MMModemCdmaRegistrationState mm_simple_status_get_cdma_evdo_registration_stateย () @@ -148,17 +148,17 @@ -MMModemAccessTechnology +MMModemAccessTechnology access-technologies Read / Write -MMModemCdmaRegistrationState +MMModemCdmaRegistrationState cdma-cdma1x-registration-state Read / Write -MMModemCdmaRegistrationState +MMModemCdmaRegistrationState cdma-evdo-registration-state Read / Write @@ -191,12 +191,12 @@ Read / Write -MMModem3gppRegistrationState +MMModem3gppRegistrationState m3gpp-registration-state Read / Write -MMModem3gppSubscriptionState +MMModem3gppSubscriptionState m3gpp-subscription-state Read / Write @@ -207,7 +207,7 @@ Read / Write -MMModemState +MMModemState state Read / Write @@ -244,7 +244,7 @@

    Functions

    mm_simple_status_get_stateย ()

    -
    MMModemState
    +
    MMModemState
     mm_simple_status_get_state (MMSimpleStatus *self);

    Gets the state of the modem.

    @@ -264,7 +264,7 @@

    Returns

    -

    a MMModemState.

    +

    a MMModemState.

    Since: 1.0

    @@ -307,7 +307,7 @@

    mm_simple_status_get_access_technologiesย ()

    -
    MMModemAccessTechnology
    +
    MMModemAccessTechnology
     mm_simple_status_get_access_technologies
                                    (MMSimpleStatus *self);

    Gets the currently used access technologies.

    @@ -328,7 +328,7 @@

    Returns

    -

    a bitmask of MMModemAccessTechnology values.

    +

    a bitmask of MMModemAccessTechnology values.

    Since: 1.0

    @@ -337,7 +337,7 @@

    mm_simple_status_get_current_bandsย ()

    void
     mm_simple_status_get_current_bands (MMSimpleStatus *self,
    -                                    const MMModemBand **bands,
    +                                    const MMModemBand **bands,
                                         guint *n_bands);

    Gets the currently used frequency bands.

    @@ -356,7 +356,7 @@

    bands

    -

    location for an array of MMModemBand values. Do not free the +

    location for an array of MMModemBand values. Do not free the returned value, it is owned by self .

    [out] @@ -375,7 +375,7 @@

    mm_simple_status_get_3gpp_registration_stateย ()

    -
    MMModem3gppRegistrationState
    +
    MMModem3gppRegistrationState
     mm_simple_status_get_3gpp_registration_state
                                    (MMSimpleStatus *self);

    Gets the current state of the registration in the 3GPP network.

    @@ -396,7 +396,7 @@

    Since: 1.0

    @@ -465,7 +465,7 @@

    mm_simple_status_get_3gpp_subscription_stateย ()

    -
    MMModem3gppSubscriptionState
    +
    MMModem3gppSubscriptionState
     mm_simple_status_get_3gpp_subscription_state
                                    (MMSimpleStatus *self);
    @@ -492,14 +492,14 @@

    Since: 1.0


    mm_simple_status_get_cdma_cdma1x_registration_stateย ()

    -
    MMModemCdmaRegistrationState
    +
    MMModemCdmaRegistrationState
     mm_simple_status_get_cdma_cdma1x_registration_state
                                    (MMSimpleStatus *self);

    Gets the current state of the registration in the CDMA-1x network.

    @@ -520,14 +520,14 @@

    Since: 1.0


    mm_simple_status_get_cdma_evdo_registration_stateย ()

    -
    MMModemCdmaRegistrationState
    +
    MMModemCdmaRegistrationState
     mm_simple_status_get_cdma_evdo_registration_state
                                    (MMSimpleStatus *self);

    Gets the current state of the registration in the EV-DO network.

    @@ -548,7 +548,7 @@

    Since: 1.0

    @@ -620,7 +620,7 @@

    Property Details

    The โ€œaccess-technologiesโ€ property

    -
      โ€œaccess-technologiesโ€      MMModemAccessTechnology
    +
      โ€œaccess-technologiesโ€      MMModemAccessTechnology

    Access technologies used by the modem.

    Owner: MMSimpleStatus

    Flags: Read / Write

    @@ -628,7 +628,7 @@

    The โ€œcdma-cdma1x-registration-stateโ€ property

    -
      โ€œcdma-cdma1x-registration-stateโ€ MMModemCdmaRegistrationState
    +
      โ€œcdma-cdma1x-registration-stateโ€ MMModemCdmaRegistrationState

    Registration state in the CDMA1x network.

    Owner: MMSimpleStatus

    Flags: Read / Write

    @@ -637,7 +637,7 @@

    The โ€œcdma-evdo-registration-stateโ€ property

    -
      โ€œcdma-evdo-registration-stateโ€ MMModemCdmaRegistrationState
    +
      โ€œcdma-evdo-registration-stateโ€ MMModemCdmaRegistrationState

    Registration state in the EV-DO network.

    Owner: MMSimpleStatus

    Flags: Read / Write

    @@ -694,7 +694,7 @@

    The โ€œm3gpp-registration-stateโ€ property

    -
      โ€œm3gpp-registration-stateโ€ MMModem3gppRegistrationState
    +
      โ€œm3gpp-registration-stateโ€ MMModem3gppRegistrationState

    Registration state in the 3GPP network.

    Owner: MMSimpleStatus

    Flags: Read / Write

    @@ -703,7 +703,7 @@

    The โ€œm3gpp-subscription-stateโ€ property

    -
      โ€œm3gpp-subscription-stateโ€ MMModem3gppSubscriptionState
    +
      โ€œm3gpp-subscription-stateโ€ MMModem3gppSubscriptionState

    Subscription state of the account (deprecated).

    Owner: MMSimpleStatus

    Flags: Read / Write

    @@ -722,7 +722,7 @@

    The โ€œstateโ€ property

    -
      โ€œstateโ€                    MMModemState
    +
      โ€œstateโ€                    MMModemState

    State of the modem.

    Owner: MMSimpleStatus

    Flags: Read / Write

    @@ -731,6 +731,6 @@
    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMSms.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMSms.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMSms.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMSms.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -58,7 +58,7 @@ -MMSmsState +MMSmsState mm_sms_get_stateย () @@ -66,7 +66,7 @@ -MMSmsPduType +MMSmsPduType mm_sms_get_pdu_typeย () @@ -74,7 +74,7 @@ -MMSmsStorage +MMSmsStorage mm_sms_get_storageย () @@ -158,7 +158,7 @@ -MMSmsCdmaTeleserviceId +MMSmsCdmaTeleserviceId mm_sms_get_teleservice_idย () @@ -166,7 +166,7 @@ -MMSmsCdmaServiceCategory +MMSmsCdmaServiceCategory mm_sms_get_service_categoryย () @@ -174,7 +174,7 @@ -MMSmsValidityType +MMSmsValidityType mm_sms_get_validity_typeย () @@ -344,7 +344,7 @@

    Returns

    The DBus path of the MMSms object.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -373,14 +373,14 @@

    Returns

    The DBus path of the MMSms object. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0


    mm_sms_get_stateย ()

    -
    MMSmsState
    +
    MMSmsState
     mm_sms_get_state (MMSms *self);

    Gets the state of this SMS.

    @@ -400,14 +400,14 @@

    Returns

    -

    A MMSmsState specifying the state.

    +

    A MMSmsState specifying the state.

    Since: 1.0


    mm_sms_get_pdu_typeย ()

    -
    MMSmsPduType
    +
    MMSmsPduType
     mm_sms_get_pdu_type (MMSms *self);

    Gets the PDU type on which this SMS is based.

    @@ -427,14 +427,14 @@

    Returns

    -

    A MMSmsPduType specifying the PDU type.

    +

    A MMSmsPduType specifying the PDU type.

    Since: 1.0


    mm_sms_get_storageย ()

    -
    MMSmsStorage
    +
    MMSmsStorage
     mm_sms_get_storage (MMSms *self);

    Gets the storage in which this SMS is kept.

    @@ -454,7 +454,7 @@

    Returns

    -

    A MMSmsStorage specifying the storage.

    +

    A MMSmsStorage specifying the storage.

    Since: 1.0

    @@ -486,7 +486,7 @@

    Returns

    The message text, or NULL if it doesn't contain any (e.g. contains data instead).

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -516,7 +516,7 @@

    The message text, or NULL if it doesn't contain any (e.g. contains data instead). The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -554,7 +554,7 @@

    The message data, or NULL if it doesn't contain any (e.g. contains text instead).

    -

    [transfer none][array length=data_len][element-type guint8]

    +

    [transfer none][array length=data_len][element-type guint8]

    Since: 1.0

    @@ -592,7 +592,7 @@

    The message data, or NULL if it doesn't contain any (e.g. contains text instead). The returned value should be freed with g_free().

    -

    [transfer full][array length=data_len][element-type guint8]

    +

    [transfer full][array length=data_len][element-type guint8]

    Since: 1.0

    @@ -623,7 +623,7 @@

    Returns

    The number, or NULL if it couldn't be retrieved.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -652,7 +652,7 @@

    Returns

    The number, or NULL if it couldn't be retrieved. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -684,7 +684,7 @@

    Returns

    The number of the SMSC, or NULL if it couldn't be retrieved.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -713,7 +713,7 @@

    Returns

    The number of the SMSC, or NULL if it couldn't be retrieved. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -723,7 +723,7 @@
    guint
     mm_sms_get_message_reference (MMSms *self);

    Gets the message reference of the last PDU sent/received within this SMS.

    -

    If the PDU type is MM_SMS_PDU_TYPE_STATUS_REPORT, this field identifies the +

    If the PDU type is MM_SMS_PDU_TYPE_STATUS_REPORT, this field identifies the message reference of the PDU associated to the status report.

    Parameters

    @@ -776,7 +776,7 @@

    mm_sms_get_teleservice_idย ()

    -
    MMSmsCdmaTeleserviceId
    +
    MMSmsCdmaTeleserviceId
     mm_sms_get_teleservice_id (MMSms *self);

    Gets the 3GPP2 Teleservice ID.

    @@ -796,14 +796,14 @@

    Since: 1.2


    mm_sms_get_service_categoryย ()

    -
    MMSmsCdmaServiceCategory
    +
    MMSmsCdmaServiceCategory
     mm_sms_get_service_category (MMSms *self);

    Gets the 3GPP2 Service Category.

    @@ -823,14 +823,14 @@

    Since: 1.2


    mm_sms_get_validity_typeย ()

    -
    MMSmsValidityType
    +
    MMSmsValidityType
     mm_sms_get_validity_type (MMSms *self);

    Gets the type of validity information in the SMS.

    @@ -850,7 +850,7 @@

    Returns

    -

    the validity type or MM_SMS_VALIDITY_TYPE_UNKNOWN.

    +

    the validity type or MM_SMS_VALIDITY_TYPE_UNKNOWN.

    Since: 1.0

    @@ -860,7 +860,7 @@
    guint
     mm_sms_get_validity_relative (MMSms *self);

    Gets the length of the validity period, in minutes.

    -

    Only applicable if the type of validity is MM_SMS_VALIDITY_TYPE_RELATIVE.

    +

    Only applicable if the type of validity is MM_SMS_VALIDITY_TYPE_RELATIVE.

    Parameters

    @@ -889,8 +889,8 @@ mm_sms_get_timestamp (MMSms *self);

    Gets the time when the first PDU of the SMS message arrived the SMSC, in

    ISO8601

    format.

    -

    This field is only applicable if the PDU type is MM_SMS_PDU_TYPE_DELIVER or -MM_SMS_PDU_TYPE_STATUS_REPORT.

    +

    This field is only applicable if the PDU type is MM_SMS_PDU_TYPE_DELIVER or +MM_SMS_PDU_TYPE_STATUS_REPORT.

    The returned value is only valid until the property changes so it is only safe to use this function on the thread where self was constructed. Use mm_sms_dup_timestamp() if on another thread.
    @@ -913,7 +913,7 @@

    Returns

    The timestamp, or NULL if it couldn't be retrieved.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -924,8 +924,8 @@ mm_sms_dup_timestamp (MMSms *self);

    Gets the time when the first PDU of the SMS message arrived the SMSC, in

    ISO8601

    format.

    -

    This field is only applicable if the PDU type is MM_SMS_PDU_TYPE_DELIVER or -MM_SMS_PDU_TYPE_STATUS_REPORT.

    +

    This field is only applicable if the PDU type is MM_SMS_PDU_TYPE_DELIVER or +MM_SMS_PDU_TYPE_STATUS_REPORT.

    Parameters

    @@ -945,7 +945,7 @@

    Returns

    The timestamp, or NULL if it couldn't be retrieved. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -957,7 +957,7 @@

    Gets the time when the first PDU of the SMS message left the SMSC, in

    ISO8601

    format.

    This field is only applicable if the PDU type is -MM_SMS_PDU_TYPE_STATUS_REPORT.

    +MM_SMS_PDU_TYPE_STATUS_REPORT.

    The returned value is only valid until the property changes so it is only safe to use this function on the thread where self was constructed. Use mm_sms_dup_discharge_timestamp() if on another thread.
    @@ -980,7 +980,7 @@

    Returns

    The timestamp, or NULL if it couldn't be retrieved.

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -992,7 +992,7 @@

    Gets the time when the first PDU of the SMS message left the SMSC, in

    ISO8601

    format.

    This field is only applicable if the PDU type is -MM_SMS_PDU_TYPE_STATUS_REPORT.

    +MM_SMS_PDU_TYPE_STATUS_REPORT.

    Parameters

    @@ -1012,7 +1012,7 @@

    Returns

    The timestamp, or NULL if it couldn't be retrieved. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -1023,7 +1023,7 @@ mm_sms_get_delivery_state (MMSms *self);

    Gets the delivery state of this SMS.

    This field is only applicable if the PDU type is -MM_SMS_PDU_TYPE_STATUS_REPORT.

    +MM_SMS_PDU_TYPE_STATUS_REPORT.

    Parameters

    @@ -1041,7 +1041,7 @@

    Returns

    -

    A MMSmsDeliveryState specifying the delivery state.

    +

    A MMSmsDeliveryState specifying the delivery state.

    Since: 1.0

    @@ -1216,7 +1216,7 @@

    mm_sms_storeย ()

    void
     mm_sms_store (MMSms *self,
    -              MMSmsStorage storage,
    +              MMSmsStorage storage,
                   GCancellable *cancellable,
                   GAsyncReadyCallback callback,
                   gpointer user_data);
    @@ -1243,8 +1243,8 @@ - + @@ -1317,7 +1317,7 @@

    mm_sms_store_syncย ()

    gboolean
     mm_sms_store_sync (MMSms *self,
    -                   MMSmsStorage storage,
    +                   MMSmsStorage storage,
                        GCancellable *cancellable,
                        GError **error);

    Synchronoulsy requests to store the message in the device if not already @@ -1341,8 +1341,8 @@

    - + @@ -1377,6 +1377,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMSmsProperties.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMSmsProperties.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMSmsProperties.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMSmsProperties.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -134,7 +134,7 @@ - + @@ -824,7 +824,7 @@

    mm_sms_properties_get_teleservice_idย ()

    -
    MMSmsCdmaTeleserviceId
    +
    MMSmsCdmaTeleserviceId
     mm_sms_properties_get_teleservice_id (MMSmsProperties *self);

    Gets the CDMA teleservice ID of the SMS.

    @@ -853,7 +853,7 @@

    mm_sms_properties_set_teleservice_idย ()

    void
     mm_sms_properties_set_teleservice_id (MMSmsProperties *self,
    -                                      MMSmsCdmaTeleserviceId teleservice_id);
    + MMSmsCdmaTeleserviceId teleservice_id);

    Sets the CDMA teleservice ID of the SMS.

    Parameters

    @@ -882,7 +882,7 @@

    mm_sms_properties_get_service_categoryย ()

    -
    MMSmsCdmaServiceCategory
    +
    MMSmsCdmaServiceCategory
     mm_sms_properties_get_service_category
                                    (MMSmsProperties *self);

    Gets the CDMA message service category of the SMS.

    @@ -913,7 +913,7 @@
    void
     mm_sms_properties_set_service_category
                                    (MMSmsProperties *self,
    -                                MMSmsCdmaServiceCategory service_category);
    + MMSmsCdmaServiceCategory service_category);

    Sets the CDMA service category of the SMS.

    Parameters

    @@ -951,6 +951,6 @@
    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MMUnlockRetries.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MMUnlockRetries.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MMUnlockRetries.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MMUnlockRetries.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -95,7 +95,7 @@

    Description

    The MMUnlockRetries is an object exposing the unlock retry counts for -different MMModemLock values.

    +different MMModemLock values.

    This object is retrieved from the MMModem object with either mm_modem_get_unlock_retries() or mm_modem_peek_unlock_retries().

    @@ -105,7 +105,7 @@

    mm_unlock_retries_getย ()

    guint
     mm_unlock_retries_get (MMUnlockRetries *self,
    -                       MMModemLock lock);
    + MMModemLock lock);

    Gets the unlock retries for the given lock .

    @@ -124,7 +124,7 @@
    - + @@ -140,7 +140,7 @@

    MMUnlockRetriesForeachCbย ()

    void
    -(*MMUnlockRetriesForeachCb) (MMModemLock lock,
    +(*MMUnlockRetriesForeachCb) (MMModemLock lock,
                                  guint count,
                                  gpointer user_data);

    Specifies the type of function passed to mm_unlock_retries_foreach().

    @@ -155,7 +155,7 @@
    - + @@ -235,6 +235,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusBearer.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusBearer.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusBearer.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusBearer.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -337,7 +337,7 @@

    mm_gdbus_bearer_get_interfaceย ()

    const gcharย *
     mm_gdbus_bearer_get_interface (MmGdbusBearer *object);
    -

    Gets the value of the "Interface" D-Bus property.

    +

    Gets the value of the "Interface" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_bearer_dup_interface() if on another thread.

    @@ -361,7 +361,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -369,7 +369,7 @@

    mm_gdbus_bearer_dup_interfaceย ()

    gcharย *
     mm_gdbus_bearer_dup_interface (MmGdbusBearer *object);
    -

    Gets a copy of the "Interface" D-Bus property.

    +

    Gets a copy of the "Interface" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -390,7 +390,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -398,7 +398,7 @@

    mm_gdbus_bearer_get_ip4_configย ()

    GVariantย *
     mm_gdbus_bearer_get_ip4_config (MmGdbusBearer *object);
    -

    Gets the value of the "Ip4Config" D-Bus property.

    +

    Gets the value of the "Ip4Config" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_bearer_dup_ip4_config() if on another thread.

    @@ -422,7 +422,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -430,7 +430,7 @@

    mm_gdbus_bearer_dup_ip4_configย ()

    GVariantย *
     mm_gdbus_bearer_dup_ip4_config (MmGdbusBearer *object);
    -

    Gets a copy of the "Ip4Config" D-Bus property.

    +

    Gets a copy of the "Ip4Config" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -451,7 +451,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -459,7 +459,7 @@

    mm_gdbus_bearer_get_ip6_configย ()

    GVariantย *
     mm_gdbus_bearer_get_ip6_config (MmGdbusBearer *object);
    -

    Gets the value of the "Ip6Config" D-Bus property.

    +

    Gets the value of the "Ip6Config" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_bearer_dup_ip6_config() if on another thread.

    @@ -483,7 +483,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -491,7 +491,7 @@

    mm_gdbus_bearer_dup_ip6_configย ()

    GVariantย *
     mm_gdbus_bearer_dup_ip6_config (MmGdbusBearer *object);
    -

    Gets a copy of the "Ip6Config" D-Bus property.

    +

    Gets a copy of the "Ip6Config" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -512,7 +512,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -520,7 +520,7 @@

    mm_gdbus_bearer_get_ip_timeoutย ()

    guint
     mm_gdbus_bearer_get_ip_timeout (MmGdbusBearer *object);
    -

    Gets the value of the "IpTimeout" D-Bus property.

    +

    Gets the value of the "IpTimeout" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -548,7 +548,7 @@

    mm_gdbus_bearer_get_propertiesย ()

    GVariantย *
     mm_gdbus_bearer_get_properties (MmGdbusBearer *object);
    -

    Gets the value of the "Properties" D-Bus property.

    +

    Gets the value of the "Properties" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_bearer_dup_properties() if on another thread.

    @@ -572,7 +572,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -580,7 +580,7 @@

    mm_gdbus_bearer_dup_propertiesย ()

    GVariantย *
     mm_gdbus_bearer_dup_properties (MmGdbusBearer *object);
    -

    Gets a copy of the "Properties" D-Bus property.

    +

    Gets a copy of the "Properties" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -601,7 +601,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -609,7 +609,7 @@

    mm_gdbus_bearer_get_connectedย ()

    gboolean
     mm_gdbus_bearer_get_connected (MmGdbusBearer *object);
    -

    Gets the value of the "Connected" D-Bus property.

    +

    Gets the value of the "Connected" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -637,7 +637,7 @@

    mm_gdbus_bearer_get_suspendedย ()

    gboolean
     mm_gdbus_bearer_get_suspended (MmGdbusBearer *object);
    -

    Gets the value of the "Suspended" D-Bus property.

    +

    Gets the value of the "Suspended" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -665,7 +665,7 @@

    mm_gdbus_bearer_get_bearer_typeย ()

    guint
     mm_gdbus_bearer_get_bearer_type (MmGdbusBearer *object);
    -

    Gets the value of the "BearerType" D-Bus property.

    +

    Gets the value of the "BearerType" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -693,7 +693,7 @@

    mm_gdbus_bearer_get_statsย ()

    GVariantย *
     mm_gdbus_bearer_get_stats (MmGdbusBearer *object);
    -

    Gets the value of the "Stats" D-Bus property.

    +

    Gets the value of the "Stats" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_bearer_dup_stats() if on another thread.

    @@ -717,7 +717,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -725,7 +725,7 @@

    mm_gdbus_bearer_dup_statsย ()

    GVariantย *
     mm_gdbus_bearer_dup_stats (MmGdbusBearer *object);
    -

    Gets a copy of the "Stats" D-Bus property.

    +

    Gets a copy of the "Stats" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -746,7 +746,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -757,7 +757,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Connect() D-Bus method on proxy +

    Asynchronously invokes the Connect() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -846,7 +846,7 @@ mm_gdbus_bearer_call_connect_sync (MmGdbusBearer *proxy, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Connect() D-Bus method on proxy +

    Synchronously invokes the Connect() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_bearer_call_connect() for the asynchronous version of this method.

    @@ -891,7 +891,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Disconnect() D-Bus method on proxy +

    Asynchronously invokes the Disconnect() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -981,7 +981,7 @@ mm_gdbus_bearer_call_disconnect_sync (MmGdbusBearer *proxy, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Disconnect() D-Bus method on proxy +

    Synchronously invokes the Disconnect() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_bearer_call_disconnect() for the asynchronous version of this method.

    @@ -1139,7 +1139,7 @@

    The โ€œbearer-typeโ€ property

      โ€œbearer-typeโ€              guint
    -

    Represents the D-Bus property "BearerType".

    +

    Represents the D-Bus property "BearerType".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusBearer

    Flags: Read / Write

    @@ -1149,7 +1149,7 @@

    The โ€œconnectedโ€ property

      โ€œconnectedโ€                gboolean
    -

    Represents the D-Bus property "Connected".

    +

    Represents the D-Bus property "Connected".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusBearer

    Flags: Read / Write

    @@ -1159,7 +1159,7 @@

    The โ€œinterfaceโ€ property

      โ€œinterfaceโ€                charย *
    -

    Represents the D-Bus property "Interface".

    +

    Represents the D-Bus property "Interface".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusBearer

    Flags: Read / Write

    @@ -1169,7 +1169,7 @@

    The โ€œip-timeoutโ€ property

      โ€œip-timeoutโ€               guint
    -

    Represents the D-Bus property "IpTimeout".

    +

    Represents the D-Bus property "IpTimeout".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusBearer

    Flags: Read / Write

    @@ -1179,7 +1179,7 @@

    The โ€œip4-configโ€ property

      โ€œip4-configโ€               GVariantย *
    -

    Represents the D-Bus property "Ip4Config".

    +

    Represents the D-Bus property "Ip4Config".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusBearer

    Flags: Read / Write

    @@ -1190,7 +1190,7 @@

    The โ€œip6-configโ€ property

      โ€œip6-configโ€               GVariantย *
    -

    Represents the D-Bus property "Ip6Config".

    +

    Represents the D-Bus property "Ip6Config".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusBearer

    Flags: Read / Write

    @@ -1201,7 +1201,7 @@

    The โ€œpropertiesโ€ property

      โ€œpropertiesโ€               GVariantย *
    -

    Represents the D-Bus property "Properties".

    +

    Represents the D-Bus property "Properties".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusBearer

    Flags: Read / Write

    @@ -1212,7 +1212,7 @@

    The โ€œstatsโ€ property

      โ€œstatsโ€                    GVariantย *
    -

    Represents the D-Bus property "Stats".

    +

    Represents the D-Bus property "Stats".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusBearer

    Flags: Read / Write

    @@ -1223,7 +1223,7 @@

    The โ€œsuspendedโ€ property

      โ€œsuspendedโ€                gboolean
    -

    Represents the D-Bus property "Suspended".

    +

    Represents the D-Bus property "Suspended".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusBearer

    Flags: Read / Write

    @@ -1238,7 +1238,7 @@ user_function (MmGdbusBearer *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Connect() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Connect() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_bearer_complete_connect() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1270,7 +1270,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -1281,7 +1281,7 @@ user_function (MmGdbusBearer *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Disconnect() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Disconnect() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_bearer_complete_disconnect() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1313,13 +1313,13 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusBearerProxy.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusBearerProxy.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusBearerProxy.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusBearerProxy.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -222,7 +222,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusBearerProxy]

    +

    [transfer full][type MmGdbusBearerProxy]


    @@ -324,7 +324,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusBearerProxy]

    +

    [transfer full][type MmGdbusBearerProxy]


    @@ -387,7 +387,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusBearerProxy]

    +

    [transfer full][type MmGdbusBearerProxy]


    @@ -450,7 +450,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusBearerProxy]

    +

    [transfer full][type MmGdbusBearerProxy]

    @@ -464,6 +464,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusBearerSkeleton.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusBearerSkeleton.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusBearerSkeleton.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusBearerSkeleton.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -89,7 +89,7 @@

    Returns

    The skeleton object.

    -

    [transfer full][type MmGdbusBearerSkeleton]

    +

    [transfer full][type MmGdbusBearerSkeleton]

    @@ -103,6 +103,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusCall.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusCall.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusCall.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusCall.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -447,7 +447,7 @@

    mm_gdbus_call_get_directionย ()

    gint
     mm_gdbus_call_get_direction (MmGdbusCall *object);
    -

    Gets the value of the "Direction" D-Bus property.

    +

    Gets the value of the "Direction" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -475,7 +475,7 @@

    mm_gdbus_call_get_numberย ()

    const gcharย *
     mm_gdbus_call_get_number (MmGdbusCall *object);
    -

    Gets the value of the "Number" D-Bus property.

    +

    Gets the value of the "Number" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_call_dup_number() if on another thread.

    @@ -499,7 +499,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -507,7 +507,7 @@

    mm_gdbus_call_dup_numberย ()

    gcharย *
     mm_gdbus_call_dup_number (MmGdbusCall *object);
    -

    Gets a copy of the "Number" D-Bus property.

    +

    Gets a copy of the "Number" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -528,7 +528,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -536,7 +536,7 @@

    mm_gdbus_call_get_stateย ()

    gint
     mm_gdbus_call_get_state (MmGdbusCall *object);
    -

    Gets the value of the "State" D-Bus property.

    +

    Gets the value of the "State" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -564,7 +564,7 @@

    mm_gdbus_call_get_state_reasonย ()

    gint
     mm_gdbus_call_get_state_reason (MmGdbusCall *object);
    -

    Gets the value of the "StateReason" D-Bus property.

    +

    Gets the value of the "StateReason" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -592,7 +592,7 @@

    mm_gdbus_call_dup_audio_formatย ()

    GVariantย *
     mm_gdbus_call_dup_audio_format (MmGdbusCall *object);
    -

    Gets a copy of the "AudioFormat" D-Bus property.

    +

    Gets a copy of the "AudioFormat" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -613,7 +613,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -621,7 +621,7 @@

    mm_gdbus_call_dup_audio_portย ()

    gcharย *
     mm_gdbus_call_dup_audio_port (MmGdbusCall *object);
    -

    Gets a copy of the "AudioPort" D-Bus property.

    +

    Gets a copy of the "AudioPort" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -642,7 +642,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -650,7 +650,7 @@

    mm_gdbus_call_get_audio_formatย ()

    GVariantย *
     mm_gdbus_call_get_audio_format (MmGdbusCall *object);
    -

    Gets the value of the "AudioFormat" D-Bus property.

    +

    Gets the value of the "AudioFormat" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_call_dup_audio_format() if on another thread.

    @@ -674,7 +674,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -682,7 +682,7 @@

    mm_gdbus_call_get_audio_portย ()

    const gcharย *
     mm_gdbus_call_get_audio_port (MmGdbusCall *object);
    -

    Gets the value of the "AudioPort" D-Bus property.

    +

    Gets the value of the "AudioPort" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_call_dup_audio_port() if on another thread.

    @@ -706,7 +706,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -714,7 +714,7 @@

    mm_gdbus_call_get_multipartyย ()

    gboolean
     mm_gdbus_call_get_multiparty (MmGdbusCall *object);
    -

    Gets the value of the "Multiparty" D-Bus property.

    +

    Gets the value of the "Multiparty" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -745,7 +745,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Accept() D-Bus method on proxy +

    Asynchronously invokes the Accept() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -834,7 +834,7 @@ mm_gdbus_call_call_accept_sync (MmGdbusCall *proxy, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Accept() D-Bus method on proxy +

    Synchronously invokes the Accept() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_call_call_accept() for the asynchronous version of this method.

    @@ -879,7 +879,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Start() D-Bus method on proxy +

    Asynchronously invokes the Start() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -968,7 +968,7 @@ mm_gdbus_call_call_start_sync (MmGdbusCall *proxy, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Start() D-Bus method on proxy +

    Synchronously invokes the Start() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_call_call_start() for the asynchronous version of this method.

    @@ -1013,7 +1013,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Hangup() D-Bus method on proxy +

    Asynchronously invokes the Hangup() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -1102,7 +1102,7 @@ mm_gdbus_call_call_hangup_sync (MmGdbusCall *proxy, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Hangup() D-Bus method on proxy +

    Synchronously invokes the Hangup() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_call_call_hangup() for the asynchronous version of this method.

    @@ -1148,7 +1148,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the SendDtmf() D-Bus method on proxy +

    Asynchronously invokes the SendDtmf() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -1243,7 +1243,7 @@ const gchar *arg_dtmf, GCancellable *cancellable, GError **error); -

    Synchronously invokes the SendDtmf() D-Bus method on proxy +

    Synchronously invokes the SendDtmf() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_call_call_send_dtmf() for the asynchronous version of this method.

    @@ -1294,7 +1294,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Deflect() D-Bus method on proxy +

    Asynchronously invokes the Deflect() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -1389,7 +1389,7 @@ const gchar *arg_number, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Deflect() D-Bus method on proxy +

    Synchronously invokes the Deflect() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_call_call_deflect() for the asynchronous version of this method.

    @@ -1439,7 +1439,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the JoinMultiparty() D-Bus method on proxy +

    Asynchronously invokes the JoinMultiparty() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -1530,7 +1530,7 @@ (MmGdbusCall *proxy, GCancellable *cancellable, GError **error); -

    Synchronously invokes the JoinMultiparty() D-Bus method on proxy +

    Synchronously invokes the JoinMultiparty() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_call_call_join_multiparty() for the asynchronous version of this method.

    @@ -1575,7 +1575,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the LeaveMultiparty() D-Bus method on proxy +

    Asynchronously invokes the LeaveMultiparty() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -1666,7 +1666,7 @@ (MmGdbusCall *proxy, GCancellable *cancellable, GError **error); -

    Synchronously invokes the LeaveMultiparty() D-Bus method on proxy +

    Synchronously invokes the LeaveMultiparty() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_call_call_leave_multiparty() for the asynchronous version of this method.

    @@ -1877,7 +1877,7 @@

    The โ€œaudio-formatโ€ property

      โ€œaudio-formatโ€             GVariantย *
    -

    Represents the D-Bus property "AudioFormat".

    +

    Represents the D-Bus property "AudioFormat".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusCall

    Flags: Read / Write

    @@ -1888,7 +1888,7 @@

    The โ€œaudio-portโ€ property

      โ€œaudio-portโ€               charย *
    -

    Represents the D-Bus property "AudioPort".

    +

    Represents the D-Bus property "AudioPort".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusCall

    Flags: Read / Write

    @@ -1898,7 +1898,7 @@

    The โ€œdirectionโ€ property

      โ€œdirectionโ€                int
    -

    Represents the D-Bus property "Direction".

    +

    Represents the D-Bus property "Direction".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusCall

    Flags: Read / Write

    @@ -1908,7 +1908,7 @@

    The โ€œmultipartyโ€ property

      โ€œmultipartyโ€               gboolean
    -

    Represents the D-Bus property "Multiparty".

    +

    Represents the D-Bus property "Multiparty".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusCall

    Flags: Read / Write

    @@ -1918,7 +1918,7 @@

    The โ€œnumberโ€ property

      โ€œnumberโ€                   charย *
    -

    Represents the D-Bus property "Number".

    +

    Represents the D-Bus property "Number".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusCall

    Flags: Read / Write

    @@ -1928,7 +1928,7 @@

    The โ€œstateโ€ property

      โ€œstateโ€                    int
    -

    Represents the D-Bus property "State".

    +

    Represents the D-Bus property "State".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusCall

    Flags: Read / Write

    @@ -1938,7 +1938,7 @@

    The โ€œstate-reasonโ€ property

      โ€œstate-reasonโ€             int
    -

    Represents the D-Bus property "StateReason".

    +

    Represents the D-Bus property "StateReason".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusCall

    Flags: Read / Write

    @@ -1953,7 +1953,7 @@ user_function (MmGdbusCall *object, char *arg_dtmf, gpointer user_data) -

    On the client-side, this signal is emitted whenever the D-Bus signal "DtmfReceived" is received.

    +

    On the client-side, this signal is emitted whenever the D-Bus signal "DtmfReceived" is received.

    On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.

    Parameters

    @@ -1991,7 +1991,7 @@ user_function (MmGdbusCall *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Accept() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Accept() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_call_complete_accept() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -2023,7 +2023,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -2035,7 +2035,7 @@ GDBusMethodInvocation *invocation, char *arg_number, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Deflect() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Deflect() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_call_complete_deflect() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -2072,7 +2072,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -2083,7 +2083,7 @@ user_function (MmGdbusCall *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Hangup() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Hangup() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_call_complete_hangup() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -2115,7 +2115,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -2126,7 +2126,7 @@ user_function (MmGdbusCall *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the JoinMultiparty() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the JoinMultiparty() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_call_complete_join_multiparty() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -2158,7 +2158,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -2169,7 +2169,7 @@ user_function (MmGdbusCall *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the LeaveMultiparty() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the LeaveMultiparty() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_call_complete_leave_multiparty() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -2201,7 +2201,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -2213,7 +2213,7 @@ GDBusMethodInvocation *invocation, char *arg_dtmf, gpointer user_data) -

    Signal emitted when a remote caller is invoking the SendDtmf() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the SendDtmf() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_call_complete_send_dtmf() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -2250,7 +2250,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -2261,7 +2261,7 @@ user_function (MmGdbusCall *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Start() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Start() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_call_complete_start() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -2293,7 +2293,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -2306,7 +2306,7 @@ int arg_new, guint arg_reason, gpointer user_data) -

    On the client-side, this signal is emitted whenever the D-Bus signal "StateChanged" is received.

    +

    On the client-side, this signal is emitted whenever the D-Bus signal "StateChanged" is received.

    On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.

    Parameters

    @@ -2350,6 +2350,6 @@
    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusCallProxy.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusCallProxy.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusCallProxy.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusCallProxy.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -222,7 +222,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusCallProxy]

    +

    [transfer full][type MmGdbusCallProxy]


    @@ -324,7 +324,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusCallProxy]

    +

    [transfer full][type MmGdbusCallProxy]


    @@ -386,7 +386,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusCallProxy]

    +

    [transfer full][type MmGdbusCallProxy]


    @@ -449,7 +449,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusCallProxy]

    +

    [transfer full][type MmGdbusCallProxy]

    @@ -463,6 +463,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusCallSkeleton.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusCallSkeleton.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusCallSkeleton.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusCallSkeleton.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -89,7 +89,7 @@

    Returns

    The skeleton object.

    -

    [transfer full][type MmGdbusCallSkeleton]

    +

    [transfer full][type MmGdbusCallSkeleton]

    @@ -103,6 +103,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModem.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModem.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModem.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModem.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -375,6 +375,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -864,6 +911,11 @@ + + + + + @@ -882,6 +934,11 @@ + + + + + @@ -993,6 +1050,11 @@ + + + + + @@ -1048,7 +1110,7 @@
    guint
     mm_gdbus_modem_get_access_technologies
                                    (MmGdbusModem *object);
    -

    Gets the value of the "AccessTechnologies" D-Bus property.

    +

    Gets the value of the "AccessTechnologies" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -1076,7 +1138,7 @@

    mm_gdbus_modem_get_bearersย ()

    const gcharย *const *
     mm_gdbus_modem_get_bearers (MmGdbusModem *object);
    -

    Gets the value of the "Bearers" D-Bus property.

    +

    Gets the value of the "Bearers" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_dup_bearers() if on another thread.

    @@ -1100,7 +1162,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -1108,7 +1170,7 @@

    mm_gdbus_modem_dup_bearersย ()

    gcharย **
     mm_gdbus_modem_dup_bearers (MmGdbusModem *object);
    -

    Gets a copy of the "Bearers" D-Bus property.

    +

    Gets a copy of the "Bearers" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -1129,7 +1191,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_strfreev().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -1137,7 +1199,7 @@

    mm_gdbus_modem_get_current_modesย ()

    GVariantย *
     mm_gdbus_modem_get_current_modes (MmGdbusModem *object);
    -

    Gets the value of the "CurrentModes" D-Bus property.

    +

    Gets the value of the "CurrentModes" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_dup_current_modes() if on another thread.

    @@ -1161,7 +1223,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -1169,7 +1231,7 @@

    mm_gdbus_modem_dup_current_modesย ()

    GVariantย *
     mm_gdbus_modem_dup_current_modes (MmGdbusModem *object);
    -

    Gets a copy of the "CurrentModes" D-Bus property.

    +

    Gets a copy of the "CurrentModes" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -1190,7 +1252,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -1198,7 +1260,7 @@

    mm_gdbus_modem_get_current_bandsย ()

    GVariantย *
     mm_gdbus_modem_get_current_bands (MmGdbusModem *object);
    -

    Gets the value of the "CurrentBands" D-Bus property.

    +

    Gets the value of the "CurrentBands" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_dup_current_bands() if on another thread.

    @@ -1222,7 +1284,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -1230,7 +1292,7 @@

    mm_gdbus_modem_dup_current_bandsย ()

    GVariantย *
     mm_gdbus_modem_dup_current_bands (MmGdbusModem *object);
    -

    Gets a copy of the "CurrentBands" D-Bus property.

    +

    Gets a copy of the "CurrentBands" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -1251,7 +1313,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -1260,7 +1322,7 @@
    guint
     mm_gdbus_modem_get_current_capabilities
                                    (MmGdbusModem *object);
    -

    Gets the value of the "CurrentCapabilities" D-Bus property.

    +

    Gets the value of the "CurrentCapabilities" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -1288,7 +1350,7 @@

    mm_gdbus_modem_get_deviceย ()

    const gcharย *
     mm_gdbus_modem_get_device (MmGdbusModem *object);
    -

    Gets the value of the "Device" D-Bus property.

    +

    Gets the value of the "Device" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_dup_device() if on another thread.

    @@ -1312,7 +1374,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -1320,7 +1382,7 @@

    mm_gdbus_modem_dup_deviceย ()

    gcharย *
     mm_gdbus_modem_dup_device (MmGdbusModem *object);
    -

    Gets a copy of the "Device" D-Bus property.

    +

    Gets a copy of the "Device" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -1341,7 +1403,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -1349,7 +1411,7 @@

    mm_gdbus_modem_get_device_identifierย ()

    const gcharย *
     mm_gdbus_modem_get_device_identifier (MmGdbusModem *object);
    -

    Gets the value of the "DeviceIdentifier" D-Bus property.

    +

    Gets the value of the "DeviceIdentifier" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_dup_device_identifier() if on another thread.

    @@ -1373,7 +1435,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -1381,7 +1443,7 @@

    mm_gdbus_modem_dup_device_identifierย ()

    gcharย *
     mm_gdbus_modem_dup_device_identifier (MmGdbusModem *object);
    -

    Gets a copy of the "DeviceIdentifier" D-Bus property.

    +

    Gets a copy of the "DeviceIdentifier" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -1402,7 +1464,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -1410,7 +1472,7 @@

    mm_gdbus_modem_get_driversย ()

    const gcharย *const *
     mm_gdbus_modem_get_drivers (MmGdbusModem *object);
    -

    Gets the value of the "Drivers" D-Bus property.

    +

    Gets the value of the "Drivers" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_dup_drivers() if on another thread.

    @@ -1434,7 +1496,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -1442,7 +1504,7 @@

    mm_gdbus_modem_dup_driversย ()

    gcharย **
     mm_gdbus_modem_dup_drivers (MmGdbusModem *object);
    -

    Gets a copy of the "Drivers" D-Bus property.

    +

    Gets a copy of the "Drivers" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -1463,7 +1525,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_strfreev().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -1472,7 +1534,7 @@
    const gcharย *
     mm_gdbus_modem_get_equipment_identifier
                                    (MmGdbusModem *object);
    -

    Gets the value of the "EquipmentIdentifier" D-Bus property.

    +

    Gets the value of the "EquipmentIdentifier" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_dup_equipment_identifier() if on another thread.

    @@ -1496,7 +1558,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -1505,7 +1567,7 @@
    gcharย *
     mm_gdbus_modem_dup_equipment_identifier
                                    (MmGdbusModem *object);
    -

    Gets a copy of the "EquipmentIdentifier" D-Bus property.

    +

    Gets a copy of the "EquipmentIdentifier" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -1526,7 +1588,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -1534,7 +1596,7 @@

    mm_gdbus_modem_get_manufacturerย ()

    const gcharย *
     mm_gdbus_modem_get_manufacturer (MmGdbusModem *object);
    -

    Gets the value of the "Manufacturer" D-Bus property.

    +

    Gets the value of the "Manufacturer" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_dup_manufacturer() if on another thread.

    @@ -1558,7 +1620,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -1566,7 +1628,7 @@

    mm_gdbus_modem_dup_manufacturerย ()

    gcharย *
     mm_gdbus_modem_dup_manufacturer (MmGdbusModem *object);
    -

    Gets a copy of the "Manufacturer" D-Bus property.

    +

    Gets a copy of the "Manufacturer" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -1587,7 +1649,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -1595,7 +1657,7 @@

    mm_gdbus_modem_get_max_active_bearersย ()

    guint
     mm_gdbus_modem_get_max_active_bearers (MmGdbusModem *object);
    -

    Gets the value of the "MaxActiveBearers" D-Bus property.

    +

    Gets the value of the "MaxActiveBearers" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -1623,7 +1685,7 @@

    mm_gdbus_modem_get_max_bearersย ()

    guint
     mm_gdbus_modem_get_max_bearers (MmGdbusModem *object);
    -

    Gets the value of the "MaxBearers" D-Bus property.

    +

    Gets the value of the "MaxBearers" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -1651,7 +1713,7 @@

    mm_gdbus_modem_get_modelย ()

    const gcharย *
     mm_gdbus_modem_get_model (MmGdbusModem *object);
    -

    Gets the value of the "Model" D-Bus property.

    +

    Gets the value of the "Model" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_dup_model() if on another thread.

    @@ -1675,7 +1737,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -1683,7 +1745,7 @@

    mm_gdbus_modem_dup_modelย ()

    gcharย *
     mm_gdbus_modem_dup_model (MmGdbusModem *object);
    -

    Gets a copy of the "Model" D-Bus property.

    +

    Gets a copy of the "Model" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -1704,7 +1766,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -1712,7 +1774,7 @@

    mm_gdbus_modem_get_own_numbersย ()

    const gcharย *const *
     mm_gdbus_modem_get_own_numbers (MmGdbusModem *object);
    -

    Gets the value of the "OwnNumbers" D-Bus property.

    +

    Gets the value of the "OwnNumbers" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_dup_own_numbers() if on another thread.

    @@ -1736,7 +1798,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -1744,7 +1806,7 @@

    mm_gdbus_modem_dup_own_numbersย ()

    gcharย **
     mm_gdbus_modem_dup_own_numbers (MmGdbusModem *object);
    -

    Gets a copy of the "OwnNumbers" D-Bus property.

    +

    Gets a copy of the "OwnNumbers" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -1765,7 +1827,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_strfreev().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -1773,7 +1835,7 @@

    mm_gdbus_modem_get_pluginย ()

    const gcharย *
     mm_gdbus_modem_get_plugin (MmGdbusModem *object);
    -

    Gets the value of the "Plugin" D-Bus property.

    +

    Gets the value of the "Plugin" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_dup_plugin() if on another thread.

    @@ -1797,7 +1859,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -1805,7 +1867,7 @@

    mm_gdbus_modem_dup_pluginย ()

    gcharย *
     mm_gdbus_modem_dup_plugin (MmGdbusModem *object);
    -

    Gets a copy of the "Plugin" D-Bus property.

    +

    Gets a copy of the "Plugin" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -1826,7 +1888,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -1834,7 +1896,7 @@

    mm_gdbus_modem_get_power_stateย ()

    guint
     mm_gdbus_modem_get_power_state (MmGdbusModem *object);
    -

    Gets the value of the "PowerState" D-Bus property.

    +

    Gets the value of the "PowerState" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -1862,7 +1924,7 @@

    mm_gdbus_modem_get_primary_portย ()

    const gcharย *
     mm_gdbus_modem_get_primary_port (MmGdbusModem *object);
    -

    Gets the value of the "PrimaryPort" D-Bus property.

    +

    Gets the value of the "PrimaryPort" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_dup_primary_port() if on another thread.

    @@ -1886,7 +1948,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -1894,7 +1956,7 @@

    mm_gdbus_modem_dup_primary_portย ()

    gcharย *
     mm_gdbus_modem_dup_primary_port (MmGdbusModem *object);
    -

    Gets a copy of the "PrimaryPort" D-Bus property.

    +

    Gets a copy of the "PrimaryPort" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -1915,7 +1977,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -1923,7 +1985,7 @@

    mm_gdbus_modem_get_portsย ()

    GVariantย *
     mm_gdbus_modem_get_ports (MmGdbusModem *object);
    -

    Gets the value of the "Ports" D-Bus property.

    +

    Gets the value of the "Ports" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_dup_ports() if on another thread.

    @@ -1947,7 +2009,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -1955,7 +2017,7 @@

    mm_gdbus_modem_dup_portsย ()

    GVariantย *
     mm_gdbus_modem_dup_ports (MmGdbusModem *object);
    -

    Gets a copy of the "Ports" D-Bus property.

    +

    Gets a copy of the "Ports" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -1976,7 +2038,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -1984,7 +2046,7 @@

    mm_gdbus_modem_get_revisionย ()

    const gcharย *
     mm_gdbus_modem_get_revision (MmGdbusModem *object);
    -

    Gets the value of the "Revision" D-Bus property.

    +

    Gets the value of the "Revision" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_dup_revision() if on another thread.

    @@ -2008,7 +2070,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -2016,7 +2078,7 @@

    mm_gdbus_modem_dup_revisionย ()

    gcharย *
     mm_gdbus_modem_dup_revision (MmGdbusModem *object);
    -

    Gets a copy of the "Revision" D-Bus property.

    +

    Gets a copy of the "Revision" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -2037,7 +2099,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -2046,7 +2108,7 @@
    const gcharย *
     mm_gdbus_modem_get_carrier_configuration
                                    (MmGdbusModem *object);
    -

    Gets the value of the "CarrierConfiguration" D-Bus property.

    +

    Gets the value of the "CarrierConfiguration" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_dup_carrier_configuration() if on another thread.

    @@ -2070,7 +2132,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -2079,7 +2141,7 @@
    gcharย *
     mm_gdbus_modem_dup_carrier_configuration
                                    (MmGdbusModem *object);
    -

    Gets a copy of the "CarrierConfiguration" D-Bus property.

    +

    Gets a copy of the "CarrierConfiguration" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -2100,7 +2162,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -2109,7 +2171,7 @@
    const gcharย *
     mm_gdbus_modem_get_carrier_configuration_revision
                                    (MmGdbusModem *object);
    -

    Gets the value of the "CarrierConfigurationRevision" D-Bus property.

    +

    Gets the value of the "CarrierConfigurationRevision" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_dup_carrier_configuration_revision() if on another thread.

    @@ -2133,7 +2195,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -2142,7 +2204,7 @@
    gcharย *
     mm_gdbus_modem_dup_carrier_configuration_revision
                                    (MmGdbusModem *object);
    -

    Gets a copy of the "CarrierConfigurationRevision" D-Bus property.

    +

    Gets a copy of the "CarrierConfigurationRevision" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -2163,7 +2225,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -2171,7 +2233,7 @@

    mm_gdbus_modem_get_hardware_revisionย ()

    const gcharย *
     mm_gdbus_modem_get_hardware_revision (MmGdbusModem *object);
    -

    Gets the value of the "HardwareRevision" D-Bus property.

    +

    Gets the value of the "HardwareRevision" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_dup_hardware_revision() if on another thread.

    @@ -2195,7 +2257,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -2203,7 +2265,7 @@

    mm_gdbus_modem_dup_hardware_revisionย ()

    gcharย *
     mm_gdbus_modem_dup_hardware_revision (MmGdbusModem *object);
    -

    Gets a copy of the "HardwareRevision" D-Bus property.

    +

    Gets a copy of the "HardwareRevision" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -2224,7 +2286,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -2232,7 +2294,7 @@

    mm_gdbus_modem_get_signal_qualityย ()

    GVariantย *
     mm_gdbus_modem_get_signal_quality (MmGdbusModem *object);
    -

    Gets the value of the "SignalQuality" D-Bus property.

    +

    Gets the value of the "SignalQuality" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_dup_signal_quality() if on another thread.

    @@ -2256,7 +2318,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -2264,7 +2326,7 @@

    mm_gdbus_modem_dup_signal_qualityย ()

    GVariantย *
     mm_gdbus_modem_dup_signal_quality (MmGdbusModem *object);
    -

    Gets a copy of the "SignalQuality" D-Bus property.

    +

    Gets a copy of the "SignalQuality" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -2285,7 +2347,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -2293,7 +2355,7 @@

    mm_gdbus_modem_get_simย ()

    const gcharย *
     mm_gdbus_modem_get_sim (MmGdbusModem *object);
    -

    Gets the value of the "Sim" D-Bus property.

    +

    Gets the value of the "Sim" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_dup_sim() if on another thread.

    @@ -2317,7 +2379,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -2325,7 +2387,7 @@

    mm_gdbus_modem_dup_simย ()

    gcharย *
     mm_gdbus_modem_dup_sim (MmGdbusModem *object);
    -

    Gets a copy of the "Sim" D-Bus property.

    +

    Gets a copy of the "Sim" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -2346,7 +2408,96 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]

    +
    +
    +
    +
    +

    mm_gdbus_modem_dup_sim_slotsย ()

    +
    gcharย **
    +mm_gdbus_modem_dup_sim_slots (MmGdbusModem *object);
    +

    Gets a copy of the "SimSlots" D-Bus property.

    +

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    +

    [skip]

    +
    +

    Parameters

    +

    storage

    A MMSmsStorage specifying where to store the SMS, or -MM_SMS_STORAGE_UNKNOWN to use the default.

    A MMSmsStorage specifying where to store the SMS, or +MM_SMS_STORAGE_UNKNOWN to use the default.

    ย 

    storage

    A MMSmsStorage specifying where to store the SMS, or -MM_SMS_STORAGE_UNKNOWN to use the default.

    A MMSmsStorage specifying where to store the SMS, or +MM_SMS_STORAGE_UNKNOWN to use the default.

    ย 
    -MMSmsValidityType +MMSmsValidityType mm_sms_properties_get_validity_typeย () @@ -190,7 +190,7 @@
    -MMSmsCdmaTeleserviceId +MMSmsCdmaTeleserviceId mm_sms_properties_get_teleservice_idย () @@ -206,7 +206,7 @@
    -MMSmsCdmaServiceCategory +MMSmsCdmaServiceCategory mm_sms_properties_get_service_categoryย () @@ -259,7 +259,7 @@

    Returns

    a MMSmsProperties. The returned value should be freed with g_object_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -290,7 +290,7 @@ any (e.g. contains data instead). Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -358,7 +358,7 @@

    Returns

    The message data, or NULL if it doesn't contain any (e.g. contains text instead).

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -427,7 +427,7 @@ doesn't contain any (e.g. contains text instead). Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -457,7 +457,7 @@

    A GByteArray with the message data, or NULL if it doesn't contain any (e.g. contains text instead). The returned value should be freed with g_byte_array_unref().

    -

    [transfer full]

    +

    [transfer full]

    Since: 1.0

    @@ -520,7 +520,7 @@

    The number, or NULL if it couldn't be retrieved. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -581,7 +581,7 @@

    The number of the SMSC, or NULL if it couldn't be retrieved. Do not free the returned value, it is owned by self .

    -

    [transfer none]

    +

    [transfer none]

    Since: 1.0

    @@ -619,7 +619,7 @@

    mm_sms_properties_get_validity_typeย ()

    -
    MMSmsValidityType
    +
    MMSmsValidityType
     mm_sms_properties_get_validity_type (MMSmsProperties *self);

    Gets the relative validity type the SMS.

    @@ -639,7 +639,7 @@

    Since: 1.0

    @@ -695,7 +695,7 @@

    validity

    The validity of MM_SMS_VALIDITY_TYPE_RELATIVE type.

    The validity of MM_SMS_VALIDITY_TYPE_RELATIVE type.

    ย 

    lock

    a MMModemLock.

    a MMModemLock.

    ย 

    lock

    a MMModemLock.

    a MMModemLock.

    ย 
    +gcharย ** + +mm_gdbus_modem_dup_sim_slotsย () +
    const gcharย *const * + +mm_gdbus_modem_get_sim_slotsย () +
    +guint + +mm_gdbus_modem_get_primary_sim_slotย () +
    GVariantย * @@ -714,6 +737,30 @@ void +mm_gdbus_modem_call_set_primary_sim_slotย () +
    +gboolean + +mm_gdbus_modem_call_set_primary_sim_slot_finishย () +
    +gboolean + +mm_gdbus_modem_call_set_primary_sim_slot_syncย () +
    +void + mm_gdbus_modem_call_commandย ()
    Read / Write
    guintprimary-sim-slotRead / Write
    charย * revisionRead / Write
    GStrvsim-slotsRead / Write
    int state Read / WriteRun Last
    gbooleanhandle-set-primary-sim-slotRun Last
    void state-changed Run Last
    +++++ + + + + + +

    object

    A MmGdbusModem.

    ย 
    +
    +
    +

    Returns

    +

    The property value or NULL if the property is not set. The returned value should be freed with g_strfreev().

    +

    [transfer full][nullable]

    +
    +
    +
    +
    +

    mm_gdbus_modem_get_sim_slotsย ()

    +
    const gcharย *const *
    +mm_gdbus_modem_get_sim_slots (MmGdbusModem *object);
    +

    Gets the value of the "SimSlots" D-Bus property.

    +

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    +

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object + was constructed. Use mm_gdbus_modem_dup_sim_slots() if on another thread.

    +

    [skip]

    +
    +

    Parameters

    +
    +++++ + + + + + +

    object

    A MmGdbusModem.

    ย 
    +
    +
    +

    Returns

    +

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object +.

    +

    [transfer none][nullable]

    +
    +
    +
    +
    +

    mm_gdbus_modem_get_primary_sim_slotย ()

    +
    guint
    +mm_gdbus_modem_get_primary_sim_slot (MmGdbusModem *object);
    +

    Gets the value of the "PrimarySimSlot" D-Bus property.

    +

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    +

    [skip]

    +
    +

    Parameters

    +
    +++++ + + + + + +

    object

    A MmGdbusModem.

    ย 
    +
    +
    +

    Returns

    +

    The property value.


    @@ -2355,7 +2506,7 @@
    GVariantย *
     mm_gdbus_modem_get_supported_capabilities
                                    (MmGdbusModem *object);
    -

    Gets the value of the "SupportedCapabilities" D-Bus property.

    +

    Gets the value of the "SupportedCapabilities" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_dup_supported_capabilities() if on another thread.

    @@ -2379,7 +2530,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -2388,7 +2539,7 @@
    GVariantย *
     mm_gdbus_modem_dup_supported_capabilities
                                    (MmGdbusModem *object);
    -

    Gets a copy of the "SupportedCapabilities" D-Bus property.

    +

    Gets a copy of the "SupportedCapabilities" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -2409,7 +2560,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -2417,7 +2568,7 @@

    mm_gdbus_modem_get_stateย ()

    gint
     mm_gdbus_modem_get_state (MmGdbusModem *object);
    -

    Gets the value of the "State" D-Bus property.

    +

    Gets the value of the "State" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -2446,7 +2597,7 @@
    guint
     mm_gdbus_modem_get_state_failed_reason
                                    (MmGdbusModem *object);
    -

    Gets the value of the "StateFailedReason" D-Bus property.

    +

    Gets the value of the "StateFailedReason" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -2474,7 +2625,7 @@

    mm_gdbus_modem_get_supported_bandsย ()

    GVariantย *
     mm_gdbus_modem_get_supported_bands (MmGdbusModem *object);
    -

    Gets the value of the "SupportedBands" D-Bus property.

    +

    Gets the value of the "SupportedBands" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_dup_supported_bands() if on another thread.

    @@ -2498,7 +2649,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -2506,7 +2657,7 @@

    mm_gdbus_modem_dup_supported_bandsย ()

    GVariantย *
     mm_gdbus_modem_dup_supported_bands (MmGdbusModem *object);
    -

    Gets a copy of the "SupportedBands" D-Bus property.

    +

    Gets a copy of the "SupportedBands" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -2527,7 +2678,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -2536,7 +2687,7 @@
    guint
     mm_gdbus_modem_get_supported_ip_families
                                    (MmGdbusModem *object);
    -

    Gets the value of the "SupportedIpFamilies" D-Bus property.

    +

    Gets the value of the "SupportedIpFamilies" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -2564,7 +2715,7 @@

    mm_gdbus_modem_get_supported_modesย ()

    GVariantย *
     mm_gdbus_modem_get_supported_modes (MmGdbusModem *object);
    -

    Gets the value of the "SupportedModes" D-Bus property.

    +

    Gets the value of the "SupportedModes" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_dup_supported_modes() if on another thread.

    @@ -2588,7 +2739,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -2596,7 +2747,7 @@

    mm_gdbus_modem_dup_supported_modesย ()

    GVariantย *
     mm_gdbus_modem_dup_supported_modes (MmGdbusModem *object);
    -

    Gets a copy of the "SupportedModes" D-Bus property.

    +

    Gets a copy of the "SupportedModes" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -2617,7 +2768,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -2625,7 +2776,7 @@

    mm_gdbus_modem_get_unlock_requiredย ()

    guint
     mm_gdbus_modem_get_unlock_required (MmGdbusModem *object);
    -

    Gets the value of the "UnlockRequired" D-Bus property.

    +

    Gets the value of the "UnlockRequired" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -2653,7 +2804,7 @@

    mm_gdbus_modem_get_unlock_retriesย ()

    GVariantย *
     mm_gdbus_modem_get_unlock_retries (MmGdbusModem *object);
    -

    Gets the value of the "UnlockRetries" D-Bus property.

    +

    Gets the value of the "UnlockRetries" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_dup_unlock_retries() if on another thread.

    @@ -2677,7 +2828,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -2685,7 +2836,7 @@

    mm_gdbus_modem_dup_unlock_retriesย ()

    GVariantย *
     mm_gdbus_modem_dup_unlock_retries (MmGdbusModem *object);
    -

    Gets a copy of the "UnlockRetries" D-Bus property.

    +

    Gets a copy of the "UnlockRetries" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -2706,7 +2857,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -2718,7 +2869,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Enable() D-Bus method on proxy +

    Asynchronously invokes the Enable() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -2813,7 +2964,7 @@ gboolean arg_enable, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Enable() D-Bus method on proxy +

    Synchronously invokes the Enable() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_call_enable() for the asynchronous version of this method.

    @@ -2864,7 +3015,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the SetPowerState() D-Bus method on proxy +

    Asynchronously invokes the SetPowerState() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -2961,7 +3112,7 @@ guint arg_state, GCancellable *cancellable, GError **error); -

    Synchronously invokes the SetPowerState() D-Bus method on proxy +

    Synchronously invokes the SetPowerState() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_call_set_power_state() for the asynchronous version of this method.

    @@ -3012,7 +3163,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the CreateBearer() D-Bus method on proxy +

    Asynchronously invokes the CreateBearer() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -3116,7 +3267,7 @@ gchar **out_path, GCancellable *cancellable, GError **error); -

    Synchronously invokes the CreateBearer() D-Bus method on proxy +

    Synchronously invokes the CreateBearer() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_call_create_bearer() for the asynchronous version of this method.

    @@ -3172,7 +3323,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the DeleteBearer() D-Bus method on proxy +

    Asynchronously invokes the DeleteBearer() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -3269,7 +3420,7 @@ const gchar *arg_bearer, GCancellable *cancellable, GError **error); -

    Synchronously invokes the DeleteBearer() D-Bus method on proxy +

    Synchronously invokes the DeleteBearer() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_call_delete_bearer() for the asynchronous version of this method.

    @@ -3319,7 +3470,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the ListBearers() D-Bus method on proxy +

    Asynchronously invokes the ListBearers() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -3416,7 +3567,7 @@ gchar ***out_bearers, GCancellable *cancellable, GError **error); -

    Synchronously invokes the ListBearers() D-Bus method on proxy +

    Synchronously invokes the ListBearers() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_call_list_bearers() for the asynchronous version of this method.

    @@ -3466,7 +3617,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Reset() D-Bus method on proxy +

    Asynchronously invokes the Reset() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -3555,7 +3706,7 @@ mm_gdbus_modem_call_reset_sync (MmGdbusModem *proxy, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Reset() D-Bus method on proxy +

    Synchronously invokes the Reset() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_call_reset() for the asynchronous version of this method.

    @@ -3601,7 +3752,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the FactoryReset() D-Bus method on proxy +

    Asynchronously invokes the FactoryReset() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -3698,7 +3849,7 @@ const gchar *arg_code, GCancellable *cancellable, GError **error); -

    Synchronously invokes the FactoryReset() D-Bus method on proxy +

    Synchronously invokes the FactoryReset() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_call_factory_reset() for the asynchronous version of this method.

    @@ -3749,7 +3900,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the SetCurrentModes() D-Bus method on proxy +

    Asynchronously invokes the SetCurrentModes() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -3846,7 +3997,7 @@ GVariant *arg_modes, GCancellable *cancellable, GError **error); -

    Synchronously invokes the SetCurrentModes() D-Bus method on proxy +

    Synchronously invokes the SetCurrentModes() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_call_set_current_modes() for the asynchronous version of this method.

    @@ -3897,7 +4048,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the SetCurrentBands() D-Bus method on proxy +

    Asynchronously invokes the SetCurrentBands() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -3994,7 +4145,7 @@ GVariant *arg_bands, GCancellable *cancellable, GError **error); -

    Synchronously invokes the SetCurrentBands() D-Bus method on proxy +

    Synchronously invokes the SetCurrentBands() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_call_set_current_bands() for the asynchronous version of this method.

    @@ -4046,7 +4197,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the SetCurrentCapabilities() D-Bus method on proxy +

    Asynchronously invokes the SetCurrentCapabilities() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -4143,7 +4294,7 @@ guint arg_capabilities, GCancellable *cancellable, GError **error); -

    Synchronously invokes the SetCurrentCapabilities() D-Bus method on proxy +

    Synchronously invokes the SetCurrentCapabilities() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_call_set_current_capabilities() for the asynchronous version of this method.

    @@ -4187,6 +4338,155 @@

    +

    mm_gdbus_modem_call_set_primary_sim_slotย ()

    +
    void
    +mm_gdbus_modem_call_set_primary_sim_slot
    +                               (MmGdbusModem *proxy,
    +                                guint arg_sim_slot,
    +                                GCancellable *cancellable,
    +                                GAsyncReadyCallback callback,
    +                                gpointer user_data);
    +

    Asynchronously invokes the SetPrimarySimSlot() D-Bus method on proxy +. +When the operation is finished, callback + will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). +You can then call mm_gdbus_modem_call_set_primary_sim_slot_finish() to get the result of the operation.

    +

    See mm_gdbus_modem_call_set_primary_sim_slot_sync() for the synchronous, blocking version of this method.

    +
    +

    Parameters

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    proxy

    A MmGdbusModemProxy.

    ย 

    arg_sim_slot

    Argument to pass with the method invocation.

    ย 

    cancellable

    A GCancellable or NULL.

    [nullable]

    callback

    A GAsyncReadyCallback to call when the request is satisfied or NULL.

    ย 

    user_data

    User data to pass to callback +.

    ย 
    +
    +
    +
    +
    +

    mm_gdbus_modem_call_set_primary_sim_slot_finishย ()

    +
    gboolean
    +mm_gdbus_modem_call_set_primary_sim_slot_finish
    +                               (MmGdbusModem *proxy,
    +                                GAsyncResult *res,
    +                                GError **error);
    +

    Finishes an operation started with mm_gdbus_modem_call_set_primary_sim_slot().

    +
    +

    Parameters

    +
    +++++ + + + + + + + + + + + + + + + + + +

    proxy

    A MmGdbusModemProxy.

    ย 

    res

    The GAsyncResult obtained from the GAsyncReadyCallback passed to mm_gdbus_modem_call_set_primary_sim_slot().

    ย 

    error

    Return location for error or NULL.

    ย 
    +
    +
    +

    Returns

    +

    TRUE if the call succeeded, FALSE if error +is set.

    +

    [skip]

    +
    +
    +
    +
    +

    mm_gdbus_modem_call_set_primary_sim_slot_syncย ()

    +
    gboolean
    +mm_gdbus_modem_call_set_primary_sim_slot_sync
    +                               (MmGdbusModem *proxy,
    +                                guint arg_sim_slot,
    +                                GCancellable *cancellable,
    +                                GError **error);
    +

    Synchronously invokes the SetPrimarySimSlot() D-Bus method on proxy +. The calling thread is blocked until a reply is received.

    +

    See mm_gdbus_modem_call_set_primary_sim_slot() for the asynchronous version of this method.

    +
    +

    Parameters

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + +

    proxy

    A MmGdbusModemProxy.

    ย 

    arg_sim_slot

    Argument to pass with the method invocation.

    ย 

    cancellable

    A GCancellable or NULL.

    [nullable]

    error

    Return location for error or NULL.

    ย 
    +
    +
    +

    Returns

    +

    TRUE if the call succeeded, FALSE if error +is set.

    +

    [skip]

    +
    +
    +
    +

    mm_gdbus_modem_call_commandย ()

    void
     mm_gdbus_modem_call_command (MmGdbusModem *proxy,
    @@ -4195,7 +4495,7 @@
                                  GCancellable *cancellable,
                                  GAsyncReadyCallback callback,
                                  gpointer user_data);
    -

    Asynchronously invokes the Command() D-Bus method on proxy +

    Asynchronously invokes the Command() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -4303,7 +4603,7 @@ gchar **out_response, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Command() D-Bus method on proxy +

    Synchronously invokes the Command() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_call_command() for the asynchronous version of this method.

    @@ -4423,6 +4723,11 @@ GDBusMethodInvocation *invocation, guint arg_state); + gboolean (*handle_set_primary_sim_slot) ( + MmGdbusModem *object, + GDBusMethodInvocation *invocation, + guint arg_sim_slot); + guint (*get_access_technologies) (MmGdbusModem *object); const gchar *const * (*get_bearers) (MmGdbusModem *object); @@ -4465,12 +4770,16 @@ const gchar * (*get_primary_port) (MmGdbusModem *object); + guint (*get_primary_sim_slot) (MmGdbusModem *object); + const gchar * (*get_revision) (MmGdbusModem *object); GVariant * (*get_signal_quality) (MmGdbusModem *object); const gchar * (*get_sim) (MmGdbusModem *object); + const gchar *const * (*get_sim_slots) (MmGdbusModem *object); + gint (*get_state) (MmGdbusModem *object); guint (*get_state_failed_reason) (MmGdbusModem *object); @@ -4565,6 +4874,11 @@ ย  +

    handle_set_primary_sim_slotย ()

    +

    Handler for the โ€œhandle-set-primary-sim-slotโ€ signal.

    +ย  + +

    get_access_technologiesย ()

    Getter for the โ€œaccess-technologiesโ€ property.

    ย  @@ -4670,6 +4984,11 @@ ย  +

    get_primary_sim_slotย ()

    +

    Getter for the โ€œprimary-sim-slotโ€ property.

    +ย  + +

    get_revisionย ()

    Getter for the โ€œrevisionโ€ property.

    ย  @@ -4685,6 +5004,11 @@ ย  +

    get_sim_slotsย ()

    +

    Getter for the โ€œsim-slotsโ€ property.

    +ย  + +

    get_stateย ()

    Getter for the โ€œstateโ€ property.

    ย  @@ -4739,7 +5063,7 @@

    The โ€œaccess-technologiesโ€ property

      โ€œaccess-technologiesโ€      guint
    -

    Represents the D-Bus property "AccessTechnologies".

    +

    Represents the D-Bus property "AccessTechnologies".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4749,7 +5073,7 @@

    The โ€œbearersโ€ property

      โ€œbearersโ€                  GStrv
    -

    Represents the D-Bus property "Bearers".

    +

    Represents the D-Bus property "Bearers".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4758,7 +5082,7 @@

    The โ€œcarrier-configurationโ€ property

      โ€œcarrier-configurationโ€    charย *
    -

    Represents the D-Bus property "CarrierConfiguration".

    +

    Represents the D-Bus property "CarrierConfiguration".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4768,7 +5092,7 @@

    The โ€œcarrier-configuration-revisionโ€ property

      โ€œcarrier-configuration-revisionโ€ charย *
    -

    Represents the D-Bus property "CarrierConfigurationRevision".

    +

    Represents the D-Bus property "CarrierConfigurationRevision".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4778,7 +5102,7 @@

    The โ€œcurrent-bandsโ€ property

      โ€œcurrent-bandsโ€            GVariantย *
    -

    Represents the D-Bus property "CurrentBands".

    +

    Represents the D-Bus property "CurrentBands".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4789,7 +5113,7 @@

    The โ€œcurrent-capabilitiesโ€ property

      โ€œcurrent-capabilitiesโ€     guint
    -

    Represents the D-Bus property "CurrentCapabilities".

    +

    Represents the D-Bus property "CurrentCapabilities".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4799,7 +5123,7 @@

    The โ€œcurrent-modesโ€ property

      โ€œcurrent-modesโ€            GVariantย *
    -

    Represents the D-Bus property "CurrentModes".

    +

    Represents the D-Bus property "CurrentModes".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4810,7 +5134,7 @@

    The โ€œdeviceโ€ property

      โ€œdeviceโ€                   charย *
    -

    Represents the D-Bus property "Device".

    +

    Represents the D-Bus property "Device".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4820,7 +5144,7 @@

    The โ€œdevice-identifierโ€ property

      โ€œdevice-identifierโ€        charย *
    -

    Represents the D-Bus property "DeviceIdentifier".

    +

    Represents the D-Bus property "DeviceIdentifier".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4830,7 +5154,7 @@

    The โ€œdriversโ€ property

      โ€œdriversโ€                  GStrv
    -

    Represents the D-Bus property "Drivers".

    +

    Represents the D-Bus property "Drivers".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4839,7 +5163,7 @@

    The โ€œequipment-identifierโ€ property

      โ€œequipment-identifierโ€     charย *
    -

    Represents the D-Bus property "EquipmentIdentifier".

    +

    Represents the D-Bus property "EquipmentIdentifier".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4849,7 +5173,7 @@

    The โ€œhardware-revisionโ€ property

      โ€œhardware-revisionโ€        charย *
    -

    Represents the D-Bus property "HardwareRevision".

    +

    Represents the D-Bus property "HardwareRevision".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4859,7 +5183,7 @@

    The โ€œmanufacturerโ€ property

      โ€œmanufacturerโ€             charย *
    -

    Represents the D-Bus property "Manufacturer".

    +

    Represents the D-Bus property "Manufacturer".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4869,7 +5193,7 @@

    The โ€œmax-active-bearersโ€ property

      โ€œmax-active-bearersโ€       guint
    -

    Represents the D-Bus property "MaxActiveBearers".

    +

    Represents the D-Bus property "MaxActiveBearers".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4879,7 +5203,7 @@

    The โ€œmax-bearersโ€ property

      โ€œmax-bearersโ€              guint
    -

    Represents the D-Bus property "MaxBearers".

    +

    Represents the D-Bus property "MaxBearers".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4889,7 +5213,7 @@

    The โ€œmodelโ€ property

      โ€œmodelโ€                    charย *
    -

    Represents the D-Bus property "Model".

    +

    Represents the D-Bus property "Model".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4899,7 +5223,7 @@

    The โ€œown-numbersโ€ property

      โ€œown-numbersโ€              GStrv
    -

    Represents the D-Bus property "OwnNumbers".

    +

    Represents the D-Bus property "OwnNumbers".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4908,7 +5232,7 @@

    The โ€œpluginโ€ property

      โ€œpluginโ€                   charย *
    -

    Represents the D-Bus property "Plugin".

    +

    Represents the D-Bus property "Plugin".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4918,7 +5242,7 @@

    The โ€œportsโ€ property

      โ€œportsโ€                    GVariantย *
    -

    Represents the D-Bus property "Ports".

    +

    Represents the D-Bus property "Ports".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4929,7 +5253,7 @@

    The โ€œpower-stateโ€ property

      โ€œpower-stateโ€              guint
    -

    Represents the D-Bus property "PowerState".

    +

    Represents the D-Bus property "PowerState".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4939,7 +5263,7 @@

    The โ€œprimary-portโ€ property

      โ€œprimary-portโ€             charย *
    -

    Represents the D-Bus property "PrimaryPort".

    +

    Represents the D-Bus property "PrimaryPort".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4947,9 +5271,19 @@

    +

    The โ€œprimary-sim-slotโ€ property

    +
      โ€œprimary-sim-slotโ€         guint
    +

    Represents the D-Bus property "PrimarySimSlot".

    +

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    +

    Owner: MmGdbusModem

    +

    Flags: Read / Write

    +

    Default value: 0

    +
    +
    +

    The โ€œrevisionโ€ property

      โ€œrevisionโ€                 charย *
    -

    Represents the D-Bus property "Revision".

    +

    Represents the D-Bus property "Revision".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4959,7 +5293,7 @@

    The โ€œsignal-qualityโ€ property

      โ€œsignal-qualityโ€           GVariantย *
    -

    Represents the D-Bus property "SignalQuality".

    +

    Represents the D-Bus property "SignalQuality".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4970,7 +5304,7 @@

    The โ€œsimโ€ property

      โ€œsimโ€                      charย *
    -

    Represents the D-Bus property "Sim".

    +

    Represents the D-Bus property "Sim".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4978,9 +5312,18 @@

    +

    The โ€œsim-slotsโ€ property

    +
      โ€œsim-slotsโ€                GStrv
    +

    Represents the D-Bus property "SimSlots".

    +

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    +

    Owner: MmGdbusModem

    +

    Flags: Read / Write

    +
    +
    +

    The โ€œstateโ€ property

      โ€œstateโ€                    int
    -

    Represents the D-Bus property "State".

    +

    Represents the D-Bus property "State".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -4990,7 +5333,7 @@

    The โ€œstate-failed-reasonโ€ property

      โ€œstate-failed-reasonโ€      guint
    -

    Represents the D-Bus property "StateFailedReason".

    +

    Represents the D-Bus property "StateFailedReason".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -5000,7 +5343,7 @@

    The โ€œsupported-bandsโ€ property

      โ€œsupported-bandsโ€          GVariantย *
    -

    Represents the D-Bus property "SupportedBands".

    +

    Represents the D-Bus property "SupportedBands".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -5011,7 +5354,7 @@

    The โ€œsupported-capabilitiesโ€ property

      โ€œsupported-capabilitiesโ€   GVariantย *
    -

    Represents the D-Bus property "SupportedCapabilities".

    +

    Represents the D-Bus property "SupportedCapabilities".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -5022,7 +5365,7 @@

    The โ€œsupported-ip-familiesโ€ property

      โ€œsupported-ip-familiesโ€    guint
    -

    Represents the D-Bus property "SupportedIpFamilies".

    +

    Represents the D-Bus property "SupportedIpFamilies".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -5032,7 +5375,7 @@

    The โ€œsupported-modesโ€ property

      โ€œsupported-modesโ€          GVariantย *
    -

    Represents the D-Bus property "SupportedModes".

    +

    Represents the D-Bus property "SupportedModes".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -5043,7 +5386,7 @@

    The โ€œunlock-requiredโ€ property

      โ€œunlock-requiredโ€          guint
    -

    Represents the D-Bus property "UnlockRequired".

    +

    Represents the D-Bus property "UnlockRequired".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -5053,7 +5396,7 @@

    The โ€œunlock-retriesโ€ property

      โ€œunlock-retriesโ€           GVariantย *
    -

    Represents the D-Bus property "UnlockRetries".

    +

    Represents the D-Bus property "UnlockRetries".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem

    Flags: Read / Write

    @@ -5071,7 +5414,7 @@ char *arg_cmd, guint arg_timeout, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Command() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Command() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_complete_command() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -5113,7 +5456,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -5125,7 +5468,7 @@ GDBusMethodInvocation *invocation, GVariant *arg_properties, gpointer user_data) -

    Signal emitted when a remote caller is invoking the CreateBearer() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the CreateBearer() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_complete_create_bearer() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -5162,7 +5505,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -5174,7 +5517,7 @@ GDBusMethodInvocation *invocation, char *arg_bearer, gpointer user_data) -

    Signal emitted when a remote caller is invoking the DeleteBearer() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the DeleteBearer() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_complete_delete_bearer() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -5211,7 +5554,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -5223,7 +5566,7 @@ GDBusMethodInvocation *invocation, gboolean arg_enable, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Enable() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Enable() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_complete_enable() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -5260,7 +5603,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -5272,7 +5615,7 @@ GDBusMethodInvocation *invocation, char *arg_code, gpointer user_data) -

    Signal emitted when a remote caller is invoking the FactoryReset() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the FactoryReset() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_complete_factory_reset() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -5309,7 +5652,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -5320,7 +5663,7 @@ user_function (MmGdbusModem *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the ListBearers() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the ListBearers() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_complete_list_bearers() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -5352,7 +5695,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -5363,7 +5706,7 @@ user_function (MmGdbusModem *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Reset() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Reset() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_complete_reset() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -5395,7 +5738,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -5407,7 +5750,7 @@ GDBusMethodInvocation *invocation, GVariant *arg_bands, gpointer user_data) -

    Signal emitted when a remote caller is invoking the SetCurrentBands() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the SetCurrentBands() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_complete_set_current_bands() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -5444,7 +5787,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -5456,7 +5799,7 @@ GDBusMethodInvocation *invocation, guint arg_capabilities, gpointer user_data) -

    Signal emitted when a remote caller is invoking the SetCurrentCapabilities() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the SetCurrentCapabilities() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_complete_set_current_capabilities() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -5493,7 +5836,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -5505,7 +5848,7 @@ GDBusMethodInvocation *invocation, GVariant *arg_modes, gpointer user_data) -

    Signal emitted when a remote caller is invoking the SetCurrentModes() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the SetCurrentModes() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_complete_set_current_modes() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -5542,7 +5885,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -5554,7 +5897,7 @@ GDBusMethodInvocation *invocation, guint arg_state, gpointer user_data) -

    Signal emitted when a remote caller is invoking the SetPowerState() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the SetPowerState() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_complete_set_power_state() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -5591,7 +5934,56 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    +
    +

    Flags: Run Last

    +
    +
    +
    +

    The โ€œhandle-set-primary-sim-slotโ€ signal

    +
    gboolean
    +user_function (MmGdbusModem          *object,
    +               GDBusMethodInvocation *invocation,
    +               guint                  arg_sim_slot,
    +               gpointer               user_data)
    +

    Signal emitted when a remote caller is invoking the SetPrimarySimSlot() D-Bus method.

    +

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation + and eventually call mm_gdbus_modem_complete_set_primary_sim_slot() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    +
    +

    Parameters

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + +

    object

    A MmGdbusModem.

    ย 

    invocation

    A GDBusMethodInvocation.

    ย 

    arg_sim_slot

    Argument passed by remote caller.

    ย 

    user_data

    user data set when the signal handler was connected.

    ย 
    +
    +
    +

    Returns

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -5604,7 +5996,7 @@ int arg_new, guint arg_reason, gpointer user_data) -

    On the client-side, this signal is emitted whenever the D-Bus signal "StateChanged" is received.

    +

    On the client-side, this signal is emitted whenever the D-Bus signal "StateChanged" is received.

    On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.

    Parameters

    @@ -5648,6 +6040,6 @@
    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModem3gpp.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModem3gpp.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModem3gpp.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModem3gpp.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -415,7 +415,7 @@
    guint
     mm_gdbus_modem3gpp_get_registration_state
                                    (MmGdbusModem3gpp *object);
    -

    Gets the value of the "RegistrationState" D-Bus property.

    +

    Gets the value of the "RegistrationState" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -443,7 +443,7 @@

    mm_gdbus_modem3gpp_get_imeiย ()

    const gcharย *
     mm_gdbus_modem3gpp_get_imei (MmGdbusModem3gpp *object);
    -

    Gets the value of the "Imei" D-Bus property.

    +

    Gets the value of the "Imei" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem3gpp_dup_imei() if on another thread.

    @@ -467,7 +467,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -475,7 +475,7 @@

    mm_gdbus_modem3gpp_dup_imeiย ()

    gcharย *
     mm_gdbus_modem3gpp_dup_imei (MmGdbusModem3gpp *object);
    -

    Gets a copy of the "Imei" D-Bus property.

    +

    Gets a copy of the "Imei" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -496,7 +496,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -504,7 +504,7 @@

    mm_gdbus_modem3gpp_get_operator_codeย ()

    const gcharย *
     mm_gdbus_modem3gpp_get_operator_code (MmGdbusModem3gpp *object);
    -

    Gets the value of the "OperatorCode" D-Bus property.

    +

    Gets the value of the "OperatorCode" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem3gpp_dup_operator_code() if on another thread.

    @@ -528,7 +528,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -536,7 +536,7 @@

    mm_gdbus_modem3gpp_dup_operator_codeย ()

    gcharย *
     mm_gdbus_modem3gpp_dup_operator_code (MmGdbusModem3gpp *object);
    -

    Gets a copy of the "OperatorCode" D-Bus property.

    +

    Gets a copy of the "OperatorCode" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -557,7 +557,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -565,7 +565,7 @@

    mm_gdbus_modem3gpp_get_operator_nameย ()

    const gcharย *
     mm_gdbus_modem3gpp_get_operator_name (MmGdbusModem3gpp *object);
    -

    Gets the value of the "OperatorName" D-Bus property.

    +

    Gets the value of the "OperatorName" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem3gpp_dup_operator_name() if on another thread.

    @@ -589,7 +589,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -597,7 +597,7 @@

    mm_gdbus_modem3gpp_dup_operator_nameย ()

    gcharย *
     mm_gdbus_modem3gpp_dup_operator_name (MmGdbusModem3gpp *object);
    -

    Gets a copy of the "OperatorName" D-Bus property.

    +

    Gets a copy of the "OperatorName" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -618,7 +618,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -627,7 +627,7 @@
    guint
     mm_gdbus_modem3gpp_get_enabled_facility_locks
                                    (MmGdbusModem3gpp *object);
    -

    Gets the value of the "EnabledFacilityLocks" D-Bus property.

    +

    Gets the value of the "EnabledFacilityLocks" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -656,7 +656,7 @@
    guint
     mm_gdbus_modem3gpp_get_subscription_state
                                    (MmGdbusModem3gpp *object);
    -

    Gets the value of the "SubscriptionState" D-Bus property.

    +

    Gets the value of the "SubscriptionState" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -685,7 +685,7 @@
    guint
     mm_gdbus_modem3gpp_get_eps_ue_mode_operation
                                    (MmGdbusModem3gpp *object);
    -

    Gets the value of the "EpsUeModeOperation" D-Bus property.

    +

    Gets the value of the "EpsUeModeOperation" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -713,7 +713,7 @@

    mm_gdbus_modem3gpp_get_pcoย ()

    GVariantย *
     mm_gdbus_modem3gpp_get_pco (MmGdbusModem3gpp *object);
    -

    Gets the value of the "Pco" D-Bus property.

    +

    Gets the value of the "Pco" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem3gpp_dup_pco() if on another thread.

    @@ -737,7 +737,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -745,7 +745,7 @@

    mm_gdbus_modem3gpp_dup_pcoย ()

    GVariantย *
     mm_gdbus_modem3gpp_dup_pco (MmGdbusModem3gpp *object);
    -

    Gets a copy of the "Pco" D-Bus property.

    +

    Gets a copy of the "Pco" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -766,7 +766,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -775,7 +775,7 @@
    const gcharย *
     mm_gdbus_modem3gpp_get_initial_eps_bearer
                                    (MmGdbusModem3gpp *object);
    -

    Gets the value of the "InitialEpsBearer" D-Bus property.

    +

    Gets the value of the "InitialEpsBearer" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem3gpp_dup_initial_eps_bearer() if on another thread.

    @@ -799,7 +799,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -808,7 +808,7 @@
    gcharย *
     mm_gdbus_modem3gpp_dup_initial_eps_bearer
                                    (MmGdbusModem3gpp *object);
    -

    Gets a copy of the "InitialEpsBearer" D-Bus property.

    +

    Gets a copy of the "InitialEpsBearer" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -829,7 +829,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -838,7 +838,7 @@
    GVariantย *
     mm_gdbus_modem3gpp_get_initial_eps_bearer_settings
                                    (MmGdbusModem3gpp *object);
    -

    Gets the value of the "InitialEpsBearerSettings" D-Bus property.

    +

    Gets the value of the "InitialEpsBearerSettings" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem3gpp_dup_initial_eps_bearer_settings() if on another thread.

    @@ -862,7 +862,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -871,7 +871,7 @@
    GVariantย *
     mm_gdbus_modem3gpp_dup_initial_eps_bearer_settings
                                    (MmGdbusModem3gpp *object);
    -

    Gets a copy of the "InitialEpsBearerSettings" D-Bus property.

    +

    Gets a copy of the "InitialEpsBearerSettings" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -892,7 +892,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -904,7 +904,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Register() D-Bus method on proxy +

    Asynchronously invokes the Register() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -1000,7 +1000,7 @@ const gchar *arg_operator_id, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Register() D-Bus method on proxy +

    Synchronously invokes the Register() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem3gpp_call_register() for the asynchronous version of this method.

    @@ -1050,7 +1050,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Scan() D-Bus method on proxy +

    Asynchronously invokes the Scan() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -1146,7 +1146,7 @@ GVariant **out_results, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Scan() D-Bus method on proxy +

    Synchronously invokes the Scan() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem3gpp_call_scan() for the asynchronous version of this method.

    @@ -1198,7 +1198,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the SetEpsUeModeOperation() D-Bus method on proxy +

    Asynchronously invokes the SetEpsUeModeOperation() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -1295,7 +1295,7 @@ guint arg_mode, GCancellable *cancellable, GError **error); -

    Synchronously invokes the SetEpsUeModeOperation() D-Bus method on proxy +

    Synchronously invokes the SetEpsUeModeOperation() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem3gpp_call_set_eps_ue_mode_operation() for the asynchronous version of this method.

    @@ -1347,7 +1347,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the SetInitialEpsBearerSettings() D-Bus method on proxy +

    Asynchronously invokes the SetInitialEpsBearerSettings() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -1444,7 +1444,7 @@ GVariant *arg_settings, GCancellable *cancellable, GError **error); -

    Synchronously invokes the SetInitialEpsBearerSettings() D-Bus method on proxy +

    Synchronously invokes the SetInitialEpsBearerSettings() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem3gpp_call_set_initial_eps_bearer_settings() for the asynchronous version of this method.

    @@ -1635,7 +1635,7 @@

    The โ€œenabled-facility-locksโ€ property

      โ€œenabled-facility-locksโ€   guint
    -

    Represents the D-Bus property "EnabledFacilityLocks".

    +

    Represents the D-Bus property "EnabledFacilityLocks".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem3gpp

    Flags: Read / Write

    @@ -1645,7 +1645,7 @@

    The โ€œeps-ue-mode-operationโ€ property

      โ€œeps-ue-mode-operationโ€    guint
    -

    Represents the D-Bus property "EpsUeModeOperation".

    +

    Represents the D-Bus property "EpsUeModeOperation".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem3gpp

    Flags: Read / Write

    @@ -1655,7 +1655,7 @@

    The โ€œimeiโ€ property

      โ€œimeiโ€                     charย *
    -

    Represents the D-Bus property "Imei".

    +

    Represents the D-Bus property "Imei".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem3gpp

    Flags: Read / Write

    @@ -1665,7 +1665,7 @@

    The โ€œinitial-eps-bearerโ€ property

      โ€œinitial-eps-bearerโ€       charย *
    -

    Represents the D-Bus property "InitialEpsBearer".

    +

    Represents the D-Bus property "InitialEpsBearer".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem3gpp

    Flags: Read / Write

    @@ -1675,7 +1675,7 @@

    The โ€œinitial-eps-bearer-settingsโ€ property

      โ€œinitial-eps-bearer-settingsโ€ GVariantย *
    -

    Represents the D-Bus property "InitialEpsBearerSettings".

    +

    Represents the D-Bus property "InitialEpsBearerSettings".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem3gpp

    Flags: Read / Write

    @@ -1686,7 +1686,7 @@

    The โ€œoperator-codeโ€ property

      โ€œoperator-codeโ€            charย *
    -

    Represents the D-Bus property "OperatorCode".

    +

    Represents the D-Bus property "OperatorCode".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem3gpp

    Flags: Read / Write

    @@ -1696,7 +1696,7 @@

    The โ€œoperator-nameโ€ property

      โ€œoperator-nameโ€            charย *
    -

    Represents the D-Bus property "OperatorName".

    +

    Represents the D-Bus property "OperatorName".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem3gpp

    Flags: Read / Write

    @@ -1706,7 +1706,7 @@

    The โ€œpcoโ€ property

      โ€œpcoโ€                      GVariantย *
    -

    Represents the D-Bus property "Pco".

    +

    Represents the D-Bus property "Pco".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem3gpp

    Flags: Read / Write

    @@ -1717,7 +1717,7 @@

    The โ€œregistration-stateโ€ property

      โ€œregistration-stateโ€       guint
    -

    Represents the D-Bus property "RegistrationState".

    +

    Represents the D-Bus property "RegistrationState".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem3gpp

    Flags: Read / Write

    @@ -1727,7 +1727,7 @@

    The โ€œsubscription-stateโ€ property

      โ€œsubscription-stateโ€       guint
    -

    Represents the D-Bus property "SubscriptionState".

    +

    Represents the D-Bus property "SubscriptionState".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem3gpp

    Flags: Read / Write

    @@ -1743,7 +1743,7 @@ GDBusMethodInvocation *invocation, char *arg_operator_id, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Register() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Register() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem3gpp_complete_register() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1780,7 +1780,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -1791,7 +1791,7 @@ user_function (MmGdbusModem3gpp *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Scan() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Scan() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem3gpp_complete_scan() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1823,7 +1823,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -1835,7 +1835,7 @@ GDBusMethodInvocation *invocation, guint arg_mode, gpointer user_data) -

    Signal emitted when a remote caller is invoking the SetEpsUeModeOperation() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the SetEpsUeModeOperation() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem3gpp_complete_set_eps_ue_mode_operation() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1872,7 +1872,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -1884,7 +1884,7 @@ GDBusMethodInvocation *invocation, GVariant *arg_settings, gpointer user_data) -

    Signal emitted when a remote caller is invoking the SetInitialEpsBearerSettings() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the SetInitialEpsBearerSettings() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem3gpp_complete_set_initial_eps_bearer_settings() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1921,13 +1921,13 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModem3gppProxy.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModem3gppProxy.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModem3gppProxy.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModem3gppProxy.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -222,7 +222,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModem3gppProxy]

    +

    [transfer full][type MmGdbusModem3gppProxy]


    @@ -324,7 +324,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModem3gppProxy]

    +

    [transfer full][type MmGdbusModem3gppProxy]


    @@ -387,7 +387,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModem3gppProxy]

    +

    [transfer full][type MmGdbusModem3gppProxy]


    @@ -450,7 +450,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModem3gppProxy]

    +

    [transfer full][type MmGdbusModem3gppProxy]

    @@ -464,6 +464,6 @@
    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModem3gppSkeleton.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModem3gppSkeleton.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModem3gppSkeleton.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModem3gppSkeleton.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -89,7 +89,7 @@

    Returns

    The skeleton object.

    -

    [transfer full][type MmGdbusModem3gppSkeleton]

    +

    [transfer full][type MmGdbusModem3gppSkeleton]

    @@ -103,6 +103,6 @@
    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModem3gppUssd.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModem3gppUssd.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModem3gppUssd.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModem3gppUssd.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -260,7 +260,7 @@

    mm_gdbus_modem3gpp_ussd_get_stateย ()

    guint
     mm_gdbus_modem3gpp_ussd_get_state (MmGdbusModem3gppUssd *object);
    -

    Gets the value of the "State" D-Bus property.

    +

    Gets the value of the "State" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -289,7 +289,7 @@
    const gcharย *
     mm_gdbus_modem3gpp_ussd_get_network_request
                                    (MmGdbusModem3gppUssd *object);
    -

    Gets the value of the "NetworkRequest" D-Bus property.

    +

    Gets the value of the "NetworkRequest" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem3gpp_ussd_dup_network_request() if on another thread.

    @@ -313,7 +313,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -322,7 +322,7 @@
    gcharย *
     mm_gdbus_modem3gpp_ussd_dup_network_request
                                    (MmGdbusModem3gppUssd *object);
    -

    Gets a copy of the "NetworkRequest" D-Bus property.

    +

    Gets a copy of the "NetworkRequest" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -343,7 +343,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -352,7 +352,7 @@
    const gcharย *
     mm_gdbus_modem3gpp_ussd_get_network_notification
                                    (MmGdbusModem3gppUssd *object);
    -

    Gets the value of the "NetworkNotification" D-Bus property.

    +

    Gets the value of the "NetworkNotification" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem3gpp_ussd_dup_network_notification() if on another thread.

    @@ -376,7 +376,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -385,7 +385,7 @@
    gcharย *
     mm_gdbus_modem3gpp_ussd_dup_network_notification
                                    (MmGdbusModem3gppUssd *object);
    -

    Gets a copy of the "NetworkNotification" D-Bus property.

    +

    Gets a copy of the "NetworkNotification" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -406,7 +406,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -418,7 +418,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Initiate() D-Bus method on proxy +

    Asynchronously invokes the Initiate() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -522,7 +522,7 @@ gchar **out_reply, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Initiate() D-Bus method on proxy +

    Synchronously invokes the Initiate() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem3gpp_ussd_call_initiate() for the asynchronous version of this method.

    @@ -578,7 +578,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Respond() D-Bus method on proxy +

    Asynchronously invokes the Respond() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -682,7 +682,7 @@ gchar **out_reply, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Respond() D-Bus method on proxy +

    Synchronously invokes the Respond() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem3gpp_ussd_call_respond() for the asynchronous version of this method.

    @@ -737,7 +737,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Cancel() D-Bus method on proxy +

    Asynchronously invokes the Cancel() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -828,7 +828,7 @@ (MmGdbusModem3gppUssd *proxy, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Cancel() D-Bus method on proxy +

    Synchronously invokes the Cancel() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem3gpp_ussd_call_cancel() for the asynchronous version of this method.

    @@ -955,7 +955,7 @@

    The โ€œnetwork-notificationโ€ property

      โ€œnetwork-notificationโ€     charย *
    -

    Represents the D-Bus property "NetworkNotification".

    +

    Represents the D-Bus property "NetworkNotification".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem3gppUssd

    Flags: Read / Write

    @@ -965,7 +965,7 @@

    The โ€œnetwork-requestโ€ property

      โ€œnetwork-requestโ€          charย *
    -

    Represents the D-Bus property "NetworkRequest".

    +

    Represents the D-Bus property "NetworkRequest".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem3gppUssd

    Flags: Read / Write

    @@ -975,7 +975,7 @@

    The โ€œstateโ€ property

      โ€œstateโ€                    guint
    -

    Represents the D-Bus property "State".

    +

    Represents the D-Bus property "State".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModem3gppUssd

    Flags: Read / Write

    @@ -990,7 +990,7 @@ user_function (MmGdbusModem3gppUssd *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Cancel() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Cancel() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem3gpp_ussd_complete_cancel() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1022,7 +1022,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -1034,7 +1034,7 @@ GDBusMethodInvocation *invocation, char *arg_command, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Initiate() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Initiate() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem3gpp_ussd_complete_initiate() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1071,7 +1071,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -1083,7 +1083,7 @@ GDBusMethodInvocation *invocation, char *arg_response, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Respond() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Respond() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem3gpp_ussd_complete_respond() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1120,13 +1120,13 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModem3gppUssdProxy.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModem3gppUssdProxy.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModem3gppUssdProxy.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModem3gppUssdProxy.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -223,7 +223,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModem3gppUssdProxy]

    +

    [transfer full][type MmGdbusModem3gppUssdProxy]


    @@ -326,7 +326,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModem3gppUssdProxy]

    +

    [transfer full][type MmGdbusModem3gppUssdProxy]


    @@ -389,7 +389,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModem3gppUssdProxy]

    +

    [transfer full][type MmGdbusModem3gppUssdProxy]


    @@ -453,7 +453,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModem3gppUssdProxy]

    +

    [transfer full][type MmGdbusModem3gppUssdProxy]

    @@ -467,6 +467,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModem3gppUssdSkeleton.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModem3gppUssdSkeleton.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModem3gppUssdSkeleton.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModem3gppUssdSkeleton.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -89,7 +89,7 @@

    Returns

    The skeleton object.

    -

    [transfer full][type MmGdbusModem3gppUssdSkeleton]

    +

    [transfer full][type MmGdbusModem3gppUssdSkeleton]

    @@ -103,6 +103,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemCdma.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemCdma.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemCdma.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemCdma.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -289,7 +289,7 @@
    guint
     mm_gdbus_modem_cdma_get_cdma1x_registration_state
                                    (MmGdbusModemCdma *object);
    -

    Gets the value of the "Cdma1xRegistrationState" D-Bus property.

    +

    Gets the value of the "Cdma1xRegistrationState" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -318,7 +318,7 @@
    guint
     mm_gdbus_modem_cdma_get_evdo_registration_state
                                    (MmGdbusModemCdma *object);
    -

    Gets the value of the "EvdoRegistrationState" D-Bus property.

    +

    Gets the value of the "EvdoRegistrationState" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -347,7 +347,7 @@
    guint
     mm_gdbus_modem_cdma_get_activation_state
                                    (MmGdbusModemCdma *object);
    -

    Gets the value of the "ActivationState" D-Bus property.

    +

    Gets the value of the "ActivationState" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -375,7 +375,7 @@

    mm_gdbus_modem_cdma_get_esnย ()

    const gcharย *
     mm_gdbus_modem_cdma_get_esn (MmGdbusModemCdma *object);
    -

    Gets the value of the "Esn" D-Bus property.

    +

    Gets the value of the "Esn" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_cdma_dup_esn() if on another thread.

    @@ -399,7 +399,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -407,7 +407,7 @@

    mm_gdbus_modem_cdma_dup_esnย ()

    gcharย *
     mm_gdbus_modem_cdma_dup_esn (MmGdbusModemCdma *object);
    -

    Gets a copy of the "Esn" D-Bus property.

    +

    Gets a copy of the "Esn" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -428,7 +428,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -436,7 +436,7 @@

    mm_gdbus_modem_cdma_get_meidย ()

    const gcharย *
     mm_gdbus_modem_cdma_get_meid (MmGdbusModemCdma *object);
    -

    Gets the value of the "Meid" D-Bus property.

    +

    Gets the value of the "Meid" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_cdma_dup_meid() if on another thread.

    @@ -460,7 +460,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -468,7 +468,7 @@

    mm_gdbus_modem_cdma_dup_meidย ()

    gcharย *
     mm_gdbus_modem_cdma_dup_meid (MmGdbusModemCdma *object);
    -

    Gets a copy of the "Meid" D-Bus property.

    +

    Gets a copy of the "Meid" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -489,7 +489,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -497,7 +497,7 @@

    mm_gdbus_modem_cdma_get_nidย ()

    guint
     mm_gdbus_modem_cdma_get_nid (MmGdbusModemCdma *object);
    -

    Gets the value of the "Nid" D-Bus property.

    +

    Gets the value of the "Nid" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -525,7 +525,7 @@

    mm_gdbus_modem_cdma_get_sidย ()

    guint
     mm_gdbus_modem_cdma_get_sid (MmGdbusModemCdma *object);
    -

    Gets the value of the "Sid" D-Bus property.

    +

    Gets the value of the "Sid" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -557,7 +557,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Activate() D-Bus method on proxy +

    Asynchronously invokes the Activate() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -654,7 +654,7 @@ const gchar *arg_carrier_code, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Activate() D-Bus method on proxy +

    Synchronously invokes the Activate() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_cdma_call_activate() for the asynchronous version of this method.

    @@ -706,7 +706,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the ActivateManual() D-Bus method on proxy +

    Asynchronously invokes the ActivateManual() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -803,7 +803,7 @@ GVariant *arg_properties, GCancellable *cancellable, GError **error); -

    Synchronously invokes the ActivateManual() D-Bus method on proxy +

    Synchronously invokes the ActivateManual() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_cdma_call_activate_manual() for the asynchronous version of this method.

    @@ -965,7 +965,7 @@

    The โ€œactivation-stateโ€ property

      โ€œactivation-stateโ€         guint
    -

    Represents the D-Bus property "ActivationState".

    +

    Represents the D-Bus property "ActivationState".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemCdma

    Flags: Read / Write

    @@ -975,7 +975,7 @@

    The โ€œcdma1x-registration-stateโ€ property

      โ€œcdma1x-registration-stateโ€ guint
    -

    Represents the D-Bus property "Cdma1xRegistrationState".

    +

    Represents the D-Bus property "Cdma1xRegistrationState".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemCdma

    Flags: Read / Write

    @@ -985,7 +985,7 @@

    The โ€œesnโ€ property

      โ€œesnโ€                      charย *
    -

    Represents the D-Bus property "Esn".

    +

    Represents the D-Bus property "Esn".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemCdma

    Flags: Read / Write

    @@ -995,7 +995,7 @@

    The โ€œevdo-registration-stateโ€ property

      โ€œevdo-registration-stateโ€  guint
    -

    Represents the D-Bus property "EvdoRegistrationState".

    +

    Represents the D-Bus property "EvdoRegistrationState".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemCdma

    Flags: Read / Write

    @@ -1005,7 +1005,7 @@

    The โ€œmeidโ€ property

      โ€œmeidโ€                     charย *
    -

    Represents the D-Bus property "Meid".

    +

    Represents the D-Bus property "Meid".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemCdma

    Flags: Read / Write

    @@ -1015,7 +1015,7 @@

    The โ€œnidโ€ property

      โ€œnidโ€                      guint
    -

    Represents the D-Bus property "Nid".

    +

    Represents the D-Bus property "Nid".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemCdma

    Flags: Read / Write

    @@ -1025,7 +1025,7 @@

    The โ€œsidโ€ property

      โ€œsidโ€                      guint
    -

    Represents the D-Bus property "Sid".

    +

    Represents the D-Bus property "Sid".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemCdma

    Flags: Read / Write

    @@ -1042,7 +1042,7 @@ guint arg_activation_error, GVariant *arg_status_changes, gpointer user_data) -

    On the client-side, this signal is emitted whenever the D-Bus signal "ActivationStateChanged" is received.

    +

    On the client-side, this signal is emitted whenever the D-Bus signal "ActivationStateChanged" is received.

    On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.

    Parameters

    @@ -1091,7 +1091,7 @@ GDBusMethodInvocation *invocation, char *arg_carrier_code, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Activate() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Activate() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_cdma_complete_activate() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1128,7 +1128,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -1140,7 +1140,7 @@ GDBusMethodInvocation *invocation, GVariant *arg_properties, gpointer user_data) -

    Signal emitted when a remote caller is invoking the ActivateManual() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the ActivateManual() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_cdma_complete_activate_manual() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1177,13 +1177,13 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemCdmaProxy.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemCdmaProxy.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemCdmaProxy.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemCdmaProxy.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -222,7 +222,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemCdmaProxy]

    +

    [transfer full][type MmGdbusModemCdmaProxy]


    @@ -324,7 +324,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemCdmaProxy]

    +

    [transfer full][type MmGdbusModemCdmaProxy]


    @@ -387,7 +387,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemCdmaProxy]

    +

    [transfer full][type MmGdbusModemCdmaProxy]


    @@ -450,7 +450,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemCdmaProxy]

    +

    [transfer full][type MmGdbusModemCdmaProxy]

    @@ -464,6 +464,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemCdmaSkeleton.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemCdmaSkeleton.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemCdmaSkeleton.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemCdmaSkeleton.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -89,7 +89,7 @@

    Returns

    The skeleton object.

    -

    [transfer full][type MmGdbusModemCdmaSkeleton]

    +

    [transfer full][type MmGdbusModemCdmaSkeleton]

    @@ -103,6 +103,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemFirmware.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemFirmware.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemFirmware.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemFirmware.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -197,7 +197,7 @@
    GVariantย *
     mm_gdbus_modem_firmware_dup_update_settings
                                    (MmGdbusModemFirmware *object);
    -

    Gets a copy of the "UpdateSettings" D-Bus property.

    +

    Gets a copy of the "UpdateSettings" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -218,7 +218,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -227,7 +227,7 @@
    GVariantย *
     mm_gdbus_modem_firmware_get_update_settings
                                    (MmGdbusModemFirmware *object);
    -

    Gets the value of the "UpdateSettings" D-Bus property.

    +

    Gets the value of the "UpdateSettings" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_firmware_dup_update_settings() if on another thread.

    @@ -251,7 +251,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -262,7 +262,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the List() D-Bus method on proxy +

    Asynchronously invokes the List() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -367,7 +367,7 @@ GVariant **out_installed, GCancellable *cancellable, GError **error); -

    Synchronously invokes the List() D-Bus method on proxy +

    Synchronously invokes the List() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_firmware_call_list() for the asynchronous version of this method.

    @@ -423,7 +423,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Select() D-Bus method on proxy +

    Asynchronously invokes the Select() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -520,7 +520,7 @@ const gchar *arg_uniqueid, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Select() D-Bus method on proxy +

    Synchronously invokes the Select() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_firmware_call_select() for the asynchronous version of this method.

    @@ -628,7 +628,7 @@

    The โ€œupdate-settingsโ€ property

      โ€œupdate-settingsโ€          GVariantย *
    -

    Represents the D-Bus property "UpdateSettings".

    +

    Represents the D-Bus property "UpdateSettings".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemFirmware

    Flags: Read / Write

    @@ -644,7 +644,7 @@ user_function (MmGdbusModemFirmware *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the List() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the List() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_firmware_complete_list() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -676,7 +676,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -688,7 +688,7 @@ GDBusMethodInvocation *invocation, char *arg_uniqueid, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Select() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Select() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_firmware_complete_select() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -725,13 +725,13 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemFirmwareProxy.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemFirmwareProxy.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemFirmwareProxy.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemFirmwareProxy.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -223,7 +223,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemFirmwareProxy]

    +

    [transfer full][type MmGdbusModemFirmwareProxy]


    @@ -326,7 +326,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemFirmwareProxy]

    +

    [transfer full][type MmGdbusModemFirmwareProxy]


    @@ -389,7 +389,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemFirmwareProxy]

    +

    [transfer full][type MmGdbusModemFirmwareProxy]


    @@ -453,7 +453,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemFirmwareProxy]

    +

    [transfer full][type MmGdbusModemFirmwareProxy]

    @@ -467,6 +467,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemFirmwareSkeleton.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemFirmwareSkeleton.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemFirmwareSkeleton.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemFirmwareSkeleton.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -89,7 +89,7 @@

    Returns

    The skeleton object.

    -

    [transfer full][type MmGdbusModemFirmwareSkeleton]

    +

    [transfer full][type MmGdbusModemFirmwareSkeleton]

    @@ -103,6 +103,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemLocation.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemLocation.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemLocation.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemLocation.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -391,7 +391,7 @@

    mm_gdbus_modem_location_get_enabledย ()

    guint
     mm_gdbus_modem_location_get_enabled (MmGdbusModemLocation *object);
    -

    Gets the value of the "Enabled" D-Bus property.

    +

    Gets the value of the "Enabled" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -420,7 +420,7 @@
    guint
     mm_gdbus_modem_location_get_capabilities
                                    (MmGdbusModemLocation *object);
    -

    Gets the value of the "Capabilities" D-Bus property.

    +

    Gets the value of the "Capabilities" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -449,7 +449,7 @@
    gboolean
     mm_gdbus_modem_location_get_signals_location
                                    (MmGdbusModemLocation *object);
    -

    Gets the value of the "SignalsLocation" D-Bus property.

    +

    Gets the value of the "SignalsLocation" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -477,7 +477,7 @@

    mm_gdbus_modem_location_get_locationย ()

    GVariantย *
     mm_gdbus_modem_location_get_location (MmGdbusModemLocation *object);
    -

    Gets the value of the "Location" D-Bus property.

    +

    Gets the value of the "Location" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_location_dup_location() if on another thread.

    @@ -501,7 +501,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -509,7 +509,7 @@

    mm_gdbus_modem_location_dup_locationย ()

    GVariantย *
     mm_gdbus_modem_location_dup_location (MmGdbusModemLocation *object);
    -

    Gets a copy of the "Location" D-Bus property.

    +

    Gets a copy of the "Location" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -530,7 +530,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -539,7 +539,7 @@
    gcharย *
     mm_gdbus_modem_location_dup_supl_server
                                    (MmGdbusModemLocation *object);
    -

    Gets a copy of the "SuplServer" D-Bus property.

    +

    Gets a copy of the "SuplServer" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -560,7 +560,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -569,7 +569,7 @@
    const gcharย *
     mm_gdbus_modem_location_get_supl_server
                                    (MmGdbusModemLocation *object);
    -

    Gets the value of the "SuplServer" D-Bus property.

    +

    Gets the value of the "SuplServer" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_location_dup_supl_server() if on another thread.

    @@ -593,7 +593,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -602,7 +602,7 @@
    guint
     mm_gdbus_modem_location_get_gps_refresh_rate
                                    (MmGdbusModemLocation *object);
    -

    Gets the value of the "GpsRefreshRate" D-Bus property.

    +

    Gets the value of the "GpsRefreshRate" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -631,7 +631,7 @@
    guint
     mm_gdbus_modem_location_get_supported_assistance_data
                                    (MmGdbusModemLocation *object);
    -

    Gets the value of the "SupportedAssistanceData" D-Bus property.

    +

    Gets the value of the "SupportedAssistanceData" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -660,7 +660,7 @@
    gcharย **
     mm_gdbus_modem_location_dup_assistance_data_servers
                                    (MmGdbusModemLocation *object);
    -

    Gets a copy of the "AssistanceDataServers" D-Bus property.

    +

    Gets a copy of the "AssistanceDataServers" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -681,7 +681,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_strfreev().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -690,7 +690,7 @@
    const gcharย *const *
     mm_gdbus_modem_location_get_assistance_data_servers
                                    (MmGdbusModemLocation *object);
    -

    Gets the value of the "AssistanceDataServers" D-Bus property.

    +

    Gets the value of the "AssistanceDataServers" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_location_dup_assistance_data_servers() if on another thread.

    @@ -714,7 +714,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -726,7 +726,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the GetLocation() D-Bus method on proxy +

    Asynchronously invokes the GetLocation() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -824,7 +824,7 @@ GVariant **out_Location, GCancellable *cancellable, GError **error); -

    Synchronously invokes the GetLocation() D-Bus method on proxy +

    Synchronously invokes the GetLocation() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_location_call_get_location() for the asynchronous version of this method.

    @@ -876,7 +876,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Setup() D-Bus method on proxy +

    Asynchronously invokes the Setup() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -979,7 +979,7 @@ gboolean arg_signal_location, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Setup() D-Bus method on proxy +

    Synchronously invokes the Setup() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_location_call_setup() for the asynchronous version of this method.

    @@ -1036,7 +1036,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the SetSuplServer() D-Bus method on proxy +

    Asynchronously invokes the SetSuplServer() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -1133,7 +1133,7 @@ const gchar *arg_supl, GCancellable *cancellable, GError **error); -

    Synchronously invokes the SetSuplServer() D-Bus method on proxy +

    Synchronously invokes the SetSuplServer() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_location_call_set_supl_server() for the asynchronous version of this method.

    @@ -1185,7 +1185,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the InjectAssistanceData() D-Bus method on proxy +

    Asynchronously invokes the InjectAssistanceData() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -1282,7 +1282,7 @@ GVariant *arg_data, GCancellable *cancellable, GError **error); -

    Synchronously invokes the InjectAssistanceData() D-Bus method on proxy +

    Synchronously invokes the InjectAssistanceData() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_location_call_inject_assistance_data() for the asynchronous version of this method.

    @@ -1334,7 +1334,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the SetGpsRefreshRate() D-Bus method on proxy +

    Asynchronously invokes the SetGpsRefreshRate() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -1431,7 +1431,7 @@ guint arg_rate, GCancellable *cancellable, GError **error); -

    Synchronously invokes the SetGpsRefreshRate() D-Bus method on proxy +

    Synchronously invokes the SetGpsRefreshRate() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_location_call_set_gps_refresh_rate() for the asynchronous version of this method.

    @@ -1619,7 +1619,7 @@

    The โ€œassistance-data-serversโ€ property

      โ€œassistance-data-serversโ€  GStrv
    -

    Represents the D-Bus property "AssistanceDataServers".

    +

    Represents the D-Bus property "AssistanceDataServers".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemLocation

    Flags: Read / Write

    @@ -1628,7 +1628,7 @@

    The โ€œcapabilitiesโ€ property

      โ€œcapabilitiesโ€             guint
    -

    Represents the D-Bus property "Capabilities".

    +

    Represents the D-Bus property "Capabilities".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemLocation

    Flags: Read / Write

    @@ -1638,7 +1638,7 @@

    The โ€œenabledโ€ property

      โ€œenabledโ€                  guint
    -

    Represents the D-Bus property "Enabled".

    +

    Represents the D-Bus property "Enabled".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemLocation

    Flags: Read / Write

    @@ -1648,7 +1648,7 @@

    The โ€œgps-refresh-rateโ€ property

      โ€œgps-refresh-rateโ€         guint
    -

    Represents the D-Bus property "GpsRefreshRate".

    +

    Represents the D-Bus property "GpsRefreshRate".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemLocation

    Flags: Read / Write

    @@ -1658,7 +1658,7 @@

    The โ€œlocationโ€ property

      โ€œlocationโ€                 GVariantย *
    -

    Represents the D-Bus property "Location".

    +

    Represents the D-Bus property "Location".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemLocation

    Flags: Read / Write

    @@ -1669,7 +1669,7 @@

    The โ€œsignals-locationโ€ property

      โ€œsignals-locationโ€         gboolean
    -

    Represents the D-Bus property "SignalsLocation".

    +

    Represents the D-Bus property "SignalsLocation".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemLocation

    Flags: Read / Write

    @@ -1679,7 +1679,7 @@

    The โ€œsupl-serverโ€ property

      โ€œsupl-serverโ€              charย *
    -

    Represents the D-Bus property "SuplServer".

    +

    Represents the D-Bus property "SuplServer".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemLocation

    Flags: Read / Write

    @@ -1689,7 +1689,7 @@

    The โ€œsupported-assistance-dataโ€ property

      โ€œsupported-assistance-dataโ€ guint
    -

    Represents the D-Bus property "SupportedAssistanceData".

    +

    Represents the D-Bus property "SupportedAssistanceData".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemLocation

    Flags: Read / Write

    @@ -1704,7 +1704,7 @@ user_function (MmGdbusModemLocation *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the GetLocation() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the GetLocation() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_location_complete_get_location() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1736,7 +1736,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -1748,7 +1748,7 @@ GDBusMethodInvocation *invocation, GVariant *arg_data, gpointer user_data) -

    Signal emitted when a remote caller is invoking the InjectAssistanceData() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the InjectAssistanceData() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_location_complete_inject_assistance_data() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1785,7 +1785,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -1797,7 +1797,7 @@ GDBusMethodInvocation *invocation, guint arg_rate, gpointer user_data) -

    Signal emitted when a remote caller is invoking the SetGpsRefreshRate() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the SetGpsRefreshRate() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_location_complete_set_gps_refresh_rate() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1834,7 +1834,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -1846,7 +1846,7 @@ GDBusMethodInvocation *invocation, char *arg_supl, gpointer user_data) -

    Signal emitted when a remote caller is invoking the SetSuplServer() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the SetSuplServer() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_location_complete_set_supl_server() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1883,7 +1883,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -1896,7 +1896,7 @@ guint arg_sources, gboolean arg_signal_location, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Setup() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Setup() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_location_complete_setup() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1938,13 +1938,13 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemLocationProxy.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemLocationProxy.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemLocationProxy.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemLocationProxy.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -223,7 +223,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemLocationProxy]

    +

    [transfer full][type MmGdbusModemLocationProxy]


    @@ -326,7 +326,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemLocationProxy]

    +

    [transfer full][type MmGdbusModemLocationProxy]


    @@ -389,7 +389,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemLocationProxy]

    +

    [transfer full][type MmGdbusModemLocationProxy]


    @@ -453,7 +453,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemLocationProxy]

    +

    [transfer full][type MmGdbusModemLocationProxy]

    @@ -467,6 +467,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemLocationSkeleton.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemLocationSkeleton.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemLocationSkeleton.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemLocationSkeleton.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -89,7 +89,7 @@

    Returns

    The skeleton object.

    -

    [transfer full][type MmGdbusModemLocationSkeleton]

    +

    [transfer full][type MmGdbusModemLocationSkeleton]

    @@ -103,6 +103,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemMessaging.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemMessaging.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemMessaging.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemMessaging.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -270,7 +270,7 @@

    mm_gdbus_modem_messaging_get_messagesย ()

    const gcharย *const *
     mm_gdbus_modem_messaging_get_messages (MmGdbusModemMessaging *object);
    -

    Gets the value of the "Messages" D-Bus property.

    +

    Gets the value of the "Messages" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_messaging_dup_messages() if on another thread.

    @@ -294,7 +294,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -302,7 +302,7 @@

    mm_gdbus_modem_messaging_dup_messagesย ()

    gcharย **
     mm_gdbus_modem_messaging_dup_messages (MmGdbusModemMessaging *object);
    -

    Gets a copy of the "Messages" D-Bus property.

    +

    Gets a copy of the "Messages" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -323,7 +323,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_strfreev().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -332,7 +332,7 @@
    GVariantย *
     mm_gdbus_modem_messaging_get_supported_storages
                                    (MmGdbusModemMessaging *object);
    -

    Gets the value of the "SupportedStorages" D-Bus property.

    +

    Gets the value of the "SupportedStorages" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_messaging_dup_supported_storages() if on another thread.

    @@ -356,7 +356,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -365,7 +365,7 @@
    GVariantย *
     mm_gdbus_modem_messaging_dup_supported_storages
                                    (MmGdbusModemMessaging *object);
    -

    Gets a copy of the "SupportedStorages" D-Bus property.

    +

    Gets a copy of the "SupportedStorages" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -386,7 +386,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -395,7 +395,7 @@
    guint
     mm_gdbus_modem_messaging_get_default_storage
                                    (MmGdbusModemMessaging *object);
    -

    Gets the value of the "DefaultStorage" D-Bus property.

    +

    Gets the value of the "DefaultStorage" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -427,7 +427,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Create() D-Bus method on proxy +

    Asynchronously invokes the Create() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -531,7 +531,7 @@ gchar **out_path, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Create() D-Bus method on proxy +

    Synchronously invokes the Create() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_messaging_call_create() for the asynchronous version of this method.

    @@ -587,7 +587,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Delete() D-Bus method on proxy +

    Asynchronously invokes the Delete() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -684,7 +684,7 @@ const gchar *arg_path, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Delete() D-Bus method on proxy +

    Synchronously invokes the Delete() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_messaging_call_delete() for the asynchronous version of this method.

    @@ -734,7 +734,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the List() D-Bus method on proxy +

    Asynchronously invokes the List() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -832,7 +832,7 @@ gchar ***out_result, GCancellable *cancellable, GError **error); -

    Synchronously invokes the List() D-Bus method on proxy +

    Synchronously invokes the List() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_messaging_call_list() for the asynchronous version of this method.

    @@ -983,7 +983,7 @@

    The โ€œdefault-storageโ€ property

      โ€œdefault-storageโ€          guint
    -

    Represents the D-Bus property "DefaultStorage".

    +

    Represents the D-Bus property "DefaultStorage".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemMessaging

    Flags: Read / Write

    @@ -993,7 +993,7 @@

    The โ€œmessagesโ€ property

      โ€œmessagesโ€                 GStrv
    -

    Represents the D-Bus property "Messages".

    +

    Represents the D-Bus property "Messages".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemMessaging

    Flags: Read / Write

    @@ -1002,7 +1002,7 @@

    The โ€œsupported-storagesโ€ property

      โ€œsupported-storagesโ€       GVariantย *
    -

    Represents the D-Bus property "SupportedStorages".

    +

    Represents the D-Bus property "SupportedStorages".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemMessaging

    Flags: Read / Write

    @@ -1019,7 +1019,7 @@ char *arg_path, gboolean arg_received, gpointer user_data) -

    On the client-side, this signal is emitted whenever the D-Bus signal "Added" is received.

    +

    On the client-side, this signal is emitted whenever the D-Bus signal "Added" is received.

    On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.

    Parameters

    @@ -1062,7 +1062,7 @@ user_function (MmGdbusModemMessaging *object, char *arg_path, gpointer user_data) -

    On the client-side, this signal is emitted whenever the D-Bus signal "Deleted" is received.

    +

    On the client-side, this signal is emitted whenever the D-Bus signal "Deleted" is received.

    On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.

    Parameters

    @@ -1101,7 +1101,7 @@ GDBusMethodInvocation *invocation, GVariant *arg_properties, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Create() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Create() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_messaging_complete_create() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1138,7 +1138,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -1150,7 +1150,7 @@ GDBusMethodInvocation *invocation, char *arg_path, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Delete() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Delete() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_messaging_complete_delete() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1187,7 +1187,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -1198,7 +1198,7 @@ user_function (MmGdbusModemMessaging *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the List() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the List() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_messaging_complete_list() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1230,13 +1230,13 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemMessagingProxy.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemMessagingProxy.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemMessagingProxy.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemMessagingProxy.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -223,7 +223,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemMessagingProxy]

    +

    [transfer full][type MmGdbusModemMessagingProxy]


    @@ -326,7 +326,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemMessagingProxy]

    +

    [transfer full][type MmGdbusModemMessagingProxy]


    @@ -389,7 +389,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemMessagingProxy]

    +

    [transfer full][type MmGdbusModemMessagingProxy]


    @@ -453,7 +453,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemMessagingProxy]

    +

    [transfer full][type MmGdbusModemMessagingProxy]

    @@ -467,6 +467,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemMessagingSkeleton.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemMessagingSkeleton.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemMessagingSkeleton.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemMessagingSkeleton.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -89,7 +89,7 @@

    Returns

    The skeleton object.

    -

    [transfer full][type MmGdbusModemMessagingSkeleton]

    +

    [transfer full][type MmGdbusModemMessagingSkeleton]

    @@ -103,6 +103,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemOma.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemOma.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemOma.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemOma.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -306,7 +306,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the AcceptNetworkInitiatedSession() D-Bus method on proxy +

    Asynchronously invokes the AcceptNetworkInitiatedSession() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -409,7 +409,7 @@ gboolean arg_accept, GCancellable *cancellable, GError **error); -

    Synchronously invokes the AcceptNetworkInitiatedSession() D-Bus method on proxy +

    Synchronously invokes the AcceptNetworkInitiatedSession() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_oma_call_accept_network_initiated_session() for the asynchronous version of this method.

    @@ -465,7 +465,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the CancelSession() D-Bus method on proxy +

    Asynchronously invokes the CancelSession() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -556,7 +556,7 @@ (MmGdbusModemOma *proxy, GCancellable *cancellable, GError **error); -

    Synchronously invokes the CancelSession() D-Bus method on proxy +

    Synchronously invokes the CancelSession() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_oma_call_cancel_session() for the asynchronous version of this method.

    @@ -602,7 +602,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Setup() D-Bus method on proxy +

    Asynchronously invokes the Setup() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -697,7 +697,7 @@ guint arg_features, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Setup() D-Bus method on proxy +

    Synchronously invokes the Setup() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_oma_call_setup() for the asynchronous version of this method.

    @@ -749,7 +749,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the StartClientInitiatedSession() D-Bus method on proxy +

    Asynchronously invokes the StartClientInitiatedSession() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -846,7 +846,7 @@ guint arg_session_type, GCancellable *cancellable, GError **error); -

    Synchronously invokes the StartClientInitiatedSession() D-Bus method on proxy +

    Synchronously invokes the StartClientInitiatedSession() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_oma_call_start_client_initiated_session() for the asynchronous version of this method.

    @@ -893,7 +893,7 @@

    mm_gdbus_modem_oma_get_featuresย ()

    guint
     mm_gdbus_modem_oma_get_features (MmGdbusModemOma *object);
    -

    Gets the value of the "Features" D-Bus property.

    +

    Gets the value of the "Features" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -921,7 +921,7 @@

    mm_gdbus_modem_oma_get_session_stateย ()

    gint
     mm_gdbus_modem_oma_get_session_state (MmGdbusModemOma *object);
    -

    Gets the value of the "SessionState" D-Bus property.

    +

    Gets the value of the "SessionState" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -949,7 +949,7 @@

    mm_gdbus_modem_oma_get_session_typeย ()

    guint
     mm_gdbus_modem_oma_get_session_type (MmGdbusModemOma *object);
    -

    Gets the value of the "SessionType" D-Bus property.

    +

    Gets the value of the "SessionType" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -978,7 +978,7 @@
    GVariantย *
     mm_gdbus_modem_oma_get_pending_network_initiated_sessions
                                    (MmGdbusModemOma *object);
    -

    Gets the value of the "PendingNetworkInitiatedSessions" D-Bus property.

    +

    Gets the value of the "PendingNetworkInitiatedSessions" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_oma_dup_pending_network_initiated_sessions() if on another thread.

    @@ -1002,7 +1002,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -1011,7 +1011,7 @@
    GVariantย *
     mm_gdbus_modem_oma_dup_pending_network_initiated_sessions
                                    (MmGdbusModemOma *object);
    -

    Gets a copy of the "PendingNetworkInitiatedSessions" D-Bus property.

    +

    Gets a copy of the "PendingNetworkInitiatedSessions" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -1032,7 +1032,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]

    @@ -1154,7 +1154,7 @@

    The โ€œfeaturesโ€ property

      โ€œfeaturesโ€                 guint
    -

    Represents the D-Bus property "Features".

    +

    Represents the D-Bus property "Features".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemOma

    Flags: Read / Write

    @@ -1164,7 +1164,7 @@

    The โ€œpending-network-initiated-sessionsโ€ property

      โ€œpending-network-initiated-sessionsโ€ GVariantย *
    -

    Represents the D-Bus property "PendingNetworkInitiatedSessions".

    +

    Represents the D-Bus property "PendingNetworkInitiatedSessions".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemOma

    Flags: Read / Write

    @@ -1175,7 +1175,7 @@

    The โ€œsession-stateโ€ property

      โ€œsession-stateโ€            int
    -

    Represents the D-Bus property "SessionState".

    +

    Represents the D-Bus property "SessionState".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemOma

    Flags: Read / Write

    @@ -1185,7 +1185,7 @@

    The โ€œsession-typeโ€ property

      โ€œsession-typeโ€             guint
    -

    Represents the D-Bus property "SessionType".

    +

    Represents the D-Bus property "SessionType".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemOma

    Flags: Read / Write

    @@ -1202,7 +1202,7 @@ guint arg_session_id, gboolean arg_accept, gpointer user_data) -

    Signal emitted when a remote caller is invoking the AcceptNetworkInitiatedSession() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the AcceptNetworkInitiatedSession() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_oma_complete_accept_network_initiated_session() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1244,7 +1244,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -1255,7 +1255,7 @@ user_function (MmGdbusModemOma *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the CancelSession() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the CancelSession() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_oma_complete_cancel_session() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1287,7 +1287,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -1299,7 +1299,7 @@ GDBusMethodInvocation *invocation, guint arg_features, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Setup() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Setup() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_oma_complete_setup() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1336,7 +1336,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -1348,7 +1348,7 @@ GDBusMethodInvocation *invocation, guint arg_session_type, gpointer user_data) -

    Signal emitted when a remote caller is invoking the StartClientInitiatedSession() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the StartClientInitiatedSession() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_oma_complete_start_client_initiated_session() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1385,7 +1385,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -1398,7 +1398,7 @@ int arg_new_session_state, guint arg_session_state_failed_reason, gpointer user_data) -

    On the client-side, this signal is emitted whenever the D-Bus signal "SessionStateChanged" is received.

    +

    On the client-side, this signal is emitted whenever the D-Bus signal "SessionStateChanged" is received.

    On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.

    Parameters

    @@ -1442,6 +1442,6 @@
    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemOmaProxy.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemOmaProxy.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemOmaProxy.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemOmaProxy.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -222,7 +222,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemOmaProxy]

    +

    [transfer full][type MmGdbusModemOmaProxy]


    @@ -324,7 +324,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemOmaProxy]

    +

    [transfer full][type MmGdbusModemOmaProxy]


    @@ -387,7 +387,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemOmaProxy]

    +

    [transfer full][type MmGdbusModemOmaProxy]


    @@ -450,7 +450,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemOmaProxy]

    +

    [transfer full][type MmGdbusModemOmaProxy]

    @@ -464,6 +464,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemOmaSkeleton.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemOmaSkeleton.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemOmaSkeleton.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemOmaSkeleton.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -89,7 +89,7 @@

    Returns

    The skeleton object.

    -

    [transfer full][type MmGdbusModemOmaSkeleton]

    +

    [transfer full][type MmGdbusModemOmaSkeleton]

    @@ -103,6 +103,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemProxy.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemProxy.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemProxy.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemProxy.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -222,7 +222,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemProxy]

    +

    [transfer full][type MmGdbusModemProxy]


    @@ -324,7 +324,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemProxy]

    +

    [transfer full][type MmGdbusModemProxy]


    @@ -386,7 +386,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemProxy]

    +

    [transfer full][type MmGdbusModemProxy]


    @@ -449,7 +449,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemProxy]

    +

    [transfer full][type MmGdbusModemProxy]

    @@ -463,6 +463,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemSignal.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemSignal.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemSignal.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemSignal.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -97,6 +97,14 @@ GVariantย * +mm_gdbus_modem_signal_get_nr5gย () + + + + +GVariantย * + + mm_gdbus_modem_signal_dup_cdmaย () @@ -134,6 +142,14 @@ +GVariantย * + + +mm_gdbus_modem_signal_dup_nr5gย () + + + + void @@ -193,6 +209,12 @@ Read / Write + +GVariantย * +nr5g +Read / Write + + guint rate Read / Write @@ -268,7 +290,7 @@

    mm_gdbus_modem_signal_get_rateย ()

    guint
     mm_gdbus_modem_signal_get_rate (MmGdbusModemSignal *object);
    -

    Gets the value of the "Rate" D-Bus property.

    +

    Gets the value of the "Rate" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -296,7 +318,7 @@

    mm_gdbus_modem_signal_get_cdmaย ()

    GVariantย *
     mm_gdbus_modem_signal_get_cdma (MmGdbusModemSignal *object);
    -

    Gets the value of the "Cdma" D-Bus property.

    +

    Gets the value of the "Cdma" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_signal_dup_cdma() if on another thread.

    @@ -320,7 +342,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -328,7 +350,7 @@

    mm_gdbus_modem_signal_get_evdoย ()

    GVariantย *
     mm_gdbus_modem_signal_get_evdo (MmGdbusModemSignal *object);
    -

    Gets the value of the "Evdo" D-Bus property.

    +

    Gets the value of the "Evdo" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_signal_dup_evdo() if on another thread.

    @@ -352,7 +374,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -360,7 +382,7 @@

    mm_gdbus_modem_signal_get_gsmย ()

    GVariantย *
     mm_gdbus_modem_signal_get_gsm (MmGdbusModemSignal *object);
    -

    Gets the value of the "Gsm" D-Bus property.

    +

    Gets the value of the "Gsm" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_signal_dup_gsm() if on another thread.

    @@ -384,7 +406,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -392,7 +414,7 @@

    mm_gdbus_modem_signal_get_umtsย ()

    GVariantย *
     mm_gdbus_modem_signal_get_umts (MmGdbusModemSignal *object);
    -

    Gets the value of the "Umts" D-Bus property.

    +

    Gets the value of the "Umts" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_signal_dup_umts() if on another thread.

    @@ -416,7 +438,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -424,7 +446,7 @@

    mm_gdbus_modem_signal_get_lteย ()

    GVariantย *
     mm_gdbus_modem_signal_get_lte (MmGdbusModemSignal *object);
    -

    Gets the value of the "Lte" D-Bus property.

    +

    Gets the value of the "Lte" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_signal_dup_lte() if on another thread.

    @@ -448,7 +470,39 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]

    + + +
    +
    +

    mm_gdbus_modem_signal_get_nr5gย ()

    +
    GVariantย *
    +mm_gdbus_modem_signal_get_nr5g (MmGdbusModemSignal *object);
    +

    Gets the value of the "Nr5g" D-Bus property.

    +

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    +

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object + was constructed. Use mm_gdbus_modem_signal_dup_nr5g() if on another thread.

    +

    [skip]

    +
    +

    Parameters

    +
    +++++ + + + + + +

    object

    A MmGdbusModemSignal.

    ย 
    +
    +
    +

    Returns

    +

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object +.

    +

    [transfer none][nullable]


    @@ -456,7 +510,7 @@

    mm_gdbus_modem_signal_dup_cdmaย ()

    GVariantย *
     mm_gdbus_modem_signal_dup_cdma (MmGdbusModemSignal *object);
    -

    Gets a copy of the "Cdma" D-Bus property.

    +

    Gets a copy of the "Cdma" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -477,7 +531,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -485,7 +539,7 @@

    mm_gdbus_modem_signal_dup_evdoย ()

    GVariantย *
     mm_gdbus_modem_signal_dup_evdo (MmGdbusModemSignal *object);
    -

    Gets a copy of the "Evdo" D-Bus property.

    +

    Gets a copy of the "Evdo" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -506,7 +560,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -514,7 +568,7 @@

    mm_gdbus_modem_signal_dup_gsmย ()

    GVariantย *
     mm_gdbus_modem_signal_dup_gsm (MmGdbusModemSignal *object);
    -

    Gets a copy of the "Gsm" D-Bus property.

    +

    Gets a copy of the "Gsm" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -535,7 +589,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -543,7 +597,7 @@

    mm_gdbus_modem_signal_dup_umtsย ()

    GVariantย *
     mm_gdbus_modem_signal_dup_umts (MmGdbusModemSignal *object);
    -

    Gets a copy of the "Umts" D-Bus property.

    +

    Gets a copy of the "Umts" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -564,7 +618,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -572,7 +626,7 @@

    mm_gdbus_modem_signal_dup_lteย ()

    GVariantย *
     mm_gdbus_modem_signal_dup_lte (MmGdbusModemSignal *object);
    -

    Gets a copy of the "Lte" D-Bus property.

    +

    Gets a copy of the "Lte" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -593,7 +647,36 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]

    +
    +
    +
    +
    +

    mm_gdbus_modem_signal_dup_nr5gย ()

    +
    GVariantย *
    +mm_gdbus_modem_signal_dup_nr5g (MmGdbusModemSignal *object);
    +

    Gets a copy of the "Nr5g" D-Bus property.

    +

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    +

    [skip]

    +
    +

    Parameters

    +
    +++++ + + + + + +

    object

    A MmGdbusModemSignal.

    ย 
    +
    +
    +

    Returns

    +

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    +

    [transfer full][nullable]


    @@ -605,7 +688,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Setup() D-Bus method on proxy +

    Asynchronously invokes the Setup() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -701,7 +784,7 @@ guint arg_rate, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Setup() D-Bus method on proxy +

    Synchronously invokes the Setup() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_signal_call_setup() for the asynchronous version of this method.

    @@ -770,6 +853,8 @@ GVariant * (*get_lte) (MmGdbusModemSignal *object); + GVariant * (*get_nr5g) (MmGdbusModemSignal *object); + guint (*get_rate) (MmGdbusModemSignal *object); GVariant * (*get_umts) (MmGdbusModemSignal *object); @@ -816,6 +901,11 @@ ย  +

    get_nr5gย ()

    +

    Getter for the โ€œnr5gโ€ property.

    +ย  + +

    get_rateย ()

    Getter for the โ€œrateโ€ property.

    ย  @@ -835,7 +925,7 @@

    The โ€œcdmaโ€ property

      โ€œcdmaโ€                     GVariantย *
    -

    Represents the D-Bus property "Cdma".

    +

    Represents the D-Bus property "Cdma".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemSignal

    Flags: Read / Write

    @@ -846,7 +936,7 @@

    The โ€œevdoโ€ property

      โ€œevdoโ€                     GVariantย *
    -

    Represents the D-Bus property "Evdo".

    +

    Represents the D-Bus property "Evdo".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemSignal

    Flags: Read / Write

    @@ -857,7 +947,7 @@

    The โ€œgsmโ€ property

      โ€œgsmโ€                      GVariantย *
    -

    Represents the D-Bus property "Gsm".

    +

    Represents the D-Bus property "Gsm".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemSignal

    Flags: Read / Write

    @@ -868,7 +958,18 @@

    The โ€œlteโ€ property

      โ€œlteโ€                      GVariantย *
    -

    Represents the D-Bus property "Lte".

    +

    Represents the D-Bus property "Lte".

    +

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    +

    Owner: MmGdbusModemSignal

    +

    Flags: Read / Write

    +

    Allowed values: GVariant<a{sv}>

    +

    Default value: NULL

    +
    +
    +
    +

    The โ€œnr5gโ€ property

    +
      โ€œnr5gโ€                     GVariantย *
    +

    Represents the D-Bus property "Nr5g".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemSignal

    Flags: Read / Write

    @@ -879,7 +980,7 @@

    The โ€œrateโ€ property

      โ€œrateโ€                     guint
    -

    Represents the D-Bus property "Rate".

    +

    Represents the D-Bus property "Rate".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemSignal

    Flags: Read / Write

    @@ -889,7 +990,7 @@

    The โ€œumtsโ€ property

      โ€œumtsโ€                     GVariantย *
    -

    Represents the D-Bus property "Umts".

    +

    Represents the D-Bus property "Umts".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemSignal

    Flags: Read / Write

    @@ -906,7 +1007,7 @@ GDBusMethodInvocation *invocation, guint arg_rate, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Setup() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Setup() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_signal_complete_setup() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -943,13 +1044,13 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemSignalProxy.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemSignalProxy.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemSignalProxy.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemSignalProxy.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -223,7 +223,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemSignalProxy]

    +

    [transfer full][type MmGdbusModemSignalProxy]


    @@ -326,7 +326,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemSignalProxy]

    +

    [transfer full][type MmGdbusModemSignalProxy]


    @@ -389,7 +389,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemSignalProxy]

    +

    [transfer full][type MmGdbusModemSignalProxy]


    @@ -452,7 +452,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemSignalProxy]

    +

    [transfer full][type MmGdbusModemSignalProxy]

    @@ -466,6 +466,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemSignalSkeleton.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemSignalSkeleton.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemSignalSkeleton.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemSignalSkeleton.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -89,7 +89,7 @@

    Returns

    The skeleton object.

    -

    [transfer full][type MmGdbusModemSignalSkeleton]

    +

    [transfer full][type MmGdbusModemSignalSkeleton]

    @@ -103,6 +103,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemSimple.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemSimple.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemSimple.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemSimple.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -196,7 +196,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Connect() D-Bus method on proxy +

    Asynchronously invokes the Connect() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -300,7 +300,7 @@ gchar **out_bearer, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Connect() D-Bus method on proxy +

    Synchronously invokes the Connect() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_simple_call_connect() for the asynchronous version of this method.

    @@ -356,7 +356,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Disconnect() D-Bus method on proxy +

    Asynchronously invokes the Disconnect() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -453,7 +453,7 @@ const gchar *arg_bearer, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Disconnect() D-Bus method on proxy +

    Synchronously invokes the Disconnect() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_simple_call_disconnect() for the asynchronous version of this method.

    @@ -503,7 +503,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the GetStatus() D-Bus method on proxy +

    Asynchronously invokes the GetStatus() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -601,7 +601,7 @@ GVariant **out_properties, GCancellable *cancellable, GError **error); -

    Synchronously invokes the GetStatus() D-Bus method on proxy +

    Synchronously invokes the GetStatus() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_simple_call_get_status() for the asynchronous version of this method.

    @@ -716,7 +716,7 @@ GDBusMethodInvocation *invocation, GVariant *arg_properties, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Connect() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Connect() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_simple_complete_connect() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -753,7 +753,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -765,7 +765,7 @@ GDBusMethodInvocation *invocation, char *arg_bearer, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Disconnect() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Disconnect() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_simple_complete_disconnect() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -802,7 +802,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -813,7 +813,7 @@ user_function (MmGdbusModemSimple *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the GetStatus() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the GetStatus() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_simple_complete_get_status() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -845,13 +845,13 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemSimpleProxy.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemSimpleProxy.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemSimpleProxy.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemSimpleProxy.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -223,7 +223,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemSimpleProxy]

    +

    [transfer full][type MmGdbusModemSimpleProxy]


    @@ -326,7 +326,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemSimpleProxy]

    +

    [transfer full][type MmGdbusModemSimpleProxy]


    @@ -389,7 +389,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemSimpleProxy]

    +

    [transfer full][type MmGdbusModemSimpleProxy]


    @@ -452,7 +452,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemSimpleProxy]

    +

    [transfer full][type MmGdbusModemSimpleProxy]

    @@ -466,6 +466,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemSimpleSkeleton.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemSimpleSkeleton.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemSimpleSkeleton.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemSimpleSkeleton.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -89,7 +89,7 @@

    Returns

    The skeleton object.

    -

    [transfer full][type MmGdbusModemSimpleSkeleton]

    +

    [transfer full][type MmGdbusModemSimpleSkeleton]

    @@ -103,6 +103,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemSkeleton.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemSkeleton.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemSkeleton.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemSkeleton.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -89,7 +89,7 @@

    Returns

    The skeleton object.

    -

    [transfer full][type MmGdbusModemSkeleton]

    +

    [transfer full][type MmGdbusModemSkeleton]

    @@ -103,6 +103,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemTime.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemTime.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemTime.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemTime.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -173,7 +173,7 @@
    GVariantย *
     mm_gdbus_modem_time_get_network_timezone
                                    (MmGdbusModemTime *object);
    -

    Gets the value of the "NetworkTimezone" D-Bus property.

    +

    Gets the value of the "NetworkTimezone" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_time_dup_network_timezone() if on another thread.

    @@ -197,7 +197,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -206,7 +206,7 @@
    GVariantย *
     mm_gdbus_modem_time_dup_network_timezone
                                    (MmGdbusModemTime *object);
    -

    Gets a copy of the "NetworkTimezone" D-Bus property.

    +

    Gets a copy of the "NetworkTimezone" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -227,7 +227,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -239,7 +239,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the GetNetworkTime() D-Bus method on proxy +

    Asynchronously invokes the GetNetworkTime() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -337,7 +337,7 @@ gchar **out_time, GCancellable *cancellable, GError **error); -

    Synchronously invokes the GetNetworkTime() D-Bus method on proxy +

    Synchronously invokes the GetNetworkTime() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_time_call_get_network_time() for the asynchronous version of this method.

    @@ -444,7 +444,7 @@

    The โ€œnetwork-timezoneโ€ property

      โ€œnetwork-timezoneโ€         GVariantย *
    -

    Represents the D-Bus property "NetworkTimezone".

    +

    Represents the D-Bus property "NetworkTimezone".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemTime

    Flags: Read / Write

    @@ -460,7 +460,7 @@ user_function (MmGdbusModemTime *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the GetNetworkTime() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the GetNetworkTime() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_time_complete_get_network_time() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -492,7 +492,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -503,7 +503,7 @@ user_function (MmGdbusModemTime *object, char *arg_time, gpointer user_data) -

    On the client-side, this signal is emitted whenever the D-Bus signal "NetworkTimeChanged" is received.

    +

    On the client-side, this signal is emitted whenever the D-Bus signal "NetworkTimeChanged" is received.

    On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.

    Parameters

    @@ -537,6 +537,6 @@
    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemTimeProxy.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemTimeProxy.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemTimeProxy.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemTimeProxy.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -222,7 +222,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemTimeProxy]

    +

    [transfer full][type MmGdbusModemTimeProxy]


    @@ -324,7 +324,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemTimeProxy]

    +

    [transfer full][type MmGdbusModemTimeProxy]


    @@ -387,7 +387,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemTimeProxy]

    +

    [transfer full][type MmGdbusModemTimeProxy]


    @@ -450,7 +450,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemTimeProxy]

    +

    [transfer full][type MmGdbusModemTimeProxy]

    @@ -464,6 +464,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemTimeSkeleton.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemTimeSkeleton.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemTimeSkeleton.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemTimeSkeleton.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -89,7 +89,7 @@

    Returns

    The skeleton object.

    -

    [transfer full][type MmGdbusModemTimeSkeleton]

    +

    [transfer full][type MmGdbusModemTimeSkeleton]

    @@ -103,6 +103,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemVoice.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemVoice.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemVoice.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemVoice.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -422,7 +422,7 @@

    mm_gdbus_modem_voice_get_callsย ()

    const gcharย *const *
     mm_gdbus_modem_voice_get_calls (MmGdbusModemVoice *object);
    -

    Gets the value of the "Calls" D-Bus property.

    +

    Gets the value of the "Calls" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_modem_voice_dup_calls() if on another thread.

    @@ -446,7 +446,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -454,7 +454,7 @@

    mm_gdbus_modem_voice_dup_callsย ()

    gcharย **
     mm_gdbus_modem_voice_dup_calls (MmGdbusModemVoice *object);
    -

    Gets a copy of the "Calls" D-Bus property.

    +

    Gets a copy of the "Calls" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -475,7 +475,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_strfreev().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -484,7 +484,7 @@
    gboolean
     mm_gdbus_modem_voice_get_emergency_only
                                    (MmGdbusModemVoice *object);
    -

    Gets the value of the "EmergencyOnly" D-Bus property.

    +

    Gets the value of the "EmergencyOnly" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -516,7 +516,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the CreateCall() D-Bus method on proxy +

    Asynchronously invokes the CreateCall() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -620,7 +620,7 @@ gchar **out_path, GCancellable *cancellable, GError **error); -

    Synchronously invokes the CreateCall() D-Bus method on proxy +

    Synchronously invokes the CreateCall() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_voice_call_create_call() for the asynchronous version of this method.

    @@ -676,7 +676,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the DeleteCall() D-Bus method on proxy +

    Asynchronously invokes the DeleteCall() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -773,7 +773,7 @@ const gchar *arg_path, GCancellable *cancellable, GError **error); -

    Synchronously invokes the DeleteCall() D-Bus method on proxy +

    Synchronously invokes the DeleteCall() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_voice_call_delete_call() for the asynchronous version of this method.

    @@ -823,7 +823,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the ListCalls() D-Bus method on proxy +

    Asynchronously invokes the ListCalls() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -921,7 +921,7 @@ gchar ***out_result, GCancellable *cancellable, GError **error); -

    Synchronously invokes the ListCalls() D-Bus method on proxy +

    Synchronously invokes the ListCalls() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_voice_call_list_calls() for the asynchronous version of this method.

    @@ -972,7 +972,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the HangupAndAccept() D-Bus method on proxy +

    Asynchronously invokes the HangupAndAccept() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -1063,7 +1063,7 @@ (MmGdbusModemVoice *proxy, GCancellable *cancellable, GError **error); -

    Synchronously invokes the HangupAndAccept() D-Bus method on proxy +

    Synchronously invokes the HangupAndAccept() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_voice_call_hangup_and_accept() for the asynchronous version of this method.

    @@ -1109,7 +1109,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the HoldAndAccept() D-Bus method on proxy +

    Asynchronously invokes the HoldAndAccept() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -1200,7 +1200,7 @@ (MmGdbusModemVoice *proxy, GCancellable *cancellable, GError **error); -

    Synchronously invokes the HoldAndAccept() D-Bus method on proxy +

    Synchronously invokes the HoldAndAccept() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_voice_call_hold_and_accept() for the asynchronous version of this method.

    @@ -1245,7 +1245,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the HangupAll() D-Bus method on proxy +

    Asynchronously invokes the HangupAll() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -1336,7 +1336,7 @@ (MmGdbusModemVoice *proxy, GCancellable *cancellable, GError **error); -

    Synchronously invokes the HangupAll() D-Bus method on proxy +

    Synchronously invokes the HangupAll() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_voice_call_hangup_all() for the asynchronous version of this method.

    @@ -1381,7 +1381,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Transfer() D-Bus method on proxy +

    Asynchronously invokes the Transfer() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -1472,7 +1472,7 @@ (MmGdbusModemVoice *proxy, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Transfer() D-Bus method on proxy +

    Synchronously invokes the Transfer() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_voice_call_transfer() for the asynchronous version of this method.

    @@ -1518,7 +1518,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the CallWaitingQuery() D-Bus method on proxy +

    Asynchronously invokes the CallWaitingQuery() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -1616,7 +1616,7 @@ gboolean *out_status, GCancellable *cancellable, GError **error); -

    Synchronously invokes the CallWaitingQuery() D-Bus method on proxy +

    Synchronously invokes the CallWaitingQuery() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_voice_call_call_waiting_query() for the asynchronous version of this method.

    @@ -1668,7 +1668,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the CallWaitingSetup() D-Bus method on proxy +

    Asynchronously invokes the CallWaitingSetup() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -1765,7 +1765,7 @@ gboolean arg_enable, GCancellable *cancellable, GError **error); -

    Synchronously invokes the CallWaitingSetup() D-Bus method on proxy +

    Synchronously invokes the CallWaitingSetup() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_modem_voice_call_call_waiting_setup() for the asynchronous version of this method.

    @@ -1963,7 +1963,7 @@

    The โ€œcallsโ€ property

      โ€œcallsโ€                    GStrv
    -

    Represents the D-Bus property "Calls".

    +

    Represents the D-Bus property "Calls".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemVoice

    Flags: Read / Write

    @@ -1972,7 +1972,7 @@

    The โ€œemergency-onlyโ€ property

      โ€œemergency-onlyโ€           gboolean
    -

    Represents the D-Bus property "EmergencyOnly".

    +

    Represents the D-Bus property "EmergencyOnly".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusModemVoice

    Flags: Read / Write

    @@ -1987,7 +1987,7 @@ user_function (MmGdbusModemVoice *object, char *arg_path, gpointer user_data) -

    On the client-side, this signal is emitted whenever the D-Bus signal "CallAdded" is received.

    +

    On the client-side, this signal is emitted whenever the D-Bus signal "CallAdded" is received.

    On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.

    Parameters

    @@ -2025,7 +2025,7 @@ user_function (MmGdbusModemVoice *object, char *arg_path, gpointer user_data) -

    On the client-side, this signal is emitted whenever the D-Bus signal "CallDeleted" is received.

    +

    On the client-side, this signal is emitted whenever the D-Bus signal "CallDeleted" is received.

    On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.

    Parameters

    @@ -2063,7 +2063,7 @@ user_function (MmGdbusModemVoice *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the CallWaitingQuery() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the CallWaitingQuery() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_voice_complete_call_waiting_query() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -2095,7 +2095,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -2107,7 +2107,7 @@ GDBusMethodInvocation *invocation, gboolean arg_enable, gpointer user_data) -

    Signal emitted when a remote caller is invoking the CallWaitingSetup() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the CallWaitingSetup() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_voice_complete_call_waiting_setup() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -2144,7 +2144,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -2156,7 +2156,7 @@ GDBusMethodInvocation *invocation, GVariant *arg_properties, gpointer user_data) -

    Signal emitted when a remote caller is invoking the CreateCall() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the CreateCall() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_voice_complete_create_call() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -2193,7 +2193,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -2205,7 +2205,7 @@ GDBusMethodInvocation *invocation, char *arg_path, gpointer user_data) -

    Signal emitted when a remote caller is invoking the DeleteCall() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the DeleteCall() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_voice_complete_delete_call() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -2242,7 +2242,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -2253,7 +2253,7 @@ user_function (MmGdbusModemVoice *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the HangupAll() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the HangupAll() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_voice_complete_hangup_all() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -2285,7 +2285,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -2296,7 +2296,7 @@ user_function (MmGdbusModemVoice *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the HangupAndAccept() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the HangupAndAccept() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_voice_complete_hangup_and_accept() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -2328,7 +2328,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -2339,7 +2339,7 @@ user_function (MmGdbusModemVoice *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the HoldAndAccept() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the HoldAndAccept() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_voice_complete_hold_and_accept() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -2371,7 +2371,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -2382,7 +2382,7 @@ user_function (MmGdbusModemVoice *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the ListCalls() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the ListCalls() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_voice_complete_list_calls() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -2414,7 +2414,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -2425,7 +2425,7 @@ user_function (MmGdbusModemVoice *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Transfer() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Transfer() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_modem_voice_complete_transfer() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -2457,13 +2457,13 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemVoiceProxy.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemVoiceProxy.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemVoiceProxy.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemVoiceProxy.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -222,7 +222,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemVoiceProxy]

    +

    [transfer full][type MmGdbusModemVoiceProxy]


    @@ -325,7 +325,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemVoiceProxy]

    +

    [transfer full][type MmGdbusModemVoiceProxy]


    @@ -388,7 +388,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemVoiceProxy]

    +

    [transfer full][type MmGdbusModemVoiceProxy]


    @@ -451,7 +451,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusModemVoiceProxy]

    +

    [transfer full][type MmGdbusModemVoiceProxy]

    @@ -465,6 +465,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemVoiceSkeleton.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemVoiceSkeleton.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusModemVoiceSkeleton.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusModemVoiceSkeleton.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -89,7 +89,7 @@

    Returns

    The skeleton object.

    -

    [transfer full][type MmGdbusModemVoiceSkeleton]

    +

    [transfer full][type MmGdbusModemVoiceSkeleton]

    @@ -103,6 +103,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusObject.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusObject.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusObject.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusObject.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -393,7 +393,7 @@

    A MmGdbusModem or NULL if object does not implement the interface. Do not free the returned object, it is owned by object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -422,7 +422,7 @@

    Returns

    A MmGdbusModem that must be freed with g_object_unref() or NULL if object does not implement the interface.

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -454,7 +454,7 @@

    A MmGdbusModem3gpp or NULL if object does not implement the interface. Do not free the returned object, it is owned by object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -483,7 +483,7 @@

    Returns

    A MmGdbusModem3gpp that must be freed with g_object_unref() or NULL if object does not implement the interface.

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -515,7 +515,7 @@

    A MmGdbusModem3gppUssd or NULL if object does not implement the interface. Do not free the returned object, it is owned by object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -544,7 +544,7 @@

    Returns

    A MmGdbusModem3gppUssd that must be freed with g_object_unref() or NULL if object does not implement the interface.

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -576,7 +576,7 @@

    A MmGdbusModemCdma or NULL if object does not implement the interface. Do not free the returned object, it is owned by object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -605,7 +605,7 @@

    Returns

    A MmGdbusModemCdma that must be freed with g_object_unref() or NULL if object does not implement the interface.

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -637,7 +637,7 @@

    A MmGdbusModemLocation or NULL if object does not implement the interface. Do not free the returned object, it is owned by object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -666,7 +666,7 @@

    Returns

    A MmGdbusModemLocation that must be freed with g_object_unref() or NULL if object does not implement the interface.

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -698,7 +698,7 @@

    A MmGdbusModemMessaging or NULL if object does not implement the interface. Do not free the returned object, it is owned by object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -727,7 +727,7 @@

    Returns

    A MmGdbusModemMessaging that must be freed with g_object_unref() or NULL if object does not implement the interface.

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -759,7 +759,7 @@

    A MmGdbusModemTime or NULL if object does not implement the interface. Do not free the returned object, it is owned by object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -788,7 +788,7 @@

    Returns

    A MmGdbusModemTime that must be freed with g_object_unref() or NULL if object does not implement the interface.

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -820,7 +820,7 @@

    A MmGdbusModemFirmware or NULL if object does not implement the interface. Do not free the returned object, it is owned by object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -849,7 +849,7 @@

    Returns

    A MmGdbusModemFirmware that must be freed with g_object_unref() or NULL if object does not implement the interface.

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -881,7 +881,7 @@

    A MmGdbusModemOma or NULL if object does not implement the interface. Do not free the returned object, it is owned by object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -910,7 +910,7 @@

    Returns

    A MmGdbusModemOma that must be freed with g_object_unref() or NULL if object does not implement the interface.

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -942,7 +942,7 @@

    A MmGdbusModemSimple or NULL if object does not implement the interface. Do not free the returned object, it is owned by object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -971,7 +971,7 @@

    Returns

    A MmGdbusModemSimple that must be freed with g_object_unref() or NULL if object does not implement the interface.

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -1003,7 +1003,7 @@

    A MmGdbusModemSignal or NULL if object does not implement the interface. Do not free the returned object, it is owned by object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -1032,7 +1032,7 @@

    Returns

    A MmGdbusModemSignal that must be freed with g_object_unref() or NULL if object does not implement the interface.

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -1064,7 +1064,7 @@

    A MmGdbusModemVoice or NULL if object does not implement the interface. Do not free the returned object, it is owned by object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -1093,7 +1093,7 @@

    Returns

    A MmGdbusModemVoice that must be freed with g_object_unref() or NULL if object does not implement the interface.

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]

    @@ -1241,6 +1241,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusObjectManagerClient.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusObjectManagerClient.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusObjectManagerClient.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusObjectManagerClient.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -232,7 +232,7 @@

    Returns

    The constructed object manager client or NULL if error is set.

    -

    [transfer full][type MmGdbusObjectManagerClient]

    +

    [transfer full][type MmGdbusObjectManagerClient]


    @@ -296,7 +296,7 @@

    Returns

    The constructed object manager client or NULL if error is set.

    -

    [transfer full][type MmGdbusObjectManagerClient]

    +

    [transfer full][type MmGdbusObjectManagerClient]


    @@ -399,7 +399,7 @@

    Returns

    The constructed object manager client or NULL if error is set.

    -

    [transfer full][type MmGdbusObjectManagerClient]

    +

    [transfer full][type MmGdbusObjectManagerClient]


    @@ -462,7 +462,7 @@

    Returns

    The constructed object manager client or NULL if error is set.

    -

    [transfer full][type MmGdbusObjectManagerClient]

    +

    [transfer full][type MmGdbusObjectManagerClient]


    @@ -525,6 +525,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusObjectProxy.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusObjectProxy.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusObjectProxy.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusObjectProxy.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -113,7 +113,7 @@

    Returns

    The proxy object.

    -

    [transfer full]

    +

    [transfer full]

    @@ -127,6 +127,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusObjectSkeleton.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusObjectSkeleton.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusObjectSkeleton.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusObjectSkeleton.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -202,7 +202,7 @@

    Returns

    The skeleton object.

    -

    [transfer full]

    +

    [transfer full]


    @@ -599,6 +599,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusOrgFreedesktopModemManager1.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusOrgFreedesktopModemManager1.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusOrgFreedesktopModemManager1.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusOrgFreedesktopModemManager1.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -254,7 +254,7 @@
    gcharย *
     mm_gdbus_org_freedesktop_modem_manager1_dup_version
                                    (MmGdbusOrgFreedesktopModemManager1 *object);
    -

    Gets a copy of the "Version" D-Bus property.

    +

    Gets a copy of the "Version" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -275,7 +275,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -284,7 +284,7 @@
    const gcharย *
     mm_gdbus_org_freedesktop_modem_manager1_get_version
                                    (MmGdbusOrgFreedesktopModemManager1 *object);
    -

    Gets the value of the "Version" D-Bus property.

    +

    Gets the value of the "Version" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_org_freedesktop_modem_manager1_dup_version() if on another thread.

    @@ -308,7 +308,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -320,7 +320,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the ScanDevices() D-Bus method on proxy +

    Asynchronously invokes the ScanDevices() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -411,7 +411,7 @@ (MmGdbusOrgFreedesktopModemManager1 *proxy, GCancellable *cancellable, GError **error); -

    Synchronously invokes the ScanDevices() D-Bus method on proxy +

    Synchronously invokes the ScanDevices() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_org_freedesktop_modem_manager1_call_scan_devices() for the asynchronous version of this method.

    @@ -459,7 +459,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the InhibitDevice() D-Bus method on proxy +

    Asynchronously invokes the InhibitDevice() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -562,7 +562,7 @@ gboolean arg_inhibit, GCancellable *cancellable, GError **error); -

    Synchronously invokes the InhibitDevice() D-Bus method on proxy +

    Synchronously invokes the InhibitDevice() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_org_freedesktop_modem_manager1_call_inhibit_device() for the asynchronous version of this method.

    @@ -619,7 +619,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the SetLogging() D-Bus method on proxy +

    Asynchronously invokes the SetLogging() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -716,7 +716,7 @@ const gchar *arg_level, GCancellable *cancellable, GError **error); -

    Synchronously invokes the SetLogging() D-Bus method on proxy +

    Synchronously invokes the SetLogging() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_org_freedesktop_modem_manager1_call_set_logging() for the asynchronous version of this method.

    @@ -768,7 +768,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the ReportKernelEvent() D-Bus method on proxy +

    Asynchronously invokes the ReportKernelEvent() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -865,7 +865,7 @@ GVariant *arg_properties, GCancellable *cancellable, GError **error); -

    Synchronously invokes the ReportKernelEvent() D-Bus method on proxy +

    Synchronously invokes the ReportKernelEvent() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_org_freedesktop_modem_manager1_call_report_kernel_event() for the asynchronous version of this method.

    @@ -994,7 +994,7 @@

    The โ€œversionโ€ property

      โ€œversionโ€                  charย *
    -

    Represents the D-Bus property "Version".

    +

    Represents the D-Bus property "Version".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusOrgFreedesktopModemManager1

    Flags: Read / Write

    @@ -1011,7 +1011,7 @@ char *arg_uid, gboolean arg_inhibit, gpointer user_data) -

    Signal emitted when a remote caller is invoking the InhibitDevice() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the InhibitDevice() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_org_freedesktop_modem_manager1_complete_inhibit_device() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1053,7 +1053,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -1065,7 +1065,7 @@ GDBusMethodInvocation *invocation, GVariant *arg_properties, gpointer user_data) -

    Signal emitted when a remote caller is invoking the ReportKernelEvent() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the ReportKernelEvent() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_org_freedesktop_modem_manager1_complete_report_kernel_event() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1102,7 +1102,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -1113,7 +1113,7 @@ user_function (MmGdbusOrgFreedesktopModemManager1 *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the ScanDevices() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the ScanDevices() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_org_freedesktop_modem_manager1_complete_scan_devices() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1145,7 +1145,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -1157,7 +1157,7 @@ GDBusMethodInvocation *invocation, char *arg_level, gpointer user_data) -

    Signal emitted when a remote caller is invoking the SetLogging() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the SetLogging() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_org_freedesktop_modem_manager1_complete_set_logging() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1194,13 +1194,13 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusOrgFreedesktopModemManager1Proxy.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusOrgFreedesktopModemManager1Proxy.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusOrgFreedesktopModemManager1Proxy.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusOrgFreedesktopModemManager1Proxy.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -223,7 +223,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusOrgFreedesktopModemManager1Proxy]

    +

    [transfer full][type MmGdbusOrgFreedesktopModemManager1Proxy]


    @@ -326,7 +326,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusOrgFreedesktopModemManager1Proxy]

    +

    [transfer full][type MmGdbusOrgFreedesktopModemManager1Proxy]


    @@ -389,7 +389,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusOrgFreedesktopModemManager1Proxy]

    +

    [transfer full][type MmGdbusOrgFreedesktopModemManager1Proxy]


    @@ -453,7 +453,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusOrgFreedesktopModemManager1Proxy]

    +

    [transfer full][type MmGdbusOrgFreedesktopModemManager1Proxy]

    @@ -467,6 +467,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusOrgFreedesktopModemManager1Skeleton.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusOrgFreedesktopModemManager1Skeleton.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusOrgFreedesktopModemManager1Skeleton.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusOrgFreedesktopModemManager1Skeleton.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -90,7 +90,7 @@

    Returns

    The skeleton object.

    -

    [transfer full][type MmGdbusOrgFreedesktopModemManager1Skeleton]

    +

    [transfer full][type MmGdbusOrgFreedesktopModemManager1Skeleton]

    @@ -104,6 +104,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusSim.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusSim.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusSim.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusSim.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -45,6 +45,14 @@ + +gboolean + + +mm_gdbus_sim_get_activeย () + + + const gcharย * @@ -63,6 +71,21 @@ const gcharย * +mm_gdbus_sim_get_eidย () + + + + +gcharย * + + +mm_gdbus_sim_dup_eidย () + + + +const gcharย * + + mm_gdbus_sim_get_sim_identifierย () @@ -228,6 +251,17 @@ +gboolean +active +Read / Write + + + +charย * +eid +Read / Write + + GStrv emergency-numbers Read / Write @@ -335,10 +369,38 @@

    Functions

    +

    mm_gdbus_sim_get_activeย ()

    +
    gboolean
    +mm_gdbus_sim_get_active (MmGdbusSim *object);
    +

    Gets the value of the "Active" D-Bus property.

    +

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    +

    [skip]

    +
    +

    Parameters

    +
    +++++ + + + + + +

    object

    A MmGdbusSim.

    ย 
    +
    +
    +

    Returns

    +

    The property value.

    +
    +
    +
    +

    mm_gdbus_sim_get_imsiย ()

    const gcharย *
     mm_gdbus_sim_get_imsi (MmGdbusSim *object);
    -

    Gets the value of the "Imsi" D-Bus property.

    +

    Gets the value of the "Imsi" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_sim_dup_imsi() if on another thread.

    @@ -362,7 +424,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -370,7 +432,7 @@

    mm_gdbus_sim_dup_imsiย ()

    gcharย *
     mm_gdbus_sim_dup_imsi (MmGdbusSim *object);
    -

    Gets a copy of the "Imsi" D-Bus property.

    +

    Gets a copy of the "Imsi" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -391,7 +453,68 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]

    +
    +
    +
    +
    +

    mm_gdbus_sim_get_eidย ()

    +
    const gcharย *
    +mm_gdbus_sim_get_eid (MmGdbusSim *object);
    +

    Gets the value of the "Eid" D-Bus property.

    +

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    +

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object + was constructed. Use mm_gdbus_sim_dup_eid() if on another thread.

    +

    [skip]

    +
    +

    Parameters

    +
    +++++ + + + + + +

    object

    A MmGdbusSim.

    ย 
    +
    +
    +

    Returns

    +

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object +.

    +

    [transfer none][nullable]

    +
    +
    +
    +
    +

    mm_gdbus_sim_dup_eidย ()

    +
    gcharย *
    +mm_gdbus_sim_dup_eid (MmGdbusSim *object);
    +

    Gets a copy of the "Eid" D-Bus property.

    +

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    +

    [skip]

    +
    +

    Parameters

    +
    +++++ + + + + + +

    object

    A MmGdbusSim.

    ย 
    +
    +
    +

    Returns

    +

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    +

    [transfer full][nullable]


    @@ -399,7 +522,7 @@

    mm_gdbus_sim_get_sim_identifierย ()

    const gcharย *
     mm_gdbus_sim_get_sim_identifier (MmGdbusSim *object);
    -

    Gets the value of the "SimIdentifier" D-Bus property.

    +

    Gets the value of the "SimIdentifier" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_sim_dup_sim_identifier() if on another thread.

    @@ -423,7 +546,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -431,7 +554,7 @@

    mm_gdbus_sim_dup_sim_identifierย ()

    gcharย *
     mm_gdbus_sim_dup_sim_identifier (MmGdbusSim *object);
    -

    Gets a copy of the "SimIdentifier" D-Bus property.

    +

    Gets a copy of the "SimIdentifier" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -452,7 +575,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -460,7 +583,7 @@

    mm_gdbus_sim_get_operator_identifierย ()

    const gcharย *
     mm_gdbus_sim_get_operator_identifier (MmGdbusSim *object);
    -

    Gets the value of the "OperatorIdentifier" D-Bus property.

    +

    Gets the value of the "OperatorIdentifier" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_sim_dup_operator_identifier() if on another thread.

    @@ -484,7 +607,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -492,7 +615,7 @@

    mm_gdbus_sim_dup_operator_identifierย ()

    gcharย *
     mm_gdbus_sim_dup_operator_identifier (MmGdbusSim *object);
    -

    Gets a copy of the "OperatorIdentifier" D-Bus property.

    +

    Gets a copy of the "OperatorIdentifier" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -513,7 +636,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -521,7 +644,7 @@

    mm_gdbus_sim_get_operator_nameย ()

    const gcharย *
     mm_gdbus_sim_get_operator_name (MmGdbusSim *object);
    -

    Gets the value of the "OperatorName" D-Bus property.

    +

    Gets the value of the "OperatorName" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_sim_dup_operator_name() if on another thread.

    @@ -545,7 +668,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -553,7 +676,7 @@

    mm_gdbus_sim_dup_operator_nameย ()

    gcharย *
     mm_gdbus_sim_dup_operator_name (MmGdbusSim *object);
    -

    Gets a copy of the "OperatorName" D-Bus property.

    +

    Gets a copy of the "OperatorName" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -574,7 +697,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -582,7 +705,7 @@

    mm_gdbus_sim_get_emergency_numbersย ()

    const gcharย *const *
     mm_gdbus_sim_get_emergency_numbers (MmGdbusSim *object);
    -

    Gets the value of the "EmergencyNumbers" D-Bus property.

    +

    Gets the value of the "EmergencyNumbers" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_sim_dup_emergency_numbers() if on another thread.

    @@ -606,7 +729,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -614,7 +737,7 @@

    mm_gdbus_sim_dup_emergency_numbersย ()

    gcharย **
     mm_gdbus_sim_dup_emergency_numbers (MmGdbusSim *object);
    -

    Gets a copy of the "EmergencyNumbers" D-Bus property.

    +

    Gets a copy of the "EmergencyNumbers" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -635,7 +758,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_strfreev().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -647,7 +770,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the SendPin() D-Bus method on proxy +

    Asynchronously invokes the SendPin() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -742,7 +865,7 @@ const gchar *arg_pin, GCancellable *cancellable, GError **error); -

    Synchronously invokes the SendPin() D-Bus method on proxy +

    Synchronously invokes the SendPin() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_sim_call_send_pin() for the asynchronous version of this method.

    @@ -794,7 +917,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the SendPuk() D-Bus method on proxy +

    Asynchronously invokes the SendPuk() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -895,7 +1018,7 @@ const gchar *arg_pin, GCancellable *cancellable, GError **error); -

    Synchronously invokes the SendPuk() D-Bus method on proxy +

    Synchronously invokes the SendPuk() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_sim_call_send_puk() for the asynchronous version of this method.

    @@ -952,7 +1075,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the EnablePin() D-Bus method on proxy +

    Asynchronously invokes the EnablePin() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -1053,7 +1176,7 @@ gboolean arg_enabled, GCancellable *cancellable, GError **error); -

    Synchronously invokes the EnablePin() D-Bus method on proxy +

    Synchronously invokes the EnablePin() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_sim_call_enable_pin() for the asynchronous version of this method.

    @@ -1110,7 +1233,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the ChangePin() D-Bus method on proxy +

    Asynchronously invokes the ChangePin() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -1211,7 +1334,7 @@ const gchar *arg_new_pin, GCancellable *cancellable, GError **error); -

    Synchronously invokes the ChangePin() D-Bus method on proxy +

    Synchronously invokes the ChangePin() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_sim_call_change_pin() for the asynchronous version of this method.

    @@ -1295,6 +1418,10 @@ const gchar *arg_puk, const gchar *arg_pin); + gboolean (*get_active) (MmGdbusSim *object); + + const gchar * (*get_eid) (MmGdbusSim *object); + const gchar *const * (*get_emergency_numbers) (MmGdbusSim *object); const gchar * (*get_imsi) (MmGdbusSim *object); @@ -1342,6 +1469,16 @@ ย  +

    get_activeย ()

    +

    Getter for the โ€œactiveโ€ property.

    +ย  + + +

    get_eidย ()

    +

    Getter for the โ€œeidโ€ property.

    +ย  + +

    get_emergency_numbersย ()

    Getter for the โ€œemergency-numbersโ€ property.

    ย  @@ -1374,9 +1511,29 @@

    Property Details

    +

    The โ€œactiveโ€ property

    +
      โ€œactiveโ€                   gboolean
    +

    Represents the D-Bus property "Active".

    +

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    +

    Owner: MmGdbusSim

    +

    Flags: Read / Write

    +

    Default value: FALSE

    +
    +
    +
    +

    The โ€œeidโ€ property

    +
      โ€œeidโ€                      charย *
    +

    Represents the D-Bus property "Eid".

    +

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    +

    Owner: MmGdbusSim

    +

    Flags: Read / Write

    +

    Default value: NULL

    +
    +
    +

    The โ€œemergency-numbersโ€ property

      โ€œemergency-numbersโ€        GStrv
    -

    Represents the D-Bus property "EmergencyNumbers".

    +

    Represents the D-Bus property "EmergencyNumbers".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusSim

    Flags: Read / Write

    @@ -1385,7 +1542,7 @@

    The โ€œimsiโ€ property

      โ€œimsiโ€                     charย *
    -

    Represents the D-Bus property "Imsi".

    +

    Represents the D-Bus property "Imsi".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusSim

    Flags: Read / Write

    @@ -1395,7 +1552,7 @@

    The โ€œoperator-identifierโ€ property

      โ€œoperator-identifierโ€      charย *
    -

    Represents the D-Bus property "OperatorIdentifier".

    +

    Represents the D-Bus property "OperatorIdentifier".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusSim

    Flags: Read / Write

    @@ -1405,7 +1562,7 @@

    The โ€œoperator-nameโ€ property

      โ€œoperator-nameโ€            charย *
    -

    Represents the D-Bus property "OperatorName".

    +

    Represents the D-Bus property "OperatorName".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusSim

    Flags: Read / Write

    @@ -1415,7 +1572,7 @@

    The โ€œsim-identifierโ€ property

      โ€œsim-identifierโ€           charย *
    -

    Represents the D-Bus property "SimIdentifier".

    +

    Represents the D-Bus property "SimIdentifier".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusSim

    Flags: Read / Write

    @@ -1432,7 +1589,7 @@ char *arg_old_pin, char *arg_new_pin, gpointer user_data) -

    Signal emitted when a remote caller is invoking the ChangePin() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the ChangePin() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_sim_complete_change_pin() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1474,7 +1631,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -1487,7 +1644,7 @@ char *arg_pin, gboolean arg_enabled, gpointer user_data) -

    Signal emitted when a remote caller is invoking the EnablePin() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the EnablePin() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_sim_complete_enable_pin() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1529,7 +1686,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -1541,7 +1698,7 @@ GDBusMethodInvocation *invocation, char *arg_pin, gpointer user_data) -

    Signal emitted when a remote caller is invoking the SendPin() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the SendPin() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_sim_complete_send_pin() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1578,7 +1735,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -1591,7 +1748,7 @@ char *arg_puk, char *arg_pin, gpointer user_data) -

    Signal emitted when a remote caller is invoking the SendPuk() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the SendPuk() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_sim_complete_send_puk() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1633,13 +1790,13 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusSimProxy.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusSimProxy.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusSimProxy.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusSimProxy.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -222,7 +222,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusSimProxy]

    +

    [transfer full][type MmGdbusSimProxy]


    @@ -323,7 +323,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusSimProxy]

    +

    [transfer full][type MmGdbusSimProxy]


    @@ -385,7 +385,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusSimProxy]

    +

    [transfer full][type MmGdbusSimProxy]


    @@ -448,7 +448,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusSimProxy]

    +

    [transfer full][type MmGdbusSimProxy]

    @@ -462,6 +462,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusSimSkeleton.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusSimSkeleton.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusSimSkeleton.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusSimSkeleton.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -89,7 +89,7 @@

    Returns

    The skeleton object.

    -

    [transfer full][type MmGdbusSimSkeleton]

    +

    [transfer full][type MmGdbusSimSkeleton]

    @@ -103,6 +103,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusSms.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusSms.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusSms.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusSms.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -442,7 +442,7 @@

    mm_gdbus_sms_get_stateย ()

    guint
     mm_gdbus_sms_get_state (MmGdbusSms *object);
    -

    Gets the value of the "State" D-Bus property.

    +

    Gets the value of the "State" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -470,7 +470,7 @@

    mm_gdbus_sms_get_pdu_typeย ()

    guint
     mm_gdbus_sms_get_pdu_type (MmGdbusSms *object);
    -

    Gets the value of the "PduType" D-Bus property.

    +

    Gets the value of the "PduType" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -498,7 +498,7 @@

    mm_gdbus_sms_get_message_referenceย ()

    guint
     mm_gdbus_sms_get_message_reference (MmGdbusSms *object);
    -

    Gets the value of the "MessageReference" D-Bus property.

    +

    Gets the value of the "MessageReference" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -526,7 +526,7 @@

    mm_gdbus_sms_get_storageย ()

    guint
     mm_gdbus_sms_get_storage (MmGdbusSms *object);
    -

    Gets the value of the "Storage" D-Bus property.

    +

    Gets the value of the "Storage" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -554,7 +554,7 @@

    mm_gdbus_sms_get_textย ()

    const gcharย *
     mm_gdbus_sms_get_text (MmGdbusSms *object);
    -

    Gets the value of the "Text" D-Bus property.

    +

    Gets the value of the "Text" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_sms_dup_text() if on another thread.

    @@ -578,7 +578,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -586,7 +586,7 @@

    mm_gdbus_sms_dup_textย ()

    gcharย *
     mm_gdbus_sms_dup_text (MmGdbusSms *object);
    -

    Gets a copy of the "Text" D-Bus property.

    +

    Gets a copy of the "Text" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -607,7 +607,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -615,7 +615,7 @@

    mm_gdbus_sms_get_dataย ()

    GVariantย *
     mm_gdbus_sms_get_data (MmGdbusSms *object);
    -

    Gets the value of the "Data" D-Bus property.

    +

    Gets the value of the "Data" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_sms_dup_data() if on another thread.

    @@ -639,7 +639,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -647,7 +647,7 @@

    mm_gdbus_sms_dup_dataย ()

    GVariantย *
     mm_gdbus_sms_dup_data (MmGdbusSms *object);
    -

    Gets a copy of the "Data" D-Bus property.

    +

    Gets a copy of the "Data" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -668,7 +668,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -676,7 +676,7 @@

    mm_gdbus_sms_get_numberย ()

    const gcharย *
     mm_gdbus_sms_get_number (MmGdbusSms *object);
    -

    Gets the value of the "Number" D-Bus property.

    +

    Gets the value of the "Number" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_sms_dup_number() if on another thread.

    @@ -700,7 +700,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -708,7 +708,7 @@

    mm_gdbus_sms_dup_numberย ()

    gcharย *
     mm_gdbus_sms_dup_number (MmGdbusSms *object);
    -

    Gets a copy of the "Number" D-Bus property.

    +

    Gets a copy of the "Number" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -729,7 +729,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -737,7 +737,7 @@

    mm_gdbus_sms_get_smscย ()

    const gcharย *
     mm_gdbus_sms_get_smsc (MmGdbusSms *object);
    -

    Gets the value of the "SMSC" D-Bus property.

    +

    Gets the value of the "SMSC" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_sms_dup_smsc() if on another thread.

    @@ -761,7 +761,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -769,7 +769,7 @@

    mm_gdbus_sms_dup_smscย ()

    gcharย *
     mm_gdbus_sms_dup_smsc (MmGdbusSms *object);
    -

    Gets a copy of the "SMSC" D-Bus property.

    +

    Gets a copy of the "SMSC" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -790,7 +790,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -798,7 +798,7 @@

    mm_gdbus_sms_get_validityย ()

    GVariantย *
     mm_gdbus_sms_get_validity (MmGdbusSms *object);
    -

    Gets the value of the "Validity" D-Bus property.

    +

    Gets the value of the "Validity" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_sms_dup_validity() if on another thread.

    @@ -822,7 +822,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -830,7 +830,7 @@

    mm_gdbus_sms_dup_validityย ()

    GVariantย *
     mm_gdbus_sms_dup_validity (MmGdbusSms *object);
    -

    Gets a copy of the "Validity" D-Bus property.

    +

    Gets a copy of the "Validity" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -851,7 +851,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_variant_unref().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -859,7 +859,7 @@

    mm_gdbus_sms_get_classย ()

    gint
     mm_gdbus_sms_get_class (MmGdbusSms *object);
    -

    Gets the value of the "Class" D-Bus property.

    +

    Gets the value of the "Class" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -887,7 +887,7 @@

    mm_gdbus_sms_get_teleservice_idย ()

    guint
     mm_gdbus_sms_get_teleservice_id (MmGdbusSms *object);
    -

    Gets the value of the "TeleserviceId" D-Bus property.

    +

    Gets the value of the "TeleserviceId" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -915,7 +915,7 @@

    mm_gdbus_sms_get_service_categoryย ()

    guint
     mm_gdbus_sms_get_service_category (MmGdbusSms *object);
    -

    Gets the value of the "ServiceCategory" D-Bus property.

    +

    Gets the value of the "ServiceCategory" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -943,7 +943,7 @@

    mm_gdbus_sms_get_timestampย ()

    const gcharย *
     mm_gdbus_sms_get_timestamp (MmGdbusSms *object);
    -

    Gets the value of the "Timestamp" D-Bus property.

    +

    Gets the value of the "Timestamp" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_sms_dup_timestamp() if on another thread.

    @@ -967,7 +967,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -975,7 +975,7 @@

    mm_gdbus_sms_dup_timestampย ()

    gcharย *
     mm_gdbus_sms_dup_timestamp (MmGdbusSms *object);
    -

    Gets a copy of the "Timestamp" D-Bus property.

    +

    Gets a copy of the "Timestamp" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -996,7 +996,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -1004,7 +1004,7 @@

    mm_gdbus_sms_get_discharge_timestampย ()

    const gcharย *
     mm_gdbus_sms_get_discharge_timestamp (MmGdbusSms *object);
    -

    Gets the value of the "DischargeTimestamp" D-Bus property.

    +

    Gets the value of the "DischargeTimestamp" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where object was constructed. Use mm_gdbus_sms_dup_discharge_timestamp() if on another thread.

    @@ -1028,7 +1028,7 @@

    Returns

    The property value or NULL if the property is not set. Do not free the returned value, it belongs to object .

    -

    [transfer none][nullable]

    +

    [transfer none][nullable]


    @@ -1036,7 +1036,7 @@

    mm_gdbus_sms_dup_discharge_timestampย ()

    gcharย *
     mm_gdbus_sms_dup_discharge_timestamp (MmGdbusSms *object);
    -

    Gets a copy of the "DischargeTimestamp" D-Bus property.

    +

    Gets a copy of the "DischargeTimestamp" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -1057,7 +1057,7 @@

    Returns

    The property value or NULL if the property is not set. The returned value should be freed with g_free().

    -

    [transfer full][nullable]

    +

    [transfer full][nullable]


    @@ -1066,7 +1066,7 @@
    gboolean
     mm_gdbus_sms_get_delivery_report_request
                                    (MmGdbusSms *object);
    -

    Gets the value of the "DeliveryReportRequest" D-Bus property.

    +

    Gets the value of the "DeliveryReportRequest" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -1094,7 +1094,7 @@

    mm_gdbus_sms_get_delivery_stateย ()

    guint
     mm_gdbus_sms_get_delivery_state (MmGdbusSms *object);
    -

    Gets the value of the "DeliveryState" D-Bus property.

    +

    Gets the value of the "DeliveryState" D-Bus property.

    Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.

    [skip]

    @@ -1125,7 +1125,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Send() D-Bus method on proxy +

    Asynchronously invokes the Send() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -1214,7 +1214,7 @@ mm_gdbus_sms_call_send_sync (MmGdbusSms *proxy, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Send() D-Bus method on proxy +

    Synchronously invokes the Send() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_sms_call_send() for the asynchronous version of this method.

    @@ -1260,7 +1260,7 @@ GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); -

    Asynchronously invokes the Store() D-Bus method on proxy +

    Asynchronously invokes the Store() D-Bus method on proxy . When the operation is finished, callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). @@ -1355,7 +1355,7 @@ guint arg_storage, GCancellable *cancellable, GError **error); -

    Synchronously invokes the Store() D-Bus method on proxy +

    Synchronously invokes the Store() D-Bus method on proxy . The calling thread is blocked until a reply is received.

    See mm_gdbus_sms_call_store() for the asynchronous version of this method.

    @@ -1568,7 +1568,7 @@

    The โ€œclassโ€ property

      โ€œclassโ€                    int
    -

    Represents the D-Bus property "Class".

    +

    Represents the D-Bus property "Class".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusSms

    Flags: Read / Write

    @@ -1578,7 +1578,7 @@

    The โ€œdataโ€ property

      โ€œdataโ€                     GVariantย *
    -

    Represents the D-Bus property "Data".

    +

    Represents the D-Bus property "Data".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusSms

    Flags: Read / Write

    @@ -1589,7 +1589,7 @@

    The โ€œdelivery-report-requestโ€ property

      โ€œdelivery-report-requestโ€  gboolean
    -

    Represents the D-Bus property "DeliveryReportRequest".

    +

    Represents the D-Bus property "DeliveryReportRequest".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusSms

    Flags: Read / Write

    @@ -1599,7 +1599,7 @@

    The โ€œdelivery-stateโ€ property

      โ€œdelivery-stateโ€           guint
    -

    Represents the D-Bus property "DeliveryState".

    +

    Represents the D-Bus property "DeliveryState".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusSms

    Flags: Read / Write

    @@ -1609,7 +1609,7 @@

    The โ€œdischarge-timestampโ€ property

      โ€œdischarge-timestampโ€      charย *
    -

    Represents the D-Bus property "DischargeTimestamp".

    +

    Represents the D-Bus property "DischargeTimestamp".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusSms

    Flags: Read / Write

    @@ -1619,7 +1619,7 @@

    The โ€œmessage-referenceโ€ property

      โ€œmessage-referenceโ€        guint
    -

    Represents the D-Bus property "MessageReference".

    +

    Represents the D-Bus property "MessageReference".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusSms

    Flags: Read / Write

    @@ -1629,7 +1629,7 @@

    The โ€œnumberโ€ property

      โ€œnumberโ€                   charย *
    -

    Represents the D-Bus property "Number".

    +

    Represents the D-Bus property "Number".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusSms

    Flags: Read / Write

    @@ -1639,7 +1639,7 @@

    The โ€œpdu-typeโ€ property

      โ€œpdu-typeโ€                 guint
    -

    Represents the D-Bus property "PduType".

    +

    Represents the D-Bus property "PduType".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusSms

    Flags: Read / Write

    @@ -1649,7 +1649,7 @@

    The โ€œservice-categoryโ€ property

      โ€œservice-categoryโ€         guint
    -

    Represents the D-Bus property "ServiceCategory".

    +

    Represents the D-Bus property "ServiceCategory".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusSms

    Flags: Read / Write

    @@ -1659,7 +1659,7 @@

    The โ€œsmscโ€ property

      โ€œsmscโ€                     charย *
    -

    Represents the D-Bus property "SMSC".

    +

    Represents the D-Bus property "SMSC".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusSms

    Flags: Read / Write

    @@ -1669,7 +1669,7 @@

    The โ€œstateโ€ property

      โ€œstateโ€                    guint
    -

    Represents the D-Bus property "State".

    +

    Represents the D-Bus property "State".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusSms

    Flags: Read / Write

    @@ -1679,7 +1679,7 @@

    The โ€œstorageโ€ property

      โ€œstorageโ€                  guint
    -

    Represents the D-Bus property "Storage".

    +

    Represents the D-Bus property "Storage".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusSms

    Flags: Read / Write

    @@ -1689,7 +1689,7 @@

    The โ€œteleservice-idโ€ property

      โ€œteleservice-idโ€           guint
    -

    Represents the D-Bus property "TeleserviceId".

    +

    Represents the D-Bus property "TeleserviceId".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusSms

    Flags: Read / Write

    @@ -1699,7 +1699,7 @@

    The โ€œtextโ€ property

      โ€œtextโ€                     charย *
    -

    Represents the D-Bus property "Text".

    +

    Represents the D-Bus property "Text".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusSms

    Flags: Read / Write

    @@ -1709,7 +1709,7 @@

    The โ€œtimestampโ€ property

      โ€œtimestampโ€                charย *
    -

    Represents the D-Bus property "Timestamp".

    +

    Represents the D-Bus property "Timestamp".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusSms

    Flags: Read / Write

    @@ -1719,7 +1719,7 @@

    The โ€œvalidityโ€ property

      โ€œvalidityโ€                 GVariantย *
    -

    Represents the D-Bus property "Validity".

    +

    Represents the D-Bus property "Validity".

    Since the D-Bus property for this GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.

    Owner: MmGdbusSms

    Flags: Read / Write

    @@ -1735,7 +1735,7 @@ user_function (MmGdbusSms *object, GDBusMethodInvocation *invocation, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Send() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Send() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_sms_complete_send() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1767,7 +1767,7 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    @@ -1779,7 +1779,7 @@ GDBusMethodInvocation *invocation, guint arg_storage, gpointer user_data) -

    Signal emitted when a remote caller is invoking the Store() D-Bus method.

    +

    Signal emitted when a remote caller is invoking the Store() D-Bus method.

    If a signal handler returns TRUE, it means the signal handler will handle the invocation (e.g. take a reference to invocation and eventually call mm_gdbus_sms_complete_store() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the G_DBUS_ERROR_UNKNOWN_METHOD error is returned.

    @@ -1816,13 +1816,13 @@

    Returns

    -

    TRUE if the invocation was handled, FALSE to let other signal handlers run.

    +

    G_DBUS_METHOD_INVOCATION_HANDLED or TRUE if the invocation was handled, G_DBUS_METHOD_INVOCATION_UNHANDLED or FALSE to let other signal handlers run.

    Flags: Run Last

    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusSmsProxy.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusSmsProxy.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusSmsProxy.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusSmsProxy.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -222,7 +222,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusSmsProxy]

    +

    [transfer full][type MmGdbusSmsProxy]


    @@ -323,7 +323,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusSmsProxy]

    +

    [transfer full][type MmGdbusSmsProxy]


    @@ -385,7 +385,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusSmsProxy]

    +

    [transfer full][type MmGdbusSmsProxy]


    @@ -448,7 +448,7 @@

    Returns

    The constructed proxy object or NULL if error is set.

    -

    [transfer full][type MmGdbusSmsProxy]

    +

    [transfer full][type MmGdbusSmsProxy]

    @@ -462,6 +462,6 @@
    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusSmsSkeleton.html modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusSmsSkeleton.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/MmGdbusSmsSkeleton.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/MmGdbusSmsSkeleton.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -89,7 +89,7 @@

    Returns

    The skeleton object.

    -

    [transfer full][type MmGdbusSmsSkeleton]

    +

    [transfer full][type MmGdbusSmsSkeleton]

    @@ -103,6 +103,6 @@
    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/annotation-glossary.html modemmanager-1.16.6/docs/reference/libmm-glib/html/annotation-glossary.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/annotation-glossary.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/annotation-glossary.html 2021-06-06 21:45:12.000000000 +0800 @@ -6,8 +6,8 @@ - - + + @@ -27,7 +27,7 @@ T Home -Prev +Prev
    @@ -51,7 +51,7 @@
    optional

    NULL may be passed instead of a pointer to a location.

    out
    -

    Parameter for returning results. Default is transfer full.

    +

    Parameter for returning results. Default is transfer full.

    S

    scope call

    The callback is valid only during the call to the method.

    @@ -59,13 +59,13 @@

    Exposed in C code, not necessarily available in other languages.

    T

    transfer full
    -

    Free data after the code is done.

    +

    The caller owns the data, and is responsible for free it.

    transfer none
    -

    Don't free data after the code is done.

    +

    The data is owned by the callee, which is responsible of freeing it.

    type

    Override the parsed C type with given type.

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/api-index-1-0.html modemmanager-1.16.6/docs/reference/libmm-glib/html/api-index-1-0.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/api-index-1-0.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/api-index-1-0.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -1738,6 +1738,6 @@
    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/api-index-1-10.html modemmanager-1.16.6/docs/reference/libmm-glib/html/api-index-1-10.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/api-index-1-10.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/api-index-1-10.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -201,6 +201,6 @@
    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/api-index-1-12.html modemmanager-1.16.6/docs/reference/libmm-glib/html/api-index-1-12.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/api-index-1-12.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/api-index-1-12.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -171,6 +171,6 @@
    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/api-index-1-14.html modemmanager-1.16.6/docs/reference/libmm-glib/html/api-index-1-14.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/api-index-1-14.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/api-index-1-14.html 2021-06-06 21:45:12.000000000 +0800 @@ -7,8 +7,8 @@ - - + + @@ -19,7 +19,7 @@ Home Prev -Next +Next

    @@ -52,6 +52,6 @@

    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/api-index-1-16.html modemmanager-1.16.6/docs/reference/libmm-glib/html/api-index-1-16.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/api-index-1-16.html 1970-01-01 08:00:00.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/api-index-1-16.html 2021-06-06 21:45:12.000000000 +0800 @@ -0,0 +1,97 @@ + + + + +Index of new symbols in 1.16: libmm-glib Reference Manual + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/api-index-1-2.html modemmanager-1.16.6/docs/reference/libmm-glib/html/api-index-1-2.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/api-index-1-2.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/api-index-1-2.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -326,6 +326,6 @@
    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/api-index-1-4.html modemmanager-1.16.6/docs/reference/libmm-glib/html/api-index-1-4.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/api-index-1-4.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/api-index-1-4.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -29,6 +29,6 @@
    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/api-index-1-6.html modemmanager-1.16.6/docs/reference/libmm-glib/html/api-index-1-6.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/api-index-1-6.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/api-index-1-6.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -238,6 +238,6 @@
    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/api-index-1-8.html modemmanager-1.16.6/docs/reference/libmm-glib/html/api-index-1-8.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/api-index-1-8.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/api-index-1-8.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -100,6 +100,6 @@
    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/api-index-full.html modemmanager-1.16.6/docs/reference/libmm-glib/html/api-index-full.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/api-index-full.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/api-index-full.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -929,6 +929,10 @@
    +MmGdbusModem::handle-set-primary-sim-slot, object signal in MmGdbusModem +
    +
    +
    MmGdbusModem::state-changed, object signal in MmGdbusModem
    @@ -1017,6 +1021,10 @@
    +MmGdbusModem:primary-sim-slot, object property in MmGdbusModem +
    +
    +
    MmGdbusModem:revision, object property in MmGdbusModem
    @@ -1029,6 +1037,10 @@
    +MmGdbusModem:sim-slots, object property in MmGdbusModem +
    +
    +
    MmGdbusModem:state, object property in MmGdbusModem
    @@ -1345,6 +1357,10 @@
    +MmGdbusModemSignal:nr5g, object property in MmGdbusModemSignal +
    +
    +
    MmGdbusModemSignal:rate, object property in MmGdbusModemSignal
    @@ -1617,6 +1633,14 @@
    +MmGdbusSim:active, object property in MmGdbusSim +
    +
    +
    +MmGdbusSim:eid, object property in MmGdbusSim +
    +
    +
    MmGdbusSim:emergency-numbers, object property in MmGdbusSim
    @@ -2353,6 +2377,18 @@
    +mm_gdbus_modem_call_set_primary_sim_slot, function in MmGdbusModem +
    +
    +
    +mm_gdbus_modem_call_set_primary_sim_slot_finish, function in MmGdbusModem +
    +
    +
    +mm_gdbus_modem_call_set_primary_sim_slot_sync, function in MmGdbusModem +
    +
    +
    mm_gdbus_modem_cdma_call_activate, function in MmGdbusModemCdma
    @@ -2517,6 +2553,10 @@
    +mm_gdbus_modem_dup_sim_slots, function in MmGdbusModem +
    +
    +
    mm_gdbus_modem_dup_supported_bands, function in MmGdbusModem
    @@ -2677,6 +2717,10 @@
    +mm_gdbus_modem_get_primary_sim_slot, function in MmGdbusModem +
    +
    +
    mm_gdbus_modem_get_revision, function in MmGdbusModem
    @@ -2689,6 +2733,10 @@
    +mm_gdbus_modem_get_sim_slots, function in MmGdbusModem +
    +
    +
    mm_gdbus_modem_get_state, function in MmGdbusModem
    @@ -3085,6 +3133,10 @@
    +mm_gdbus_modem_signal_dup_nr5g, function in MmGdbusModemSignal +
    +
    +
    mm_gdbus_modem_signal_dup_umts, function in MmGdbusModemSignal
    @@ -3105,6 +3157,10 @@
    +mm_gdbus_modem_signal_get_nr5g, function in MmGdbusModemSignal +
    +
    +
    mm_gdbus_modem_signal_get_rate, function in MmGdbusModemSignal
    @@ -3717,6 +3773,10 @@
    +mm_gdbus_sim_dup_eid, function in MmGdbusSim +
    +
    +
    mm_gdbus_sim_dup_emergency_numbers, function in MmGdbusSim
    @@ -3737,6 +3797,14 @@
    +mm_gdbus_sim_get_active, function in MmGdbusSim +
    +
    +
    +mm_gdbus_sim_get_eid, function in MmGdbusSim +
    +
    +
    mm_gdbus_sim_get_emergency_numbers, function in MmGdbusSim
    @@ -4660,6 +4728,10 @@
    +mm_modem_dup_sim_slot_paths, function in MMModem +
    +
    +
    mm_modem_enable, function in MMModem
    @@ -4820,6 +4892,10 @@
    +mm_modem_get_primary_sim_slot, function in MMModem +
    +
    +
    mm_modem_get_revision, function in MMModem
    @@ -4840,6 +4916,10 @@
    +mm_modem_get_sim_slot_paths, function in MMModem +
    +
    +
    mm_modem_get_sim_sync, function in MMModem
    @@ -4888,6 +4968,18 @@
    +mm_modem_list_sim_slots, function in MMModem +
    +
    +
    +mm_modem_list_sim_slots_finish, function in MMModem +
    +
    +
    +mm_modem_list_sim_slots_sync, function in MMModem +
    +
    +
    mm_modem_location_assistance_data_type_build_string_from_mask, function in Flags and Enumerations
    @@ -5280,6 +5372,18 @@
    +mm_modem_set_primary_sim_slot, function in MMModem +
    +
    +
    +mm_modem_set_primary_sim_slot_finish, function in MMModem +
    +
    +
    +mm_modem_set_primary_sim_slot_sync, function in MMModem +
    +
    +
    mm_modem_signal_dup_path, function in MMModemSignal
    @@ -5300,6 +5404,10 @@
    +mm_modem_signal_get_nr5g, function in MMModemSignal +
    +
    +
    mm_modem_signal_get_path, function in MMModemSignal
    @@ -5328,6 +5436,10 @@
    +mm_modem_signal_peek_nr5g, function in MMModemSignal +
    +
    +
    mm_modem_signal_peek_umts, function in MMModemSignal
    @@ -5856,6 +5968,10 @@
    +mm_simple_connect_properties_get_rm_protocol, function in MMSimpleConnectProperties +
    +
    +
    mm_simple_connect_properties_get_user, function in MMSimpleConnectProperties
    @@ -5896,6 +6012,10 @@
    +mm_simple_connect_properties_set_rm_protocol, function in MMSimpleConnectProperties +
    +
    +
    mm_simple_connect_properties_set_user, function in MMSimpleConnectProperties
    @@ -5972,6 +6092,10 @@
    +mm_sim_dup_eid, function in MMSim +
    +
    +
    mm_sim_dup_emergency_numbers, function in MMSim
    @@ -6008,6 +6132,14 @@
    +mm_sim_get_active, function in MMSim +
    +
    +
    +mm_sim_get_eid, function in MMSim +
    +
    +
    mm_sim_get_emergency_numbers, function in MMSim
    @@ -6330,6 +6462,6 @@
    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/ch01.html modemmanager-1.16.6/docs/reference/libmm-glib/html/ch01.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/ch01.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/ch01.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -27,6 +27,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/ch02.html modemmanager-1.16.6/docs/reference/libmm-glib/html/ch02.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/ch02.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/ch02.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -32,6 +32,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/ch03.html modemmanager-1.16.6/docs/reference/libmm-glib/html/ch03.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/ch03.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/ch03.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -128,6 +128,6 @@ Generic interfaces +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/ch03s02.html modemmanager-1.16.6/docs/reference/libmm-glib/html/ch03s02.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/ch03s02.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/ch03s02.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -22,6 +22,6 @@

    Simple interface support

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/ch03s03.html modemmanager-1.16.6/docs/reference/libmm-glib/html/ch03s03.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/ch03s03.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/ch03s03.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -22,6 +22,6 @@

    Location support

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/ch03s04.html modemmanager-1.16.6/docs/reference/libmm-glib/html/ch03s04.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/ch03s04.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/ch03s04.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -22,6 +22,6 @@

    Messaging support

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/ch03s05.html modemmanager-1.16.6/docs/reference/libmm-glib/html/ch03s05.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/ch03s05.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/ch03s05.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -22,6 +22,6 @@

    Time support

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/ch03s06.html modemmanager-1.16.6/docs/reference/libmm-glib/html/ch03s06.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/ch03s06.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/ch03s06.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -22,6 +22,6 @@

    Firmware support

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/ch03s07.html modemmanager-1.16.6/docs/reference/libmm-glib/html/ch03s07.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/ch03s07.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/ch03s07.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -22,6 +22,6 @@

    Extended signal information

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/ch03s08.html modemmanager-1.16.6/docs/reference/libmm-glib/html/ch03s08.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/ch03s08.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/ch03s08.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -22,6 +22,6 @@

    OMA support

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/ch03s09.html modemmanager-1.16.6/docs/reference/libmm-glib/html/ch03s09.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/ch03s09.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/ch03s09.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -22,6 +22,6 @@

    Voice support

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/ch03s10.html modemmanager-1.16.6/docs/reference/libmm-glib/html/ch03s10.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/ch03s10.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/ch03s10.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -22,6 +22,6 @@

    PCO support

    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/ch04.html modemmanager-1.16.6/docs/reference/libmm-glib/html/ch04.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/ch04.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/ch04.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -38,6 +38,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/ch05.html modemmanager-1.16.6/docs/reference/libmm-glib/html/ch05.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/ch05.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/ch05.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -27,6 +27,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/ch06.html modemmanager-1.16.6/docs/reference/libmm-glib/html/ch06.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/ch06.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/ch06.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -32,6 +32,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/ch07.html modemmanager-1.16.6/docs/reference/libmm-glib/html/ch07.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/ch07.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/ch07.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -35,6 +35,6 @@ +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/deprecated-api-index.html modemmanager-1.16.6/docs/reference/libmm-glib/html/deprecated-api-index.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/deprecated-api-index.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/deprecated-api-index.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -96,6 +96,6 @@
    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/index.html modemmanager-1.16.6/docs/reference/libmm-glib/html/index.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/index.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/index.html 2021-06-06 21:45:12.000000000 +0800 @@ -6,7 +6,7 @@ - + @@ -26,10 +26,12 @@ ย ย ย ย ย ย ย ย ย ย 

    - For libmm-glib version 1.14.10 + For libmm-glib version 1.16.6 + The latest version of this documentation can be found on-line at + https://www.freedesktop.org/software/ModemManager/doc/latest/libmm-glib/.

    -
    +

    Permission is granted to copy, distribute and/or modify this @@ -393,10 +395,11 @@

    Index of new symbols in 1.10
    Index of new symbols in 1.12
    Index of new symbols in 1.14
    +
    Index of new symbols in 1.16
    Annotation Glossary
    +
    Generated by GTK-Doc V1.33.1 \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/libmm-glib-Flags-and-Enumerations.html modemmanager-1.16.6/docs/reference/libmm-glib/html/libmm-glib-Flags-and-Enumerations.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/libmm-glib-Flags-and-Enumerations.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/libmm-glib-Flags-and-Enumerations.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -353,8 +353,8 @@

    mm_bearer_type_get_stringย ()

    const gcharย *
    -mm_bearer_type_get_string (MMBearerType val);
    -

    Gets the nickname string for the MMBearerType specified at val +mm_bearer_type_get_string (MMBearerType val); +

    Gets the nickname string for the MMBearerType specified at val .

    Parameters

    @@ -374,15 +374,15 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    mm_bearer_ip_method_get_stringย ()

    const gcharย *
    -mm_bearer_ip_method_get_string (MMBearerIpMethod val);
    -

    Gets the nickname string for the MMBearerIpMethod specified at val +mm_bearer_ip_method_get_string (MMBearerIpMethod val); +

    Gets the nickname string for the MMBearerIpMethod specified at val .

    Parameters

    @@ -402,15 +402,15 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    mm_bearer_ip_family_get_stringย ()

    const gcharย *
    -mm_bearer_ip_family_get_string (MMBearerIpFamily val);
    -

    Gets the nickname string for the MMBearerIpFamily specified at val +mm_bearer_ip_family_get_string (MMBearerIpFamily val); +

    Gets the nickname string for the MMBearerIpFamily specified at val .

    Parameters

    @@ -430,7 +430,7 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    @@ -438,9 +438,9 @@

    mm_bearer_allowed_auth_build_string_from_maskย ()

    gcharย *
     mm_bearer_allowed_auth_build_string_from_mask
    -                               (MMBearerAllowedAuth mask);
    + (MMBearerAllowedAuth mask);

    Builds a string containing a comma-separated list of nicknames for -each MMBearerAllowedAuth in mask +each MMBearerAllowedAuth in mask .

    Parameters

    @@ -460,7 +460,7 @@

    Returns

    a string with the list of nicknames, or NULL if none given. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]


    @@ -468,9 +468,9 @@

    mm_modem_capability_build_string_from_maskย ()

    gcharย *
     mm_modem_capability_build_string_from_mask
    -                               (MMModemCapability mask);
    + (MMModemCapability mask);

    Builds a string containing a comma-separated list of nicknames for -each MMModemCapability in mask +each MMModemCapability in mask .

    Parameters

    @@ -490,15 +490,15 @@

    Returns

    a string with the list of nicknames, or NULL if none given. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]


    mm_modem_state_get_stringย ()

    const gcharย *
    -mm_modem_state_get_string (MMModemState val);
    -

    Gets the nickname string for the MMModemState specified at val +mm_modem_state_get_string (MMModemState val); +

    Gets the nickname string for the MMModemState specified at val .

    Parameters

    @@ -518,7 +518,7 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    @@ -526,8 +526,8 @@

    mm_modem_state_failed_reason_get_stringย ()

    const gcharย *
     mm_modem_state_failed_reason_get_string
    -                               (MMModemStateFailedReason val);
    -

    Gets the nickname string for the MMModemStateFailedReason specified at val + (MMModemStateFailedReason val); +

    Gets the nickname string for the MMModemStateFailedReason specified at val .

    Parameters

    @@ -547,7 +547,7 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    @@ -555,8 +555,8 @@

    mm_modem_state_change_reason_get_stringย ()

    const gcharย *
     mm_modem_state_change_reason_get_string
    -                               (MMModemStateChangeReason val);
    -

    Gets the nickname string for the MMModemStateChangeReason specified at val + (MMModemStateChangeReason val); +

    Gets the nickname string for the MMModemStateChangeReason specified at val .

    Parameters

    @@ -576,15 +576,15 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    mm_modem_power_state_get_stringย ()

    const gcharย *
    -mm_modem_power_state_get_string (MMModemPowerState val);
    -

    Gets the nickname string for the MMModemPowerState specified at val +mm_modem_power_state_get_string (MMModemPowerState val); +

    Gets the nickname string for the MMModemPowerState specified at val .

    Parameters

    @@ -604,15 +604,15 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    mm_modem_lock_get_stringย ()

    const gcharย *
    -mm_modem_lock_get_string (MMModemLock val);
    -

    Gets the nickname string for the MMModemLock specified at val +mm_modem_lock_get_string (MMModemLock val); +

    Gets the nickname string for the MMModemLock specified at val .

    Parameters

    @@ -632,7 +632,7 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    @@ -640,9 +640,9 @@

    mm_modem_access_technology_build_string_from_maskย ()

    gcharย *
     mm_modem_access_technology_build_string_from_mask
    -                               (MMModemAccessTechnology mask);
    + (MMModemAccessTechnology mask);

    Builds a string containing a comma-separated list of nicknames for -each MMModemAccessTechnology in mask +each MMModemAccessTechnology in mask .

    Parameters

    @@ -662,16 +662,16 @@

    Returns

    a string with the list of nicknames, or NULL if none given. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]


    mm_modem_mode_build_string_from_maskย ()

    gcharย *
    -mm_modem_mode_build_string_from_mask (MMModemMode mask);
    +mm_modem_mode_build_string_from_mask (MMModemMode mask);

    Builds a string containing a comma-separated list of nicknames for -each MMModemMode in mask +each MMModemMode in mask .

    Parameters

    @@ -691,15 +691,15 @@

    Returns

    a string with the list of nicknames, or NULL if none given. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]


    mm_modem_band_get_stringย ()

    const gcharย *
    -mm_modem_band_get_string (MMModemBand val);
    -

    Gets the nickname string for the MMModemBand specified at val +mm_modem_band_get_string (MMModemBand val); +

    Gets the nickname string for the MMModemBand specified at val .

    Parameters

    @@ -719,15 +719,15 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    mm_modem_port_type_get_stringย ()

    const gcharย *
    -mm_modem_port_type_get_string (MMModemPortType val);
    -

    Gets the nickname string for the MMModemPortType specified at val +mm_modem_port_type_get_string (MMModemPortType val); +

    Gets the nickname string for the MMModemPortType specified at val .

    Parameters

    @@ -747,7 +747,7 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    @@ -755,8 +755,8 @@

    mm_modem_3gpp_registration_state_get_stringย ()

    const gcharย *
     mm_modem_3gpp_registration_state_get_string
    -                               (MMModem3gppRegistrationState val);
    -

    Gets the nickname string for the MMModem3gppRegistrationState specified at val + (MMModem3gppRegistrationState val); +

    Gets the nickname string for the MMModem3gppRegistrationState specified at val .

    Parameters

    @@ -776,7 +776,7 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    @@ -784,8 +784,8 @@

    mm_modem_3gpp_subscription_state_get_stringย ()

    const gcharย *
     mm_modem_3gpp_subscription_state_get_string
    -                               (MMModem3gppSubscriptionState val);
    -

    Gets the nickname string for the MMModem3gppSubscriptionState specified at val + (MMModem3gppSubscriptionState val); +

    Gets the nickname string for the MMModem3gppSubscriptionState specified at val .

    Parameters

    @@ -805,7 +805,7 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    @@ -813,9 +813,9 @@

    mm_modem_3gpp_facility_build_string_from_maskย ()

    gcharย *
     mm_modem_3gpp_facility_build_string_from_mask
    -                               (MMModem3gppFacility mask);
    + (MMModem3gppFacility mask);

    Builds a string containing a comma-separated list of nicknames for -each MMModem3gppFacility in mask +each MMModem3gppFacility in mask .

    Parameters

    @@ -835,7 +835,7 @@

    Returns

    a string with the list of nicknames, or NULL if none given. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]


    @@ -843,8 +843,8 @@

    mm_modem_3gpp_network_availability_get_stringย ()

    const gcharย *
     mm_modem_3gpp_network_availability_get_string
    -                               (MMModem3gppNetworkAvailability val);
    -

    Gets the nickname string for the MMModem3gppNetworkAvailability specified at val + (MMModem3gppNetworkAvailability val); +

    Gets the nickname string for the MMModem3gppNetworkAvailability specified at val .

    Parameters

    @@ -864,7 +864,7 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    @@ -872,8 +872,8 @@

    mm_modem_3gpp_ussd_session_state_get_stringย ()

    const gcharย *
     mm_modem_3gpp_ussd_session_state_get_string
    -                               (MMModem3gppUssdSessionState val);
    -

    Gets the nickname string for the MMModem3gppUssdSessionState specified at val + (MMModem3gppUssdSessionState val); +

    Gets the nickname string for the MMModem3gppUssdSessionState specified at val .

    Parameters

    @@ -893,7 +893,7 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    @@ -901,8 +901,8 @@

    mm_modem_3gpp_eps_ue_mode_operation_get_stringย ()

    const gcharย *
     mm_modem_3gpp_eps_ue_mode_operation_get_string
    -                               (MMModem3gppEpsUeModeOperation val);
    -

    Gets the nickname string for the MMModem3gppEpsUeModeOperation specified at val + (MMModem3gppEpsUeModeOperation val); +

    Gets the nickname string for the MMModem3gppEpsUeModeOperation specified at val .

    Parameters

    @@ -922,7 +922,7 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    @@ -930,8 +930,8 @@

    mm_modem_cdma_registration_state_get_stringย ()

    const gcharย *
     mm_modem_cdma_registration_state_get_string
    -                               (MMModemCdmaRegistrationState val);
    -

    Gets the nickname string for the MMModemCdmaRegistrationState specified at val + (MMModemCdmaRegistrationState val); +

    Gets the nickname string for the MMModemCdmaRegistrationState specified at val .

    Parameters

    @@ -951,7 +951,7 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    @@ -959,8 +959,8 @@

    mm_modem_cdma_activation_state_get_stringย ()

    const gcharย *
     mm_modem_cdma_activation_state_get_string
    -                               (MMModemCdmaActivationState val);
    -

    Gets the nickname string for the MMModemCdmaActivationState specified at val + (MMModemCdmaActivationState val); +

    Gets the nickname string for the MMModemCdmaActivationState specified at val .

    Parameters

    @@ -980,15 +980,15 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    mm_modem_cdma_rm_protocol_get_stringย ()

    const gcharย *
    -mm_modem_cdma_rm_protocol_get_string (MMModemCdmaRmProtocol val);
    -

    Gets the nickname string for the MMModemCdmaRmProtocol specified at val +mm_modem_cdma_rm_protocol_get_string (MMModemCdmaRmProtocol val); +

    Gets the nickname string for the MMModemCdmaRmProtocol specified at val .

    Parameters

    @@ -1008,7 +1008,7 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    @@ -1016,9 +1016,9 @@

    mm_modem_location_source_build_string_from_maskย ()

    gcharย *
     mm_modem_location_source_build_string_from_mask
    -                               (MMModemLocationSource mask);
    + (MMModemLocationSource mask);

    Builds a string containing a comma-separated list of nicknames for -each MMModemLocationSource in mask +each MMModemLocationSource in mask .

    Parameters

    @@ -1038,7 +1038,7 @@

    Returns

    a string with the list of nicknames, or NULL if none given. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]


    @@ -1046,9 +1046,9 @@

    mm_modem_location_assistance_data_type_build_string_from_maskย ()

    gcharย *
     mm_modem_location_assistance_data_type_build_string_from_mask
    -                               (MMModemLocationAssistanceDataType mask);
    + (MMModemLocationAssistanceDataType mask);

    Builds a string containing a comma-separated list of nicknames for -each MMModemLocationAssistanceDataType in mask +each MMModemLocationAssistanceDataType in mask .

    Parameters

    @@ -1068,15 +1068,15 @@

    Returns

    a string with the list of nicknames, or NULL if none given. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]


    mm_modem_contacts_storage_get_stringย ()

    const gcharย *
    -mm_modem_contacts_storage_get_string (MMModemContactsStorage val);
    -

    Gets the nickname string for the MMModemContactsStorage specified at val +mm_modem_contacts_storage_get_string (MMModemContactsStorage val); +

    Gets the nickname string for the MMModemContactsStorage specified at val .

    Parameters

    @@ -1096,7 +1096,7 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    @@ -1104,9 +1104,9 @@

    mm_modem_firmware_update_method_build_string_from_maskย ()

    gcharย *
     mm_modem_firmware_update_method_build_string_from_mask
    -                               (MMModemFirmwareUpdateMethod mask);
    + (MMModemFirmwareUpdateMethod mask);

    Builds a string containing a comma-separated list of nicknames for -each MMModemFirmwareUpdateMethod in mask +each MMModemFirmwareUpdateMethod in mask .

    Parameters

    @@ -1126,15 +1126,15 @@

    Returns

    a string with the list of nicknames, or NULL if none given. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]


    mm_sms_pdu_type_get_stringย ()

    const gcharย *
    -mm_sms_pdu_type_get_string (MMSmsPduType val);
    -

    Gets the nickname string for the MMSmsPduType specified at val +mm_sms_pdu_type_get_string (MMSmsPduType val); +

    Gets the nickname string for the MMSmsPduType specified at val .

    Parameters

    @@ -1154,15 +1154,15 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    mm_sms_state_get_stringย ()

    const gcharย *
    -mm_sms_state_get_string (MMSmsState val);
    -

    Gets the nickname string for the MMSmsState specified at val +mm_sms_state_get_string (MMSmsState val); +

    Gets the nickname string for the MMSmsState specified at val .

    Parameters

    @@ -1182,15 +1182,15 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    mm_sms_delivery_state_get_stringย ()

    const gcharย *
    -mm_sms_delivery_state_get_string (MMSmsDeliveryState val);
    -

    Gets the nickname string for the MMSmsDeliveryState specified at val +mm_sms_delivery_state_get_string (MMSmsDeliveryState val); +

    Gets the nickname string for the MMSmsDeliveryState specified at val .

    Parameters

    @@ -1210,15 +1210,15 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    mm_sms_storage_get_stringย ()

    const gcharย *
    -mm_sms_storage_get_string (MMSmsStorage val);
    -

    Gets the nickname string for the MMSmsStorage specified at val +mm_sms_storage_get_string (MMSmsStorage val); +

    Gets the nickname string for the MMSmsStorage specified at val .

    Parameters

    @@ -1238,15 +1238,15 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    mm_sms_validity_type_get_stringย ()

    const gcharย *
    -mm_sms_validity_type_get_string (MMSmsValidityType val);
    -

    Gets the nickname string for the MMSmsValidityType specified at val +mm_sms_validity_type_get_string (MMSmsValidityType val); +

    Gets the nickname string for the MMSmsValidityType specified at val .

    Parameters

    @@ -1266,15 +1266,15 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    mm_sms_cdma_teleservice_id_get_stringย ()

    const gcharย *
    -mm_sms_cdma_teleservice_id_get_string (MMSmsCdmaTeleserviceId val);
    -

    Gets the nickname string for the MMSmsCdmaTeleserviceId specified at val +mm_sms_cdma_teleservice_id_get_string (MMSmsCdmaTeleserviceId val); +

    Gets the nickname string for the MMSmsCdmaTeleserviceId specified at val .

    Parameters

    @@ -1294,7 +1294,7 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    @@ -1302,8 +1302,8 @@

    mm_sms_cdma_service_category_get_stringย ()

    const gcharย *
     mm_sms_cdma_service_category_get_string
    -                               (MMSmsCdmaServiceCategory val);
    -

    Gets the nickname string for the MMSmsCdmaServiceCategory specified at val + (MMSmsCdmaServiceCategory val); +

    Gets the nickname string for the MMSmsCdmaServiceCategory specified at val .

    Parameters

    @@ -1323,15 +1323,15 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    mm_firmware_image_type_get_stringย ()

    const gcharย *
    -mm_firmware_image_type_get_string (MMFirmwareImageType val);
    -

    Gets the nickname string for the MMFirmwareImageType specified at val +mm_firmware_image_type_get_string (MMFirmwareImageType val); +

    Gets the nickname string for the MMFirmwareImageType specified at val .

    Parameters

    @@ -1351,16 +1351,16 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    mm_oma_feature_build_string_from_maskย ()

    gcharย *
    -mm_oma_feature_build_string_from_mask (MMOmaFeature mask);
    +mm_oma_feature_build_string_from_mask (MMOmaFeature mask);

    Builds a string containing a comma-separated list of nicknames for -each MMOmaFeature in mask +each MMOmaFeature in mask .

    Parameters

    @@ -1380,15 +1380,15 @@

    Returns

    a string with the list of nicknames, or NULL if none given. The returned value should be freed with g_free().

    -

    [transfer full]

    +

    [transfer full]


    mm_oma_session_type_get_stringย ()

    const gcharย *
    -mm_oma_session_type_get_string (MMOmaSessionType val);
    -

    Gets the nickname string for the MMOmaSessionType specified at val +mm_oma_session_type_get_string (MMOmaSessionType val); +

    Gets the nickname string for the MMOmaSessionType specified at val .

    Parameters

    @@ -1408,15 +1408,15 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    mm_oma_session_state_get_stringย ()

    const gcharย *
    -mm_oma_session_state_get_string (MMOmaSessionState val);
    -

    Gets the nickname string for the MMOmaSessionState specified at val +mm_oma_session_state_get_string (MMOmaSessionState val); +

    Gets the nickname string for the MMOmaSessionState specified at val .

    Parameters

    @@ -1436,7 +1436,7 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    @@ -1444,8 +1444,8 @@

    mm_oma_session_state_failed_reason_get_stringย ()

    const gcharย *
     mm_oma_session_state_failed_reason_get_string
    -                               (MMOmaSessionStateFailedReason val);
    -

    Gets the nickname string for the MMOmaSessionStateFailedReason specified at val + (MMOmaSessionStateFailedReason val); +

    Gets the nickname string for the MMOmaSessionStateFailedReason specified at val .

    Parameters

    @@ -1465,15 +1465,15 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    mm_call_direction_get_stringย ()

    const gcharย *
    -mm_call_direction_get_string (MMCallDirection val);
    -

    Gets the nickname string for the MMCallDirection specified at val +mm_call_direction_get_string (MMCallDirection val); +

    Gets the nickname string for the MMCallDirection specified at val .

    Parameters

    @@ -1493,15 +1493,15 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    mm_call_state_get_stringย ()

    const gcharย *
    -mm_call_state_get_string (MMCallState val);
    -

    Gets the nickname string for the MMCallState specified at val +mm_call_state_get_string (MMCallState val); +

    Gets the nickname string for the MMCallState specified at val .

    Parameters

    @@ -1521,15 +1521,15 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]


    mm_call_state_reason_get_stringย ()

    const gcharย *
    -mm_call_state_reason_get_string (MMCallStateReason val);
    -

    Gets the nickname string for the MMCallStateReason specified at val +mm_call_state_reason_get_string (MMCallStateReason val); +

    Gets the nickname string for the MMCallStateReason specified at val .

    Parameters

    @@ -1549,12 +1549,12 @@

    Returns

    a string with the nickname, or NULL if not found. Do not free the returned value.

    -

    [transfer none]

    +

    [transfer none]

    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/libmm-glib.devhelp2 modemmanager-1.16.6/docs/reference/libmm-glib/html/libmm-glib.devhelp2 --- modemmanager-1.14.10/docs/reference/libmm-glib/html/libmm-glib.devhelp2 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/libmm-glib.devhelp2 2021-06-06 21:45:11.000000000 +0800 @@ -1,5 +1,5 @@ - + @@ -144,6 +144,7 @@ + @@ -306,6 +307,15 @@ + + + + + + + + + @@ -476,6 +486,8 @@ + + @@ -630,6 +642,8 @@ + + @@ -760,10 +774,13 @@ + + + @@ -1025,6 +1042,9 @@ + + + @@ -1067,6 +1087,9 @@ + + + @@ -1093,9 +1116,11 @@ + + @@ -1115,6 +1140,7 @@ + @@ -1375,11 +1401,13 @@ + + @@ -1389,6 +1417,7 @@ + @@ -1557,8 +1586,11 @@ + + + @@ -1581,6 +1613,8 @@ + + @@ -1740,6 +1774,7 @@ + @@ -1761,9 +1796,11 @@ + + @@ -1843,6 +1880,7 @@ + @@ -1890,6 +1928,8 @@ + + diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/object-tree.html modemmanager-1.16.6/docs/reference/libmm-glib/html/object-tree.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/object-tree.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/object-tree.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -128,6 +128,6 @@
    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/pt01.html modemmanager-1.16.6/docs/reference/libmm-glib/html/pt01.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/pt01.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/pt01.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -185,6 +185,6 @@
    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/pt02.html modemmanager-1.16.6/docs/reference/libmm-glib/html/pt02.html --- modemmanager-1.14.10/docs/reference/libmm-glib/html/pt02.html 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/pt02.html 2021-06-06 21:45:12.000000000 +0800 @@ -8,7 +8,7 @@ - + @@ -194,6 +194,6 @@
    +
    Generated by GTK-Doc V1.33.1
    \ No newline at end of file diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/html/style.css modemmanager-1.16.6/docs/reference/libmm-glib/html/style.css --- modemmanager-1.14.10/docs/reference/libmm-glib/html/style.css 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/html/style.css 2021-06-06 21:45:11.000000000 +0800 @@ -455,10 +455,10 @@ } } -pre { line-height: 125%; margin: 0; } -td.linenos pre { color: #000000; background-color: #f0f0f0; padding-left: 5px; padding-right: 5px; } -span.linenos { color: #000000; background-color: #f0f0f0; padding-left: 5px; padding-right: 5px; } -td.linenos pre.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .hll { background-color: #ffffcc } .c { color: #408080; font-style: italic } /* Comment */ diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/libmm-glib-docs.xml modemmanager-1.16.6/docs/reference/libmm-glib/libmm-glib-docs.xml --- modemmanager-1.14.10/docs/reference/libmm-glib/libmm-glib-docs.xml 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/libmm-glib-docs.xml 2021-06-06 21:40:59.000000000 +0800 @@ -15,6 +15,8 @@ For libmm-glib version &version; + The latest version of this documentation can be found on-line at + https://www.freedesktop.org/software/ModemManager/doc/latest/libmm-glib/. @@ -40,6 +42,7 @@ 2018 2019 2020 + 2021 The ModemManager Authors @@ -291,6 +294,10 @@ Index of new symbols in 1.14 + + Index of new symbols in 1.16 + + diff -Nru modemmanager-1.14.10/docs/reference/libmm-glib/libmm-glib-sections.txt modemmanager-1.16.6/docs/reference/libmm-glib/libmm-glib-sections.txt --- modemmanager-1.14.10/docs/reference/libmm-glib/libmm-glib-sections.txt 2021-01-16 21:27:59.000000000 +0800 +++ modemmanager-1.16.6/docs/reference/libmm-glib/libmm-glib-sections.txt 2021-06-06 21:45:11.000000000 +0800 @@ -182,6 +182,15 @@ mm_modem_get_sim mm_modem_get_sim_finish mm_modem_get_sim_sync +mm_modem_get_sim_slot_paths +mm_modem_dup_sim_slot_paths +mm_modem_get_primary_sim_slot +mm_modem_list_sim_slots +mm_modem_list_sim_slots_finish +mm_modem_list_sim_slots_sync +mm_modem_set_primary_sim_slot +mm_modem_set_primary_sim_slot_finish +mm_modem_set_primary_sim_slot_sync mm_modem_enable mm_modem_enable_finish @@ -861,6 +870,8 @@ mm_simple_connect_properties_set_ip_type mm_simple_connect_properties_get_allow_roaming mm_simple_connect_properties_set_allow_roaming +mm_simple_connect_properties_get_rm_protocol +mm_simple_connect_properties_set_rm_protocol mm_simple_connect_properties_get_number mm_simple_connect_properties_set_number @@ -943,6 +954,8 @@ mm_modem_signal_get_umts mm_modem_signal_peek_lte mm_modem_signal_get_lte +mm_modem_signal_peek_nr5g +mm_modem_signal_get_nr5g mm_modem_signal_setup mm_modem_signal_setup_finish @@ -1183,6 +1196,7 @@ mm_bearer_properties_new_from_dictionary mm_bearer_properties_new_from_string +MMBearerPropertiesCmpFlags mm_bearer_properties_cmp mm_bearer_properties_consume_string mm_bearer_properties_consume_variant @@ -1207,10 +1221,13 @@ mm_sim_get_path mm_sim_dup_path +mm_sim_get_active mm_sim_get_identifier mm_sim_dup_identifier mm_sim_get_imsi mm_sim_dup_imsi +mm_sim_get_eid +mm_sim_dup_eid mm_sim_get_operator_identifier mm_sim_dup_operator_identifier mm_sim_get_operator_name @@ -2080,6 +2097,9 @@ mm_gdbus_modem_dup_signal_quality mm_gdbus_modem_get_sim mm_gdbus_modem_dup_sim +mm_gdbus_modem_dup_sim_slots +mm_gdbus_modem_get_sim_slots +mm_gdbus_modem_get_primary_sim_slot mm_gdbus_modem_get_supported_capabilities mm_gdbus_modem_dup_supported_capabilities mm_gdbus_modem_get_state @@ -2123,6 +2143,9 @@ mm_gdbus_modem_call_set_current_capabilities mm_gdbus_modem_call_set_current_capabilities_finish mm_gdbus_modem_call_set_current_capabilities_sync +mm_gdbus_modem_call_set_primary_sim_slot +mm_gdbus_modem_call_set_primary_sim_slot_finish +mm_gdbus_modem_call_set_primary_sim_slot_sync mm_gdbus_modem_call_command mm_gdbus_modem_call_command_finish mm_gdbus_modem_call_command_sync @@ -2150,6 +2173,8 @@ mm_gdbus_modem_set_hardware_revision mm_gdbus_modem_set_signal_quality mm_gdbus_modem_set_sim +mm_gdbus_modem_set_sim_slots +mm_gdbus_modem_set_primary_sim_slot mm_gdbus_modem_set_supported_capabilities mm_gdbus_modem_set_state mm_gdbus_modem_set_state_failed_reason @@ -2171,6 +2196,7 @@ mm_gdbus_modem_complete_set_current_modes mm_gdbus_modem_complete_set_current_bands mm_gdbus_modem_complete_set_current_capabilities +mm_gdbus_modem_complete_set_primary_sim_slot mm_gdbus_modem_interface_info mm_gdbus_modem_override_properties @@ -2793,11 +2819,13 @@ mm_gdbus_modem_signal_get_gsm mm_gdbus_modem_signal_get_umts mm_gdbus_modem_signal_get_lte +mm_gdbus_modem_signal_get_nr5g mm_gdbus_modem_signal_dup_cdma mm_gdbus_modem_signal_dup_evdo mm_gdbus_modem_signal_dup_gsm mm_gdbus_modem_signal_dup_umts mm_gdbus_modem_signal_dup_lte +mm_gdbus_modem_signal_dup_nr5g mm_gdbus_modem_signal_call_setup mm_gdbus_modem_signal_call_setup_finish @@ -2807,6 +2835,7 @@ mm_gdbus_modem_signal_set_evdo mm_gdbus_modem_signal_set_gsm mm_gdbus_modem_signal_set_lte +mm_gdbus_modem_signal_set_nr5g mm_gdbus_modem_signal_set_rate mm_gdbus_modem_signal_set_umts mm_gdbus_modem_signal_complete_setup @@ -3083,8 +3112,11 @@ MmGdbusSim MmGdbusSimIface +mm_gdbus_sim_get_active mm_gdbus_sim_get_imsi mm_gdbus_sim_dup_imsi +mm_gdbus_sim_get_eid +mm_gdbus_sim_dup_eid mm_gdbus_sim_get_sim_identifier mm_gdbus_sim_dup_sim_identifier mm_gdbus_sim_get_operator_identifier @@ -3107,7 +3139,9 @@ mm_gdbus_sim_call_change_pin_finish mm_gdbus_sim_call_change_pin_sync +mm_gdbus_sim_set_active mm_gdbus_sim_set_imsi +mm_gdbus_sim_set_eid mm_gdbus_sim_set_operator_identifier mm_gdbus_sim_set_operator_name mm_gdbus_sim_set_sim_identifier diff -Nru modemmanager-1.14.10/examples/Makefile.in modemmanager-1.16.6/examples/Makefile.in --- modemmanager-1.14.10/examples/Makefile.in 2021-01-16 21:19:55.000000000 +0800 +++ modemmanager-1.16.6/examples/Makefile.in 2021-06-06 21:43:42.000000000 +0800 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 Free Software Foundation, Inc. @@ -254,6 +254,8 @@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBELOGIND_CFLAGS = @LIBELOGIND_CFLAGS@ +LIBELOGIND_LIBS = @LIBELOGIND_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBMM_GLIB_CFLAGS = @LIBMM_GLIB_CFLAGS@ @@ -378,6 +380,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff -Nru modemmanager-1.14.10/examples/modem-watcher-javascript/Makefile.in modemmanager-1.16.6/examples/modem-watcher-javascript/Makefile.in --- modemmanager-1.14.10/examples/modem-watcher-javascript/Makefile.in 2021-01-16 21:19:55.000000000 +0800 +++ modemmanager-1.16.6/examples/modem-watcher-javascript/Makefile.in 2021-06-06 21:43:42.000000000 +0800 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 Free Software Foundation, Inc. @@ -194,6 +194,8 @@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBELOGIND_CFLAGS = @LIBELOGIND_CFLAGS@ +LIBELOGIND_LIBS = @LIBELOGIND_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBMM_GLIB_CFLAGS = @LIBMM_GLIB_CFLAGS@ @@ -318,6 +320,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff -Nru modemmanager-1.14.10/examples/modem-watcher-python/Makefile.in modemmanager-1.16.6/examples/modem-watcher-python/Makefile.in --- modemmanager-1.14.10/examples/modem-watcher-python/Makefile.in 2021-01-16 21:19:55.000000000 +0800 +++ modemmanager-1.16.6/examples/modem-watcher-python/Makefile.in 2021-06-06 21:43:42.000000000 +0800 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 Free Software Foundation, Inc. @@ -194,6 +194,8 @@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBELOGIND_CFLAGS = @LIBELOGIND_CFLAGS@ +LIBELOGIND_LIBS = @LIBELOGIND_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBMM_GLIB_CFLAGS = @LIBMM_GLIB_CFLAGS@ @@ -318,6 +320,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff -Nru modemmanager-1.14.10/examples/modem-watcher-python/ModemWatcher.py modemmanager-1.16.6/examples/modem-watcher-python/ModemWatcher.py --- modemmanager-1.14.10/examples/modem-watcher-python/ModemWatcher.py 2020-09-28 16:25:21.000000000 +0800 +++ modemmanager-1.16.6/examples/modem-watcher-python/ModemWatcher.py 2021-06-06 21:40:59.000000000 +0800 @@ -18,27 +18,25 @@ # Copyright (C) 2014 Aleksander Morgado # -import os, sys, gi - +import gi gi.require_version('ModemManager', '1.0') -from gi.repository import GLib, GObject, Gio, ModemManager +from gi.repository import Gio, GLib, GObject, ModemManager -""" -The ModemWatcher class is responsible for monitoring ModemManager -""" -class ModemWatcher: +class ModemWatcher: """ - Constructor + The ModemWatcher class is responsible for monitoring ModemManager. """ + def __init__(self): # Flag for initial logs self.initializing = True # Setup DBus monitoring - self.connection = Gio.bus_get_sync (Gio.BusType.SYSTEM, None) - self.manager = ModemManager.Manager.new_sync (self.connection, - Gio.DBusObjectManagerClientFlags.DO_NOT_AUTO_START, - None) + self.connection = Gio.bus_get_sync(Gio.BusType.SYSTEM, None) + self.manager = ModemManager.Manager.new_sync( + self.connection, + Gio.DBusObjectManagerClientFlags.DO_NOT_AUTO_START, + None) # IDs for added/removed signals self.object_added_id = 0 self.object_removed_id = 0 @@ -49,25 +47,25 @@ # Finish initialization self.initializing = False - """ - ModemManager is now available - """ def set_available(self): - if self.available == False or self.initializing == True: + """ + ModemManager is now available. + """ + if not self.available or self.initializing: print('[ModemWatcher] ModemManager %s service is available in bus' % self.manager.get_version()) self.object_added_id = self.manager.connect('object-added', self.on_object_added) self.object_removed_id = self.manager.connect('object-removed', self.on_object_removed) self.available = True # Initial scan - if self.initializing == True: + if self.initializing: for obj in self.manager.get_objects(): self.on_object_added(self.manager, obj) - """ - ModemManager is now unavailable - """ def set_unavailable(self): - if self.available == True or self.initializing == True: + """ + ModemManager is now unavailable. + """ + if self.available or self.initializing: print('[ModemWatcher] ModemManager service not available in bus') if self.object_added_id: self.manager.disconnect(self.object_added_id) @@ -77,19 +75,19 @@ self.object_removed_id = 0 self.available = False - """ - Name owner updates - """ def on_name_owner(self, manager, prop): + """ + Name owner updates. + """ if self.manager.get_name_owner(): self.set_available() else: self.set_unavailable() - """ - Object added - """ def on_object_added(self, manager, obj): + """ + Object added. + """ modem = obj.get_modem() print('[ModemWatcher] %s (%s) modem managed by ModemManager [%s]: %s' % (modem.get_manufacturer(), @@ -97,12 +95,12 @@ modem.get_equipment_identifier(), obj.get_object_path())) if modem.get_state() == ModemManager.ModemState.FAILED: - print('[ModemWatcher,%s] ignoring failed modem' % - modem_index(obj.get_object_path())) + print('[ModemWatcher] ignoring failed modem: %s' % + obj.get_object_path()) - """ - Object removed - """ def on_object_removed(self, manager, obj): + """ + Object removed. + """ print('[ModemWatcher] modem unmanaged by ModemManager: %s' % obj.get_object_path()) diff -Nru modemmanager-1.14.10/examples/modem-watcher-python/modem-watcher-python modemmanager-1.16.6/examples/modem-watcher-python/modem-watcher-python --- modemmanager-1.14.10/examples/modem-watcher-python/modem-watcher-python 2017-09-14 22:00:54.000000000 +0800 +++ modemmanager-1.16.6/examples/modem-watcher-python/modem-watcher-python 2021-06-06 21:40:59.000000000 +0800 @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # -*- Mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- # # This program is free software; you can redistribute it and/or modify it under @@ -18,25 +18,34 @@ # Copyright (C) 2014 Aleksander Morgado # -import sys, signal -import ModemWatcher +import signal + from gi.repository import GLib -main_loop = None -watcher = None +import ModemWatcher -def signal_handler(data): - main_loop.quit() -if __name__ == "__main__": +def signal_handler(loop): + """SIGHUP and SIGINT handler.""" + loop.quit() + + +def main(): + """Main routine.""" # Create modem watcher - watcher = ModemWatcher.ModemWatcher() + ModemWatcher.ModemWatcher() # Main loop main_loop = GLib.MainLoop() - GLib.unix_signal_add(GLib.PRIORITY_HIGH, signal.SIGHUP, signal_handler, None) - GLib.unix_signal_add(GLib.PRIORITY_HIGH, signal.SIGTERM, signal_handler, None) + GLib.unix_signal_add( + GLib.PRIORITY_HIGH, signal.SIGHUP, signal_handler, main_loop) + GLib.unix_signal_add( + GLib.PRIORITY_HIGH, signal.SIGTERM, signal_handler, main_loop) try: main_loop.run() except KeyboardInterrupt: pass + + +if __name__ == "__main__": + main() diff -Nru modemmanager-1.14.10/examples/network-scan-python/Makefile.in modemmanager-1.16.6/examples/network-scan-python/Makefile.in --- modemmanager-1.14.10/examples/network-scan-python/Makefile.in 2021-01-16 21:19:55.000000000 +0800 +++ modemmanager-1.16.6/examples/network-scan-python/Makefile.in 2021-06-06 21:43:42.000000000 +0800 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 Free Software Foundation, Inc. @@ -194,6 +194,8 @@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBELOGIND_CFLAGS = @LIBELOGIND_CFLAGS@ +LIBELOGIND_LIBS = @LIBELOGIND_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBMM_GLIB_CFLAGS = @LIBMM_GLIB_CFLAGS@ @@ -318,6 +320,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff -Nru modemmanager-1.14.10/examples/network-scan-python/network-scan-python modemmanager-1.16.6/examples/network-scan-python/network-scan-python --- modemmanager-1.14.10/examples/network-scan-python/network-scan-python 2020-09-28 16:25:21.000000000 +0800 +++ modemmanager-1.16.6/examples/network-scan-python/network-scan-python 2021-06-06 21:40:59.000000000 +0800 @@ -18,10 +18,13 @@ # Copyright (C) 2019 Aleksander Morgado # -import sys, signal, gi +import sys +import time +import gi gi.require_version('ModemManager', '1.0') -from gi.repository import GLib, GObject, Gio, ModemManager +from gi.repository import Gio, GLib, GObject, ModemManager + if __name__ == "__main__": @@ -32,25 +35,35 @@ sys.exit(1) # Connection to ModemManager - connection = Gio.bus_get_sync (Gio.BusType.SYSTEM, None) - manager = ModemManager.Manager.new_sync (connection, Gio.DBusObjectManagerClientFlags.DO_NOT_AUTO_START, None) - if manager.get_name_owner() is None: - sys.stderr.write('ModemManager not found in bus') + connection = Gio.bus_get_sync(Gio.BusType.SYSTEM, None) + manager = ModemManager.Manager.new_sync( + connection, Gio.DBusObjectManagerClientFlags.DO_NOT_AUTO_START, None) + if not manager.get_name_owner(): + sys.stderr.write('ModemManager not found in bus\n') sys.exit(2) # Iterate modems and scan network with each one by one for obj in manager.get_objects(): + modem = obj.get_modem() + modem.enable() + time.sleep(1) modem3gpp = obj.get_modem_3gpp() + if not modem3gpp: + sys.stderr.write('%s: skipping unusable modem...\n' % + obj.get_object_path()) + continue modem3gpp.set_default_timeout(300000) print('%s: starting network scan...' % modem3gpp.get_object_path()) networks = modem3gpp.scan_sync() if networks: for network in networks: print('%s: %s - %s (%s, %s)' % ( - network.get_operator_code(), - network.get_operator_short(), - network.get_operator_short(), - ModemManager.modem_access_technology_build_string_from_mask (network.get_access_technology()), - ModemManager.Modem3gppNetworkAvailability.get_string(network.get_availability()))) + network.get_operator_code(), + network.get_operator_short(), + network.get_operator_short(), + ModemManager.modem_access_technology_build_string_from_mask( + network.get_access_technology()), + ModemManager.Modem3gppNetworkAvailability.get_string( + network.get_availability()))) else: print('no networks found') diff -Nru modemmanager-1.14.10/examples/sms-python/Makefile.in modemmanager-1.16.6/examples/sms-python/Makefile.in --- modemmanager-1.14.10/examples/sms-python/Makefile.in 2021-01-16 21:19:55.000000000 +0800 +++ modemmanager-1.16.6/examples/sms-python/Makefile.in 2021-06-06 21:43:42.000000000 +0800 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 Free Software Foundation, Inc. @@ -194,6 +194,8 @@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBELOGIND_CFLAGS = @LIBELOGIND_CFLAGS@ +LIBELOGIND_LIBS = @LIBELOGIND_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBMM_GLIB_CFLAGS = @LIBMM_GLIB_CFLAGS@ @@ -318,6 +320,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff -Nru modemmanager-1.14.10/examples/sms-python/sms-python modemmanager-1.16.6/examples/sms-python/sms-python --- modemmanager-1.14.10/examples/sms-python/sms-python 2020-09-28 16:25:21.000000000 +0800 +++ modemmanager-1.16.6/examples/sms-python/sms-python 2021-06-06 21:40:59.000000000 +0800 @@ -18,10 +18,12 @@ # Copyright (C) 2016 Aleksander Morgado # -import sys, signal, gi +import sys +import gi gi.require_version('ModemManager', '1.0') -from gi.repository import GLib, GObject, Gio, ModemManager +from gi.repository import Gio, GLib, GObject, ModemManager + if __name__ == "__main__": diff -Nru modemmanager-1.14.10/gtk-doc.make modemmanager-1.16.6/gtk-doc.make --- modemmanager-1.14.10/gtk-doc.make 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/gtk-doc.make 2021-06-06 21:40:59.000000000 +0800 @@ -1,4 +1,22 @@ # -*- mode: makefile -*- +# +# gtk-doc.make - make rules for gtk-doc +# Copyright (C) 2003 James Henstridge +# 2004-2007 Damon Chaplin +# 2007-2017 Stefan Sauer +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . #################################### # Everything below here is generic # @@ -81,55 +99,54 @@ #### setup #### -GTK_DOC_V_SETUP=$(GTK_DOC_V_SETUP_$(V)) -GTK_DOC_V_SETUP_=$(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_SETUP=$(GTK_DOC_V_SETUP_@AM_V@) +GTK_DOC_V_SETUP_=$(GTK_DOC_V_SETUP_@AM_DEFAULT_V@) GTK_DOC_V_SETUP_0=@echo " DOC Preparing build"; setup-build.stamp: -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ - files=`echo $(SETUP_FILES) $(DOC_MODULE).types`; \ - if test "x$$files" != "x" ; then \ - for file in $$files ; do \ - destdir=`dirname $(abs_builddir)/$$file`; \ - test -d "$$destdir" || mkdir -p "$$destdir"; \ - test -f $(abs_srcdir)/$$file && \ - cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ - done; \ - fi; \ + files=`echo $(SETUP_FILES) $(DOC_MODULE).types`; \ + if test "x$$files" != "x" ; then \ + for file in $$files ; do \ + destdir=`dirname $(abs_builddir)/$$file`; \ + test -d "$$destdir" || mkdir -p "$$destdir"; \ + test -f $(abs_srcdir)/$$file && \ + cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ + done; \ + fi; \ fi $(AM_V_at)touch setup-build.stamp - #### scan #### -GTK_DOC_V_SCAN=$(GTK_DOC_V_SCAN_$(V)) -GTK_DOC_V_SCAN_=$(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_SCAN=$(GTK_DOC_V_SCAN_@AM_V@) +GTK_DOC_V_SCAN_=$(GTK_DOC_V_SCAN_@AM_DEFAULT_V@) GTK_DOC_V_SCAN_0=@echo " DOC Scanning header files"; -GTK_DOC_V_INTROSPECT=$(GTK_DOC_V_INTROSPECT_$(V)) -GTK_DOC_V_INTROSPECT_=$(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_INTROSPECT=$(GTK_DOC_V_INTROSPECT_@AM_V@) +GTK_DOC_V_INTROSPECT_=$(GTK_DOC_V_INTROSPECT_@AM_DEFAULT_V@) GTK_DOC_V_INTROSPECT_0=@echo " DOC Introspecting gobjects"; scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB) $(GTK_DOC_V_SCAN)_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ - _source_dir="$${_source_dir} --source-dir=$$i" ; \ + _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ - scanobj_options=""; \ - gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ - if test "$$?" = "0"; then \ - if test "x$(V)" = "x1"; then \ - scanobj_options="--verbose"; \ - fi; \ + scanobj_options=""; \ + gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ + if test "$$?" = "0"; then \ + if test "x$(V)" = "x1"; then \ + scanobj_options="--verbose"; \ fi; \ - CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ - gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ + fi; \ + CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ + gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ else \ - for i in $(SCANOBJ_FILES) ; do \ - test -f $$i || touch $$i ; \ - done \ + for i in $(SCANOBJ_FILES) ; do \ + test -f $$i || touch $$i ; \ + done \ fi $(AM_V_at)touch scan-build.stamp @@ -138,14 +155,14 @@ #### xml #### -GTK_DOC_V_XML=$(GTK_DOC_V_XML_$(V)) -GTK_DOC_V_XML_=$(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_XML=$(GTK_DOC_V_XML_@AM_V@) +GTK_DOC_V_XML_=$(GTK_DOC_V_XML_@AM_DEFAULT_V@) GTK_DOC_V_XML_0=@echo " DOC Building XML"; sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(HFILE_GLOB) $(CFILE_GLOB) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) xml/gtkdocentities.ent $(GTK_DOC_V_XML)_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ - _source_dir="$${_source_dir} --source-dir=$$i" ; \ + _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) $(AM_V_at)touch sgml-build.stamp @@ -153,6 +170,9 @@ sgml.stamp: sgml-build.stamp @true +$(DOC_MAIN_SGML_FILE): sgml-build.stamp + @true + xml/gtkdocentities.ent: Makefile $(GTK_DOC_V_XML)$(MKDIR_P) $(@D) && ( \ echo ""; \ @@ -166,12 +186,12 @@ #### html #### -GTK_DOC_V_HTML=$(GTK_DOC_V_HTML_$(V)) -GTK_DOC_V_HTML_=$(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_HTML=$(GTK_DOC_V_HTML_@AM_V@) +GTK_DOC_V_HTML_=$(GTK_DOC_V_HTML_@AM_DEFAULT_V@) GTK_DOC_V_HTML_0=@echo " DOC Building HTML"; -GTK_DOC_V_XREF=$(GTK_DOC_V_XREF_$(V)) -GTK_DOC_V_XREF_=$(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_XREF=$(GTK_DOC_V_XREF_@AM_V@) +GTK_DOC_V_XREF_=$(GTK_DOC_V_XREF_@AM_DEFAULT_V@) GTK_DOC_V_XREF_0=@echo " DOC Fixing cross-references"; html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) @@ -190,20 +210,17 @@ cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) -@test "x$(HTML_IMAGES)" = "x" || \ for file in $(HTML_IMAGES) ; do \ - if test -f $(abs_srcdir)/$$file ; then \ - cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ - fi; \ - if test -f $(abs_builddir)/$$file ; then \ - cp $(abs_builddir)/$$file $(abs_builddir)/html; \ - fi; \ + test -f $(abs_srcdir)/$$file && cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ + test -f $(abs_builddir)/$$file && cp $(abs_builddir)/$$file $(abs_builddir)/html; \ + test -f $$file && cp $$file $(abs_builddir)/html; \ done; $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) $(AM_V_at)touch html-build.stamp #### pdf #### -GTK_DOC_V_PDF=$(GTK_DOC_V_PDF_$(V)) -GTK_DOC_V_PDF_=$(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_PDF=$(GTK_DOC_V_PDF_@AM_V@) +GTK_DOC_V_PDF_=$(GTK_DOC_V_PDF_@AM_DEFAULT_V@) GTK_DOC_V_PDF_0=@echo " DOC Building PDF"; pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) @@ -268,7 +285,6 @@ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ fi; \ - $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ fi uninstall-local: diff -Nru modemmanager-1.14.10/include/Makefile.in modemmanager-1.16.6/include/Makefile.in --- modemmanager-1.14.10/include/Makefile.in 2021-01-16 21:19:55.000000000 +0800 +++ modemmanager-1.16.6/include/Makefile.in 2021-06-06 21:43:42.000000000 +0800 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 Free Software Foundation, Inc. @@ -244,6 +244,8 @@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBELOGIND_CFLAGS = @LIBELOGIND_CFLAGS@ +LIBELOGIND_LIBS = @LIBELOGIND_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBMM_GLIB_CFLAGS = @LIBMM_GLIB_CFLAGS@ @@ -368,6 +370,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff -Nru modemmanager-1.14.10/include/ModemManager-enums.h modemmanager-1.16.6/include/ModemManager-enums.h --- modemmanager-1.14.10/include/ModemManager-enums.h 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/include/ModemManager-enums.h 2021-06-06 21:40:59.000000000 +0800 @@ -538,6 +538,7 @@ * @MM_MODEM_PORT_TYPE_QMI: QMI port. * @MM_MODEM_PORT_TYPE_MBIM: MBIM port. * @MM_MODEM_PORT_TYPE_AUDIO: Audio port. Since 1.12. + * @MM_MODEM_PORT_TYPE_IGNORED: Ignored port. Since 1.16. * * Type of modem port. * @@ -552,6 +553,7 @@ MM_MODEM_PORT_TYPE_QMI = 6, MM_MODEM_PORT_TYPE_MBIM = 7, MM_MODEM_PORT_TYPE_AUDIO = 8, + MM_MODEM_PORT_TYPE_IGNORED = 9, } MMModemPortType; /** diff -Nru modemmanager-1.14.10/include/ModemManager-names.h modemmanager-1.16.6/include/ModemManager-names.h --- modemmanager-1.14.10/include/ModemManager-names.h 2021-01-16 21:20:03.000000000 +0800 +++ modemmanager-1.16.6/include/ModemManager-names.h 2021-06-06 21:43:47.000000000 +0800 @@ -85,8 +85,10 @@ #define MM_SIM_METHOD_SENDPUK "SendPuk" #define MM_SIM_METHOD_ENABLEPIN "EnablePin" #define MM_SIM_METHOD_CHANGEPIN "ChangePin" +#define MM_SIM_PROPERTY_ACTIVE "Active" #define MM_SIM_PROPERTY_SIMIDENTIFIER "SimIdentifier" #define MM_SIM_PROPERTY_IMSI "Imsi" +#define MM_SIM_PROPERTY_EID "Eid" #define MM_SIM_PROPERTY_OPERATORIDENTIFIER "OperatorIdentifier" #define MM_SIM_PROPERTY_OPERATORNAME "OperatorName" #define MM_SIM_PROPERTY_EMERGENCYNUMBERS "EmergencyNumbers" @@ -161,9 +163,12 @@ #define MM_MODEM_METHOD_SETCURRENTCAPABILITIES "SetCurrentCapabilities" #define MM_MODEM_METHOD_SETCURRENTMODES "SetCurrentModes" #define MM_MODEM_METHOD_SETCURRENTBANDS "SetCurrentBands" +#define MM_MODEM_METHOD_SETPRIMARYSIMSLOT "SetPrimarySimSlot" #define MM_MODEM_METHOD_COMMAND "Command" #define MM_MODEM_SIGNAL_STATECHANGED "StateChanged" #define MM_MODEM_PROPERTY_SIM "Sim" +#define MM_MODEM_PROPERTY_SIMSLOTS "SimSlots" +#define MM_MODEM_PROPERTY_PRIMARYSIMSLOT "PrimarySimSlot" #define MM_MODEM_PROPERTY_BEARERS "Bearers" #define MM_MODEM_PROPERTY_SUPPORTEDCAPABILITIES "SupportedCapabilities" #define MM_MODEM_PROPERTY_CURRENTCAPABILITIES "CurrentCapabilities" @@ -308,6 +313,7 @@ #define MM_MODEM_SIGNAL_PROPERTY_GSM "Gsm" #define MM_MODEM_SIGNAL_PROPERTY_UMTS "Umts" #define MM_MODEM_SIGNAL_PROPERTY_LTE "Lte" +#define MM_MODEM_SIGNAL_PROPERTY_NR5G "Nr5g" /* * Interface 'org.freedesktop.ModemManager1.Modem.Oma' */ diff -Nru modemmanager-1.14.10/include/ModemManager-tags.h modemmanager-1.16.6/include/ModemManager-tags.h --- modemmanager-1.14.10/include/ModemManager-tags.h 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/include/ModemManager-tags.h 2021-06-06 21:40:59.000000000 +0800 @@ -214,6 +214,36 @@ #define ID_MM_PORT_TYPE_AUDIO "ID_MM_PORT_TYPE_AUDIO" /** + * ID_MM_PORT_TYPE_QMI: + * + * This is a port-specific tag applied to generic ports that we know in advance + * are QMI ports. + * + * This tag will also prevent other types of probing (e.g. AT, MBIM) on the + * port. + * + * This tag is not required for QMI ports exposed by the qmi_wwan driver. + * + * Since: 1.16 + */ +#define ID_MM_PORT_TYPE_QMI "ID_MM_PORT_TYPE_QMI" + +/** + * ID_MM_PORT_TYPE_MBIM: + * + * This is a port-specific tag applied to generic ports that we know in advance + * are MBIM ports. + * + * This tag will also prevent other types of probing (e.g. AT, QMI) on the + * port. + * + * This tag is not required for MBIM ports exposed by the cdc_mbim driver. + * + * Since: 1.16 + */ +#define ID_MM_PORT_TYPE_MBIM "ID_MM_PORT_TYPE_MBIM" + +/** * ID_MM_TTY_BAUDRATE: * * This is a port-specific tag applied to TTYs that require a specific diff -Nru modemmanager-1.14.10/include/ModemManager-version.h modemmanager-1.16.6/include/ModemManager-version.h --- modemmanager-1.14.10/include/ModemManager-version.h 2021-01-16 21:20:01.000000000 +0800 +++ modemmanager-1.16.6/include/ModemManager-version.h 2021-06-06 21:43:45.000000000 +0800 @@ -46,7 +46,7 @@ * * Since: 1.0 */ -#define MM_MINOR_VERSION (14) +#define MM_MINOR_VERSION (16) /** * MM_MICRO_VERSION: @@ -56,7 +56,7 @@ * * Since: 1.0 */ -#define MM_MICRO_VERSION (10) +#define MM_MICRO_VERSION (6) /** * MM_CHECK_VERSION: diff -Nru modemmanager-1.14.10/install-sh modemmanager-1.16.6/install-sh --- modemmanager-1.14.10/install-sh 2021-01-16 21:19:54.000000000 +0800 +++ modemmanager-1.16.6/install-sh 2021-06-06 21:43:42.000000000 +0800 @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2018-03-11.20; # UTC +scriptversion=2020-11-14.01; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -69,6 +69,11 @@ # Desired mode of installed file. mode=0755 +# Create dirs (including intermediate dirs) using mode 755. +# This is like GNU 'install' as of coreutils 8.32 (2020). +mkdir_umask=22 + +backupsuffix= chgrpcmd= chmodcmd=$chmodprog chowncmd= @@ -99,18 +104,28 @@ --version display version info and exit. -c (ignored) - -C install only if different (preserve the last data modification time) + -C install only if different (preserve data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. + -p pass -p to $cpprog. -s $stripprog installed files. + -S SUFFIX attempt to back up existing files, with suffix SUFFIX. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG + +By default, rm is invoked with -f; when overridden with RMPROG, +it's up to you to specify -f if you want it. + +If -S is not specified, no backups are attempted. + +Email bug reports to bug-automake@gnu.org. +Automake home page: https://www.gnu.org/software/automake/ " while test $# -ne 0; do @@ -137,8 +152,13 @@ -o) chowncmd="$chownprog $2" shift;; + -p) cpprog="$cpprog -p";; + -s) stripcmd=$stripprog;; + -S) backupsuffix="$2" + shift;; + -t) is_target_a_directory=always dst_arg=$2 @@ -255,6 +275,10 @@ dstdir=$dst test -d "$dstdir" dstdir_status=$? + # Don't chown directories that already exist. + if test $dstdir_status = 0; then + chowncmd="" + fi else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command @@ -301,22 +325,6 @@ if test $dstdir_status != 0; then case $posix_mkdir in '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then @@ -326,52 +334,49 @@ fi posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - # Note that $RANDOM variable is not portable (e.g. dash); Use it - # here however when possible just to lower collision chance. - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - - trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 - - # Because "mkdir -p" follows existing symlinks and we likely work - # directly in world-writeable /tmp, make sure that the '$tmpdir' - # directory is successfully created first before we actually test - # 'mkdir -p' feature. - if (umask $mkdir_umask && - $mkdirprog $mkdir_mode "$tmpdir" && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - test_tmpdir="$tmpdir/a" - ls_ld_tmpdir=`ls -ld "$test_tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null - fi - trap '' 0;; - esac;; + # The $RANDOM variable is not portable (e.g., dash). Use it + # here however when possible just to lower collision chance. + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + + trap ' + ret=$? + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null + exit $ret + ' 0 + + # Because "mkdir -p" follows existing symlinks and we likely work + # directly in world-writeable /tmp, make sure that the '$tmpdir' + # directory is successfully created first before we actually test + # 'mkdir -p'. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; esac if @@ -382,7 +387,7 @@ then : else - # The umask is ridiculous, or mkdir does not conform to POSIX, + # mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. @@ -411,7 +416,7 @@ prefixes= else if $posix_mkdir; then - (umask=$mkdir_umask && + (umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 @@ -488,6 +493,13 @@ then rm -f "$dsttmp" else + # If $backupsuffix is set, and the file being installed + # already exists, attempt a backup. Don't worry if it fails, + # e.g., if mv doesn't support -f. + if test -n "$backupsuffix" && test -f "$dst"; then + $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null + fi + # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || @@ -502,9 +514,9 @@ # file should still install successfully. { test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || + $doit $rmcmd "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 diff -Nru modemmanager-1.14.10/introspection/Makefile.in modemmanager-1.16.6/introspection/Makefile.in --- modemmanager-1.14.10/introspection/Makefile.in 2021-01-16 21:19:55.000000000 +0800 +++ modemmanager-1.16.6/introspection/Makefile.in 2021-06-06 21:43:42.000000000 +0800 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 Free Software Foundation, Inc. @@ -284,6 +284,8 @@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBELOGIND_CFLAGS = @LIBELOGIND_CFLAGS@ +LIBELOGIND_LIBS = @LIBELOGIND_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBMM_GLIB_CFLAGS = @LIBMM_GLIB_CFLAGS@ @@ -408,6 +410,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff -Nru modemmanager-1.14.10/introspection/org.freedesktop.ModemManager1.Bearer.xml modemmanager-1.16.6/introspection/org.freedesktop.ModemManager1.Bearer.xml --- modemmanager-1.14.10/introspection/org.freedesktop.ModemManager1.Bearer.xml 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/introspection/org.freedesktop.ModemManager1.Bearer.xml 2021-06-06 21:40:59.000000000 +0800 @@ -120,7 +120,7 @@ If the bearer specifies configuration via PPP or DHCP, only the - "method" item will be present. + "method" item is guaranteed to be present. Additional items which are only applicable when using the MM_BEARER_IP_METHOD_STATIC diff -Nru modemmanager-1.14.10/introspection/org.freedesktop.ModemManager1.Modem.Signal.xml modemmanager-1.16.6/introspection/org.freedesktop.ModemManager1.Modem.Signal.xml --- modemmanager-1.14.10/introspection/org.freedesktop.ModemManager1.Modem.Signal.xml 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/introspection/org.freedesktop.ModemManager1.Modem.Signal.xml 2021-06-06 21:40:59.000000000 +0800 @@ -221,5 +221,43 @@ --> + + + diff -Nru modemmanager-1.14.10/introspection/org.freedesktop.ModemManager1.Modem.Simple.xml modemmanager-1.16.6/introspection/org.freedesktop.ModemManager1.Modem.Simple.xml --- modemmanager-1.14.10/introspection/org.freedesktop.ModemManager1.Modem.Simple.xml 2020-09-28 16:25:21.000000000 +0800 +++ modemmanager-1.16.6/introspection/org.freedesktop.ModemManager1.Modem.Simple.xml 2021-06-06 21:40:59.000000000 +0800 @@ -91,8 +91,9 @@ "number" - For POTS devices the number to dial,, + Number to dial for the data connection, given as a string value (signature "s"). + Deprecated since version 1.10.0. "allow-roaming" diff -Nru modemmanager-1.14.10/introspection/org.freedesktop.ModemManager1.Modem.xml modemmanager-1.16.6/introspection/org.freedesktop.ModemManager1.Modem.xml --- modemmanager-1.14.10/introspection/org.freedesktop.ModemManager1.Modem.xml 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/introspection/org.freedesktop.ModemManager1.Modem.xml 2021-06-06 21:40:59.000000000 +0800 @@ -80,7 +80,7 @@ "rm-protocol" Protocol of the Rm interface, given as a MMModemCdmaRmProtocol value (signature "u"). Optional in CDMA. "number" - Telephone number to dial, given as a string value (signature "s"). Required in POTS. + Number to dial for the data connection, given as a string value (signature "s"). Deprecated since version 1.10.0. Some properties are only applicable to a bearer of certain access @@ -183,6 +183,24 @@ + + + + + + + + + + + + + + + + + */ /* Properties */ - GObject *modem_firmware_dbus_skeleton; + GObject *modem_firmware_dbus_skeleton; + gboolean modem_firmware_ignore_carrier; }; /*****************************************************************************/ @@ -368,30 +372,6 @@ } /*****************************************************************************/ - -static gboolean -response_processor_string_ignore_at_errors (MMBaseModem *self, - gpointer none, - const gchar *command, - const gchar *response, - gboolean last_command, - const GError *error, - GVariant **result, - GError **result_error) -{ - if (error) { - /* Ignore AT errors (ie, ERROR or CMx ERROR) */ - if (error->domain != MM_MOBILE_EQUIPMENT_ERROR || last_command) - *result_error = g_error_copy (error); - - return FALSE; - } - - *result = g_variant_new_string (response); - return TRUE; -} - -/*****************************************************************************/ /* Create Bearer (Modem interface) */ static MMBaseBearer * @@ -583,27 +563,30 @@ { NULL } }; -static gboolean -parse_caps_gcap (MMBaseModem *self, - gpointer none, - const gchar *command, - const gchar *response, - gboolean last_command, - const GError *error, - GVariant **variant, - GError **result_error) +static MMBaseModemAtResponseProcessorResult +parse_caps_gcap (MMBaseModem *self, + gpointer none, + const gchar *command, + const gchar *response, + gboolean last_command, + const GError *error, + GVariant **result, + GError **result_error) { const ModemCaps *cap = modem_caps; guint32 ret = 0; + *result = NULL; + *result_error = NULL; + if (!response) - return FALSE; + return MM_BASE_MODEM_AT_RESPONSE_PROCESSOR_RESULT_CONTINUE; /* Some modems (Huawei E160g) won't respond to +GCAP with no SIM, but * will respond to ATI. Ignore the error and continue. */ - if (strstr (response, "+CME ERROR:")) - return FALSE; + if (strstr (response, "+CME ERROR:") || (error && error->domain == MM_MOBILE_EQUIPMENT_ERROR)) + return MM_BASE_MODEM_AT_RESPONSE_PROCESSOR_RESULT_CONTINUE; while (cap->name) { if (strstr (response, cap->name)) @@ -613,22 +596,25 @@ /* No result built? */ if (ret == 0) - return FALSE; + return MM_BASE_MODEM_AT_RESPONSE_PROCESSOR_RESULT_CONTINUE; - *variant = g_variant_new_uint32 (ret); - return TRUE; + *result = g_variant_new_uint32 (ret); + return MM_BASE_MODEM_AT_RESPONSE_PROCESSOR_RESULT_SUCCESS; } -static gboolean -parse_caps_cpin (MMBaseModem *self, - gpointer none, - const gchar *command, - const gchar *response, - gboolean last_command, - const GError *error, - GVariant **result, - GError **result_error) +static MMBaseModemAtResponseProcessorResult +parse_caps_cpin (MMBaseModem *self, + gpointer none, + const gchar *command, + const gchar *response, + gboolean last_command, + const GError *error, + GVariant **result, + GError **result_error) { + *result = NULL; + *result_error = NULL; + if (!response) { if (error && (g_error_matches (error, MM_MOBILE_EQUIPMENT_ERROR, MM_MOBILE_EQUIPMENT_ERROR_SIM_NOT_INSERTED) || @@ -637,9 +623,9 @@ g_error_matches (error, MM_MOBILE_EQUIPMENT_ERROR, MM_MOBILE_EQUIPMENT_ERROR_SIM_WRONG))) { /* At least, it's a GSM modem */ *result = g_variant_new_uint32 (MM_MODEM_CAPABILITY_GSM_UMTS); - return TRUE; + return MM_BASE_MODEM_AT_RESPONSE_PROCESSOR_RESULT_SUCCESS; } - return FALSE; + return MM_BASE_MODEM_AT_RESPONSE_PROCESSOR_RESULT_CONTINUE; } if (strcasestr (response, "SIM PIN") || @@ -660,23 +646,27 @@ strcasestr (response, "READY")) { /* At least, it's a GSM modem */ *result = g_variant_new_uint32 (MM_MODEM_CAPABILITY_GSM_UMTS); - return TRUE; + return MM_BASE_MODEM_AT_RESPONSE_PROCESSOR_RESULT_SUCCESS; } - return FALSE; + + return MM_BASE_MODEM_AT_RESPONSE_PROCESSOR_RESULT_CONTINUE; } -static gboolean -parse_caps_cgmm (MMBaseModem *self, - gpointer none, - const gchar *command, - const gchar *response, - gboolean last_command, - const GError *error, - GVariant **result, - GError **result_error) +static MMBaseModemAtResponseProcessorResult +parse_caps_cgmm (MMBaseModem *self, + gpointer none, + const gchar *command, + const gchar *response, + gboolean last_command, + const GError *error, + GVariant **result, + GError **result_error) { + *result = NULL; + *result_error = NULL; + if (!response) - return FALSE; + return MM_BASE_MODEM_AT_RESPONSE_PROCESSOR_RESULT_CONTINUE; /* This check detects some really old Motorola GPRS dongles and phones */ if (strstr (response, "GSM900") || @@ -685,9 +675,10 @@ strstr (response, "GSM850")) { /* At least, it's a GSM modem */ *result = g_variant_new_uint32 (MM_MODEM_CAPABILITY_GSM_UMTS); - return TRUE; + return MM_BASE_MODEM_AT_RESPONSE_PROCESSOR_RESULT_SUCCESS; } - return FALSE; + + return MM_BASE_MODEM_AT_RESPONSE_PROCESSOR_RESULT_CONTINUE; } static const MMBaseModemAtCommand capabilities[] = { @@ -942,8 +933,8 @@ } static const MMBaseModemAtCommand manufacturers[] = { - { "+CGMI", 3, TRUE, response_processor_string_ignore_at_errors }, - { "+GMI", 3, TRUE, response_processor_string_ignore_at_errors }, + { "+CGMI", 3, TRUE, mm_base_modem_response_processor_string_ignore_at_errors }, + { "+GMI", 3, TRUE, mm_base_modem_response_processor_string_ignore_at_errors }, { NULL } }; @@ -982,8 +973,8 @@ } static const MMBaseModemAtCommand models[] = { - { "+CGMM", 3, TRUE, response_processor_string_ignore_at_errors }, - { "+GMM", 3, TRUE, response_processor_string_ignore_at_errors }, + { "+CGMM", 3, TRUE, mm_base_modem_response_processor_string_ignore_at_errors }, + { "+GMM", 3, TRUE, mm_base_modem_response_processor_string_ignore_at_errors }, { NULL } }; @@ -1022,8 +1013,8 @@ } static const MMBaseModemAtCommand revisions[] = { - { "+CGMR", 3, TRUE, response_processor_string_ignore_at_errors }, - { "+GMR", 3, TRUE, response_processor_string_ignore_at_errors }, + { "+CGMR", 3, TRUE, mm_base_modem_response_processor_string_ignore_at_errors }, + { "+GMR", 3, TRUE, mm_base_modem_response_processor_string_ignore_at_errors }, { NULL } }; @@ -1082,8 +1073,8 @@ } static const MMBaseModemAtCommand equipment_identifiers[] = { - { "+CGSN", 3, TRUE, response_processor_string_ignore_at_errors }, - { "+GSN", 3, TRUE, response_processor_string_ignore_at_errors }, + { "+CGSN", 3, TRUE, mm_base_modem_response_processor_string_ignore_at_errors }, + { "+GSN", 3, TRUE, mm_base_modem_response_processor_string_ignore_at_errors }, { NULL } }; @@ -1130,9 +1121,9 @@ GAsyncResult *res, GError **error) { - GError *inner_error = NULL; - gpointer ctx = NULL; - gchar *device_identifier; + GError *inner_error = NULL; + gpointer ctx = NULL; + gchar *device_identifier; mm_base_modem_at_sequence_finish (MM_BASE_MODEM (self), res, &ctx, &inner_error); if (inner_error) { @@ -1141,10 +1132,16 @@ } g_assert (ctx != NULL); - device_identifier = (mm_broadband_modem_create_device_identifier ( - MM_BROADBAND_MODEM (self), - ((DeviceIdentifierContext *)ctx)->ati, - ((DeviceIdentifierContext *)ctx)->ati1)); + device_identifier = mm_broadband_modem_create_device_identifier ( + MM_BROADBAND_MODEM (self), + ((DeviceIdentifierContext *)ctx)->ati, + ((DeviceIdentifierContext *)ctx)->ati1, + &inner_error); + if (!device_identifier) { + g_propagate_error (error, inner_error); + return NULL; + } + mm_obj_dbg (self, "loaded device identifier: %s", device_identifier); return device_identifier; } @@ -2099,8 +2096,8 @@ * try the other command if the first one fails. */ static const MMBaseModemAtCommand signal_quality_csq_sequence[] = { - { "+CSQ", 3, FALSE, response_processor_string_ignore_at_errors }, - { "+CSQ?", 3, FALSE, response_processor_string_ignore_at_errors }, + { "+CSQ", 3, FALSE, mm_base_modem_response_processor_string_ignore_at_errors }, + { "+CSQ?", 3, FALSE, mm_base_modem_response_processor_string_ignore_at_errors }, { NULL } }; @@ -4131,7 +4128,8 @@ } if (g_strcmp0 (current_simid, cached_simid) != 0) { - mm_obj_info (self, "sim identifier has changed: possible SIM swap during power down/low"); + mm_obj_info (self, "sim identifier has changed: %s -> %s - possible SIM swap", + cached_simid, current_simid); mm_broadband_modem_sim_hot_swap_detected (self); } @@ -4157,6 +4155,7 @@ static void modem_check_for_sim_swap (MMIfaceModem *self, + const gchar *iccid, GAsyncReadyCallback callback, gpointer user_data) { @@ -4174,10 +4173,42 @@ MM_IFACE_MODEM_SIM, &ctx->sim, NULL); if (!ctx->sim) { - g_task_return_new_error (task, - MM_CORE_ERROR, - MM_CORE_ERROR_FAILED, - "could not acquire sim object"); + MMModemState modem_state; + + modem_state = MM_MODEM_STATE_UNKNOWN; + g_object_get (self, + MM_IFACE_MODEM_STATE, &modem_state, + NULL); + + if (modem_state == MM_MODEM_STATE_FAILED) { + mm_obj_info (self, "new SIM detected, handle as SIM hot-swap"); + mm_broadband_modem_sim_hot_swap_detected (MM_BROADBAND_MODEM (self)); + g_task_return_boolean (task, TRUE); + } else { + g_task_return_new_error (task, + MM_CORE_ERROR, + MM_CORE_ERROR_FAILED, + "could not acquire sim object"); + } + g_object_unref (task); + return; + } + + /* We may or may not get the new SIM identifier (iccid). In case + * we've got it, the load_sim_identifier phase can be skipped. */ + if (iccid) { + const gchar *cached_simid; + + cached_simid = mm_gdbus_sim_get_sim_identifier (MM_GDBUS_SIM (ctx->sim)); + if (!cached_simid || g_strcmp0 (iccid, cached_simid) != 0) { + mm_obj_info (self, "detected ICCID change (%s -> %s), handle as SIM hot-swap", + cached_simid ? cached_simid : "", + iccid); + mm_broadband_modem_sim_hot_swap_detected (MM_BROADBAND_MODEM (self)); + } else + mm_obj_dbg (self, "ICCID not changed"); + + g_task_return_boolean (task, TRUE); g_object_unref (task); return; } @@ -4440,7 +4471,7 @@ error)) return NULL; - mm_3gpp_normalize_operator (&operator_code, MM_BROADBAND_MODEM (self)->priv->modem_current_charset); + mm_3gpp_normalize_operator (&operator_code, MM_BROADBAND_MODEM (self)->priv->modem_current_charset, self); if (operator_code) mm_obj_dbg (self, "loaded Operator Code: %s", operator_code); return operator_code; @@ -4479,7 +4510,7 @@ error)) return NULL; - mm_3gpp_normalize_operator (&operator_name, MM_BROADBAND_MODEM (self)->priv->modem_current_charset); + mm_3gpp_normalize_operator (&operator_name, MM_BROADBAND_MODEM (self)->priv->modem_current_charset, self); if (operator_name) mm_obj_dbg (self, "loaded Operator Name: %s", operator_name); return operator_name; @@ -4775,27 +4806,37 @@ } static void -cops_ascii_set_ready (MMBaseModem *self, +cops_ascii_set_ready (MMBaseModem *_self, GAsyncResult *res, GTask *task) { - GError *error = NULL; + MMBroadbandModem *self = MM_BROADBAND_MODEM (_self); + g_autoptr(GError) error = NULL; - if (!mm_base_modem_at_command_full_finish (MM_BASE_MODEM (self), res, &error)) { + if (!mm_base_modem_at_command_full_finish (_self, res, &error)) { /* If it failed with an unsupported error, retry with current modem charset */ if (g_error_matches (error, MM_MOBILE_EQUIPMENT_ERROR, MM_MOBILE_EQUIPMENT_ERROR_NOT_SUPPORTED)) { - gchar *operator_id; - gchar *operator_id_current_charset; + g_autoptr(GError) enc_error = NULL; + g_autofree gchar *operator_id_enc = NULL; + gchar *operator_id; + /* try to encode to current charset */ operator_id = g_task_get_task_data (task); - operator_id_current_charset = mm_broadband_modem_take_and_convert_to_current_charset (MM_BROADBAND_MODEM (self), g_strdup (operator_id)); - - if (g_strcmp0 (operator_id, operator_id_current_charset) != 0) { - gchar *command; + operator_id_enc = mm_modem_charset_str_from_utf8 (operator_id, self->priv->modem_current_charset, FALSE, &enc_error); + if (!operator_id_enc) { + mm_obj_dbg (self, "couldn't convert operator id to current charset: %s", enc_error->message); + g_task_return_error (task, g_steal_pointer (&error)); + g_object_unref (task); + return; + } - command = g_strdup_printf ("+COPS=1,2,\"%s\"", operator_id_current_charset); - mm_base_modem_at_command_full (MM_BASE_MODEM (self), - mm_base_modem_peek_best_at_port (MM_BASE_MODEM (self), NULL), + /* retry only if encoded string is different to the non-encoded one */ + if (g_strcmp0 (operator_id, operator_id_enc) != 0) { + g_autofree gchar *command = NULL; + + command = g_strdup_printf ("+COPS=1,2,\"%s\"", operator_id_enc); + mm_base_modem_at_command_full (_self, + mm_base_modem_peek_best_at_port (_self, NULL), command, 120, FALSE, @@ -4803,16 +4844,10 @@ g_task_get_cancellable (task), (GAsyncReadyCallback)cops_set_ready, task); - g_error_free (error); - g_free (operator_id_current_charset); - g_free (command); return; } - /* operator id string would be the same on the current charset, - * so fallback and return the not supported error */ - g_free (operator_id_current_charset); } - g_task_return_error (task, error); + g_task_return_error (task, g_steal_pointer (&error)); } else g_task_return_boolean (task, TRUE); g_object_unref (task); @@ -5269,23 +5304,27 @@ return g_task_propagate_boolean (G_TASK (res), error); } -static gboolean -parse_registration_setup_reply (MMBaseModem *self, - gpointer none, - const gchar *command, - const gchar *response, - gboolean last_command, +static MMBaseModemAtResponseProcessorResult +parse_registration_setup_reply (MMBaseModem *self, + gpointer none, + const gchar *command, + const gchar *response, + gboolean last_command, const GError *error, - GVariant **result, - GError **result_error) + GVariant **result, + GError **result_error) { + *result_error = NULL; + /* If error, try next command */ - if (error) - return FALSE; + if (error) { + *result = NULL; + return MM_BASE_MODEM_AT_RESPONSE_PROCESSOR_RESULT_CONTINUE; + } /* Set COMMAND as result! */ *result = g_variant_new_string (command); - return TRUE; + return MM_BASE_MODEM_AT_RESPONSE_PROCESSOR_RESULT_SUCCESS; } static const MMBaseModemAtCommand cs_registration_sequence[] = { @@ -5848,47 +5887,53 @@ /* USSD Encode/Decode (3GPP/USSD interface) */ static gchar * -modem_3gpp_ussd_encode (MMIfaceModem3gppUssd *self, +modem_3gpp_ussd_encode (MMIfaceModem3gppUssd *_self, const gchar *command, guint *scheme, GError **error) { - MMBroadbandModem *broadband = MM_BROADBAND_MODEM (self); - gchar *hex = NULL; + MMBroadbandModem *self = MM_BROADBAND_MODEM (_self); g_autoptr(GByteArray) ussd_command = NULL; - ussd_command = g_byte_array_new (); - /* Encode to the current charset (as per AT+CSCS, which is what most modems * (except for Huawei it seems) will ask for. */ - if (mm_modem_charset_byte_array_append (ussd_command, - command, - FALSE, - broadband->priv->modem_current_charset, - NULL)) { - /* The scheme value does NOT represent the encoding used to encode the string - * we're giving. This scheme reflects the encoding that the modem should use when - * sending the data out to the network. We're hardcoding this to GSM-7 because - * USSD commands fit well in GSM-7, unlike USSD responses that may contain code - * points that may only be encoded in UCS-2. */ - *scheme = MM_MODEM_GSM_USSD_SCHEME_7BIT; - /* convert to hex representation */ - hex = mm_utils_bin2hexstr (ussd_command->data, ussd_command->len); + ussd_command = mm_modem_charset_bytearray_from_utf8 (command, self->priv->modem_current_charset, FALSE, error); + if (!ussd_command) { + g_prefix_error (error, "Failed to encode USSD command: "); + return NULL; } - return hex; + /* The scheme value does NOT represent the encoding used to encode the string + * we're giving. This scheme reflects the encoding that the modem should use when + * sending the data out to the network. We're hardcoding this to GSM-7 because + * USSD commands fit well in GSM-7, unlike USSD responses that may contain code + * points that may only be encoded in UCS-2. */ + *scheme = MM_MODEM_GSM_USSD_SCHEME_7BIT; + + /* convert to hex representation */ + return (gchar *) mm_utils_bin2hexstr (ussd_command->data, ussd_command->len); } static gchar * -modem_3gpp_ussd_decode (MMIfaceModem3gppUssd *self, - const gchar *reply, - GError **error) +modem_3gpp_ussd_decode (MMIfaceModem3gppUssd *self, + const gchar *reply, + GError **error) { - MMBroadbandModem *broadband = MM_BROADBAND_MODEM (self); + MMBroadbandModem *broadband = MM_BROADBAND_MODEM (self); + guint8 *bin = NULL; + gsize bin_len = 0; + g_autoptr(GByteArray) barray = NULL; + + bin = (guint8 *) mm_utils_hexstr2bin (reply, -1, &bin_len, error); + if (!bin) { + g_prefix_error (error, "Couldn't convert HEX string to binary: "); + return NULL; + } + barray = g_byte_array_new_take (bin, bin_len); /* Decode from current charset (as per AT+CSCS, which is what most modems * (except for Huawei it seems) will ask for. */ - return mm_modem_charset_hex_to_utf8 (reply, broadband->priv->modem_current_charset); + return mm_modem_charset_bytearray_to_utf8 (barray, broadband->priv->modem_current_charset, FALSE, error); } /*****************************************************************************/ @@ -7060,28 +7105,31 @@ return g_task_propagate_boolean (G_TASK (res), error); } -static gboolean -cnmi_response_processor (MMBaseModem *self, - gpointer none, - const gchar *command, - const gchar *response, - gboolean last_command, - const GError *error, - GVariant **result, - GError **result_error) +static MMBaseModemAtResponseProcessorResult +cnmi_response_processor (MMBaseModem *self, + gpointer none, + const gchar *command, + const gchar *response, + gboolean last_command, + const GError *error, + GVariant **result, + GError **result_error) { + *result = NULL; + *result_error = NULL; + if (error) { /* If we get a not-supported error and we're not in the last command, we * won't set 'result_error', so we'll keep on the sequence */ - if (!g_error_matches (error, MM_MESSAGE_ERROR, MM_MESSAGE_ERROR_NOT_SUPPORTED) || - last_command) + if (!g_error_matches (error, MM_MESSAGE_ERROR, MM_MESSAGE_ERROR_NOT_SUPPORTED) || last_command) { *result_error = g_error_copy (error); + return MM_BASE_MODEM_AT_RESPONSE_PROCESSOR_RESULT_FAILURE; + } - return FALSE; + return MM_BASE_MODEM_AT_RESPONSE_PROCESSOR_RESULT_CONTINUE; } - *result = NULL; - return TRUE; + return MM_BASE_MODEM_AT_RESPONSE_PROCESSOR_RESULT_SUCCESS; } static const MMBaseModemAtCommand cnmi_sequence[] = { @@ -7273,11 +7321,17 @@ ctx = g_task_get_task_data (task); while (g_match_info_matches (match_info)) { - MMSmsPart *part; - guint matches, idx; - gchar *number, *timestamp, *text, *ucs2_text, *stat; - gsize ucs2_len = 0; - GByteArray *raw; + MMSmsPart *part; + guint matches; + guint idx; + g_autofree gchar *number_enc = NULL; + g_autofree gchar *number = NULL; + g_autofree gchar *timestamp = NULL; + g_autofree gchar *text_enc = NULL; + g_autofree gchar *text = NULL; + g_autofree gchar *stat = NULL; + g_autoptr(GByteArray) raw = NULL; + g_autoptr(GError) inner_error = NULL; matches = g_match_info_get_match_count (match_info); if (matches != 7) { @@ -7298,39 +7352,44 @@ } /* Get and parse number */ - number = mm_get_string_unquoted_from_match_info (match_info, 3); - if (!number) { + number_enc = mm_get_string_unquoted_from_match_info (match_info, 3); + if (!number_enc) { mm_obj_dbg (self, "failed to get message sender number"); - g_free (stat); goto next; } - - number = mm_broadband_modem_take_and_convert_to_utf8 (MM_BROADBAND_MODEM (self), - number); + number = mm_modem_charset_str_to_utf8 (number_enc, -1, self->priv->modem_current_charset, FALSE, &inner_error); + if (!number) { + mm_obj_dbg (self, "failed to convert message sender number to UTF-8: %s", inner_error->message); + goto next; + } /* Get and parse timestamp (always expected in ASCII) */ timestamp = mm_get_string_unquoted_from_match_info (match_info, 5); + if (timestamp && !g_str_is_ascii (timestamp)) { + mm_obj_dbg (self, "failed to parse input timestamp as ASCII"); + goto next; + } /* Get and parse text */ - text = mm_broadband_modem_take_and_convert_to_utf8 (MM_BROADBAND_MODEM (self), - g_match_info_fetch (match_info, 6)); + text_enc = g_match_info_fetch (match_info, 6); + text = mm_modem_charset_str_to_utf8 (text_enc, -1, self->priv->modem_current_charset, FALSE, &inner_error); + if (!text) { + mm_obj_dbg (self, "failed to convert message text to UTF-8: %s", inner_error->message); + goto next; + } /* The raw SMS data can only be GSM, UCS2, or unknown (8-bit), so we * need to convert to UCS2 here. */ - ucs2_text = g_convert (text, -1, "UCS-2BE//TRANSLIT", "UTF-8", NULL, &ucs2_len, NULL); - g_assert (ucs2_text); - raw = g_byte_array_sized_new (ucs2_len); - g_byte_array_append (raw, (const guint8 *) ucs2_text, ucs2_len); - g_free (ucs2_text); + raw = mm_modem_charset_bytearray_from_utf8 (text, MM_MODEM_CHARSET_UCS2, FALSE, NULL); + g_assert (raw); /* all take() methods pass ownership of the value as well */ - part = mm_sms_part_new (idx, - sms_pdu_type_from_str (stat)); - mm_sms_part_take_number (part, number); - mm_sms_part_take_timestamp (part, timestamp); - mm_sms_part_take_text (part, text); - mm_sms_part_take_data (part, raw); + part = mm_sms_part_new (idx, sms_pdu_type_from_str (stat)); + mm_sms_part_take_number (part, g_steal_pointer (&number)); + mm_sms_part_take_timestamp (part, g_steal_pointer (×tamp)); + mm_sms_part_take_text (part, g_steal_pointer (&text)); + mm_sms_part_take_data (part, g_steal_pointer (&raw)); mm_sms_part_set_class (part, -1); mm_obj_dbg (self, "correctly parsed SMS list entry (%d)", idx); @@ -7338,7 +7397,6 @@ part, sms_state_from_str (stat), ctx->list_storage); - g_free (stat); next: g_match_info_next (match_info, NULL); } @@ -9987,6 +10045,7 @@ MMSignal **gsm, MMSignal **umts, MMSignal **lte, + MMSignal **nr5g, GError **error) { const gchar *response; @@ -9995,11 +10054,13 @@ if (!response || !mm_3gpp_cesq_response_to_signal_info (response, self, gsm, umts, lte, error)) return FALSE; - /* No 3GPP2 support */ if (cdma) *cdma = NULL; if (evdo) *evdo = NULL; + if (nr5g) + *nr5g = NULL; + return TRUE; } @@ -10421,9 +10482,13 @@ /*****************************************************************************/ typedef enum { + /* When user requests a disable operation, the process starts here */ DISABLING_STEP_FIRST, DISABLING_STEP_WAIT_FOR_FINAL_STATE, DISABLING_STEP_DISCONNECT_BEARERS, + /* When the disabling is launched due to a failed enable, the process + * starts here */ + DISABLING_STEP_FIRST_AFTER_ENABLE_FAILED, DISABLING_STEP_IFACE_SIMPLE, DISABLING_STEP_IFACE_FIRMWARE, DISABLING_STEP_IFACE_VOICE, @@ -10441,9 +10506,10 @@ typedef struct { MMBroadbandModem *self; - DisablingStep step; - MMModemState previous_state; - gboolean disabled; + gboolean state_updates; + DisablingStep step; + MMModemState previous_state; + gboolean disabled; } DisablingContext; static void disabling_step (GTask *task); @@ -10459,15 +10525,18 @@ g_error_free (error); } - if (ctx->disabled) - mm_iface_modem_update_state (MM_IFACE_MODEM (ctx->self), - MM_MODEM_STATE_DISABLED, - MM_MODEM_STATE_CHANGE_REASON_USER_REQUESTED); - else if (ctx->previous_state != MM_MODEM_STATE_DISABLED) { - /* Fallback to previous state */ - mm_iface_modem_update_state (MM_IFACE_MODEM (ctx->self), - ctx->previous_state, - MM_MODEM_STATE_CHANGE_REASON_UNKNOWN); + /* Only perform state updates if we're asked to do so */ + if (ctx->state_updates) { + if (ctx->disabled) + mm_iface_modem_update_state (MM_IFACE_MODEM (ctx->self), + MM_MODEM_STATE_DISABLED, + MM_MODEM_STATE_CHANGE_REASON_USER_REQUESTED); + else if (ctx->previous_state != MM_MODEM_STATE_DISABLED) { + /* Fallback to previous state */ + mm_iface_modem_update_state (MM_IFACE_MODEM (ctx->self), + ctx->previous_state, + MM_MODEM_STATE_CHANGE_REASON_UNKNOWN); + } } g_object_unref (ctx->self); @@ -10475,42 +10544,34 @@ } static gboolean -disable_finish (MMBaseModem *self, - GAsyncResult *res, - GError **error) +common_disable_finish (MMBroadbandModem *self, + GAsyncResult *res, + GError **error) { return g_task_propagate_boolean (G_TASK (res), error); } #undef INTERFACE_DISABLE_READY_FN -#define INTERFACE_DISABLE_READY_FN(NAME,TYPE,FATAL_ERRORS) \ - static void \ - NAME##_disable_ready (MMBroadbandModem *self, \ - GAsyncResult *result, \ - GTask *task) \ - { \ - DisablingContext *ctx; \ - GError *error = NULL; \ - \ - if (!mm_##NAME##_disable_finish (TYPE (self), \ - result, \ - &error)) { \ - if (FATAL_ERRORS) { \ - g_task_return_error (task, error); \ - g_object_unref (task); \ - return; \ - } \ - \ - mm_obj_dbg (self, "couldn't disable interface: %s", \ - error->message); \ - g_error_free (error); \ - return; \ - } \ - \ - /* Go on to next step */ \ - ctx = g_task_get_task_data (task); \ - ctx->step++; \ - disabling_step (task); \ +#define INTERFACE_DISABLE_READY_FN(NAME,TYPE,WARN_ERRORS) \ + static void \ + NAME##_disable_ready (MMBroadbandModem *self, \ + GAsyncResult *result, \ + GTask *task) \ + { \ + DisablingContext *ctx; \ + g_autoptr(GError) error = NULL; \ + \ + if (!mm_##NAME##_disable_finish (TYPE (self), result, &error)) { \ + if (WARN_ERRORS) \ + mm_obj_warn (self, "couldn't disable interface: %s", error->message); \ + else \ + mm_obj_dbg (self, "couldn't disable interface: %s", error->message); \ + } \ + \ + /* Go on to next step */ \ + ctx = g_task_get_task_data (task); \ + ctx->step++; \ + disabling_step (task); \ } INTERFACE_DISABLE_READY_FN (iface_modem, MM_IFACE_MODEM, TRUE) @@ -10588,6 +10649,7 @@ /* We're in a final state now, go on */ + g_assert (ctx->state_updates); mm_iface_modem_update_state (MM_IFACE_MODEM (ctx->self), MM_MODEM_STATE_DISABLING, MM_MODEM_STATE_CHANGE_REASON_USER_REQUESTED); @@ -10601,11 +10663,6 @@ { DisablingContext *ctx; - /* Don't run new steps if we're cancelled */ - if (g_task_return_error_if_cancelled (task)) { - g_object_unref (task); - return; - } ctx = g_task_get_task_data (task); switch (ctx->step) { @@ -10614,6 +10671,11 @@ /* fall through */ case DISABLING_STEP_WAIT_FOR_FINAL_STATE: + /* cancellability allowed at this point */ + if (g_task_return_error_if_cancelled (task)) { + g_object_unref (task); + return; + } mm_iface_modem_wait_for_final_state (MM_IFACE_MODEM (ctx->self), MM_MODEM_STATE_UNKNOWN, /* just any */ (GAsyncReadyCallback)disabling_wait_for_final_state_ready, @@ -10621,6 +10683,11 @@ return; case DISABLING_STEP_DISCONNECT_BEARERS: + /* cancellability allowed at this point */ + if (g_task_return_error_if_cancelled (task)) { + g_object_unref (task); + return; + } if (ctx->self->priv->modem_bearer_list) { mm_bearer_list_disconnect_all_bearers ( ctx->self->priv->modem_bearer_list, @@ -10631,6 +10698,14 @@ ctx->step++; /* fall through */ + case DISABLING_STEP_FIRST_AFTER_ENABLE_FAILED: + /* From this point onwards, the disabling sequence will NEVER fail, all + * errors will be treated as non-fatal, including a possible task + * cancellation. */ + g_task_set_check_cancellable (task, FALSE); + ctx->step++; + /* fall through */ + case DISABLING_STEP_IFACE_SIMPLE: ctx->step++; /* fall through */ @@ -10642,7 +10717,6 @@ case DISABLING_STEP_IFACE_VOICE: if (ctx->self->priv->modem_voice_dbus_skeleton) { mm_obj_dbg (ctx->self, "modem has voice capabilities, disabling the Voice interface..."); - /* Disabling the Modem Voice interface */ mm_iface_modem_voice_disable (MM_IFACE_MODEM_VOICE (ctx->self), (GAsyncReadyCallback)iface_modem_voice_disable_ready, task); @@ -10654,7 +10728,6 @@ case DISABLING_STEP_IFACE_SIGNAL: if (ctx->self->priv->modem_signal_dbus_skeleton) { mm_obj_dbg (ctx->self, "modem has extended signal reporting capabilities, disabling the Signal interface..."); - /* Disabling the Modem Signal interface */ mm_iface_modem_signal_disable (MM_IFACE_MODEM_SIGNAL (ctx->self), (GAsyncReadyCallback)iface_modem_signal_disable_ready, task); @@ -10666,7 +10739,6 @@ case DISABLING_STEP_IFACE_OMA: if (ctx->self->priv->modem_oma_dbus_skeleton) { mm_obj_dbg (ctx->self, "modem has OMA capabilities, disabling the OMA interface..."); - /* Disabling the Modem Oma interface */ mm_iface_modem_oma_disable (MM_IFACE_MODEM_OMA (ctx->self), (GAsyncReadyCallback)iface_modem_oma_disable_ready, task); @@ -10678,7 +10750,6 @@ case DISABLING_STEP_IFACE_TIME: if (ctx->self->priv->modem_time_dbus_skeleton) { mm_obj_dbg (ctx->self, "modem has time capabilities, disabling the Time interface..."); - /* Disabling the Modem Time interface */ mm_iface_modem_time_disable (MM_IFACE_MODEM_TIME (ctx->self), (GAsyncReadyCallback)iface_modem_time_disable_ready, task); @@ -10690,7 +10761,6 @@ case DISABLING_STEP_IFACE_MESSAGING: if (ctx->self->priv->modem_messaging_dbus_skeleton) { mm_obj_dbg (ctx->self, "modem has messaging capabilities, disabling the Messaging interface..."); - /* Disabling the Modem Messaging interface */ mm_iface_modem_messaging_disable (MM_IFACE_MODEM_MESSAGING (ctx->self), (GAsyncReadyCallback)iface_modem_messaging_disable_ready, task); @@ -10702,7 +10772,6 @@ case DISABLING_STEP_IFACE_LOCATION: if (ctx->self->priv->modem_location_dbus_skeleton) { mm_obj_dbg (ctx->self, "modem has location capabilities, disabling the Location interface..."); - /* Disabling the Modem Location interface */ mm_iface_modem_location_disable (MM_IFACE_MODEM_LOCATION (ctx->self), (GAsyncReadyCallback)iface_modem_location_disable_ready, task); @@ -10714,7 +10783,6 @@ case DISABLING_STEP_IFACE_CDMA: if (ctx->self->priv->modem_cdma_dbus_skeleton) { mm_obj_dbg (ctx->self, "modem has CDMA capabilities, disabling the Modem CDMA interface..."); - /* Disabling the Modem CDMA interface */ mm_iface_modem_cdma_disable (MM_IFACE_MODEM_CDMA (ctx->self), (GAsyncReadyCallback)iface_modem_cdma_disable_ready, task); @@ -10726,7 +10794,6 @@ case DISABLING_STEP_IFACE_3GPP_USSD: if (ctx->self->priv->modem_3gpp_ussd_dbus_skeleton) { mm_obj_dbg (ctx->self, "modem has 3GPP/USSD capabilities, disabling the Modem 3GPP/USSD interface..."); - /* Disabling the Modem 3GPP USSD interface */ mm_iface_modem_3gpp_ussd_disable (MM_IFACE_MODEM_3GPP_USSD (ctx->self), (GAsyncReadyCallback)iface_modem_3gpp_ussd_disable_ready, task); @@ -10738,7 +10805,6 @@ case DISABLING_STEP_IFACE_3GPP: if (ctx->self->priv->modem_3gpp_dbus_skeleton) { mm_obj_dbg (ctx->self, "modem has 3GPP capabilities, disabling the Modem 3GPP interface..."); - /* Disabling the Modem 3GPP interface */ mm_iface_modem_3gpp_disable (MM_IFACE_MODEM_3GPP (ctx->self), (GAsyncReadyCallback)iface_modem_3gpp_disable_ready, task); @@ -10751,7 +10817,7 @@ /* This skeleton may be NULL when mm_base_modem_disable() gets called at * the same time as modem object disposal. */ if (ctx->self->priv->modem_dbus_skeleton) { - /* Disabling the Modem interface */ + mm_obj_dbg (ctx->self, "disabling the Modem interface..."); mm_iface_modem_disable (MM_IFACE_MODEM (ctx->self), (GAsyncReadyCallback)iface_modem_disable_ready, task); @@ -10761,8 +10827,8 @@ /* fall through */ case DISABLING_STEP_LAST: - ctx->disabled = TRUE; /* All disabled without errors! */ + ctx->disabled = TRUE; g_task_return_boolean (task, TRUE); g_object_unref (task); return; @@ -10775,17 +10841,20 @@ } static void -disable (MMBaseModem *self, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) +common_disable (MMBroadbandModem *self, + gboolean state_updates, + DisablingStep first_step, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) { DisablingContext *ctx; - GTask *task; + GTask *task; ctx = g_new0 (DisablingContext, 1); ctx->self = g_object_ref (self); - ctx->step = DISABLING_STEP_FIRST; + ctx->state_updates = state_updates; + ctx->step = first_step; task = g_task_new (self, cancellable, callback, user_data); g_task_set_task_data (task, ctx, (GDestroyNotify)disabling_context_free); @@ -10793,6 +10862,55 @@ disabling_step (task); } +/* Implicit disabling after failed enable */ + +static gboolean +enable_failed_finish (MMBroadbandModem *self, + GAsyncResult *res, + GError **error) +{ + /* The implicit disabling should never ever fail */ + g_assert (common_disable_finish (self, res, NULL)); + return TRUE; +} + +static void +enable_failed (MMBroadbandModem *self, + GAsyncReadyCallback callback, + gpointer user_data) +{ + common_disable (self, + FALSE, /* don't perform state updates */ + DISABLING_STEP_FIRST_AFTER_ENABLE_FAILED, + NULL, /* no cancellable */ + callback, + user_data); +} + +/* User-requested disable operation */ + +static gboolean +disable_finish (MMBaseModem *self, + GAsyncResult *res, + GError **error) +{ + return common_disable_finish (MM_BROADBAND_MODEM (self), res, error); +} + +static void +disable (MMBaseModem *self, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + common_disable (MM_BROADBAND_MODEM (self), + TRUE, /* perform state updates */ + DISABLING_STEP_FIRST, + cancellable, + callback, + user_data); +} + /*****************************************************************************/ typedef enum { @@ -10816,9 +10934,10 @@ typedef struct { MMBroadbandModem *self; - EnablingStep step; - MMModemState previous_state; - gboolean enabled; + EnablingStep step; + MMModemState previous_state; + gboolean enabled; + GError *saved_error; } EnablingContext; static void enabling_step (GTask *task); @@ -10826,6 +10945,8 @@ static void enabling_context_free (EnablingContext *ctx) { + g_assert (!ctx->saved_error); + if (ctx->enabled) mm_iface_modem_update_state (MM_IFACE_MODEM (ctx->self), MM_MODEM_STATE_ENABLED, @@ -10849,34 +10970,51 @@ return g_task_propagate_boolean (G_TASK (res), error); } +static void +enable_failed_ready (MMBroadbandModem *self, + GAsyncResult *res, + GTask *task) +{ + EnablingContext *ctx; + + ctx = g_task_get_task_data (task); + + /* The disabling run after a failed enable will never fail */ + g_assert (enable_failed_finish (self, res, NULL)); + + g_assert (ctx->saved_error); + g_task_return_error (task, g_steal_pointer (&ctx->saved_error)); + g_object_unref (task); +} + #undef INTERFACE_ENABLE_READY_FN -#define INTERFACE_ENABLE_READY_FN(NAME,TYPE,FATAL_ERRORS) \ - static void \ - NAME##_enable_ready (MMBroadbandModem *self, \ - GAsyncResult *result, \ - GTask *task) \ - { \ - EnablingContext *ctx; \ - GError *error = NULL; \ - \ - if (!mm_##NAME##_enable_finish (TYPE (self), \ - result, \ - &error)) { \ - if (FATAL_ERRORS) { \ - g_task_return_error (task, error); \ - g_object_unref (task); \ - return; \ - } \ - \ - mm_obj_dbg (self, "couldn't enable interface: '%s'", \ - error->message); \ - g_error_free (error); \ - } \ - \ - /* Go on to next step */ \ - ctx = g_task_get_task_data (task); \ - ctx->step++; \ - enabling_step (task); \ +#define INTERFACE_ENABLE_READY_FN(NAME,TYPE,FATAL_ERRORS) \ + static void \ + NAME##_enable_ready (MMBroadbandModem *self, \ + GAsyncResult *result, \ + GTask *task) \ + { \ + EnablingContext *ctx; \ + g_autoptr(GError) error = NULL; \ + \ + ctx = g_task_get_task_data (task); \ + \ + if (!mm_##NAME##_enable_finish (TYPE (self), result, &error)) { \ + if (FATAL_ERRORS) { \ + mm_obj_warn (self, "couldn't enable interface: '%s'", error->message); \ + g_assert (!ctx->saved_error); \ + ctx->saved_error = g_steal_pointer (&error); \ + mm_obj_dbg (self, "running implicit disable after failed enable..."); \ + enable_failed (self, (GAsyncReadyCallback) enable_failed_ready, task); \ + return; \ + } \ + \ + mm_obj_dbg (self, "couldn't enable interface: '%s'", error->message); \ + } \ + \ + /* Go on to next step */ \ + ctx->step++; \ + enabling_step (task); \ } INTERFACE_ENABLE_READY_FN (iface_modem, MM_IFACE_MODEM, TRUE) @@ -10981,6 +11119,9 @@ /* fall through */ case ENABLING_STEP_IFACE_MODEM: + /* From now on, the failure to enable one of the mandatory interfaces + * will trigger the implicit disabling process */ + g_assert (ctx->self->priv->modem_dbus_skeleton != NULL); /* Enabling the Modem interface */ mm_iface_modem_enable (MM_IFACE_MODEM (ctx->self), @@ -11769,40 +11910,27 @@ /*****************************************************************************/ -gchar * -mm_broadband_modem_take_and_convert_to_utf8 (MMBroadbandModem *self, - gchar *str) -{ - /* should only be used AFTER current charset is set */ - if (self->priv->modem_current_charset == MM_MODEM_CHARSET_UNKNOWN) - return str; - - return mm_charset_take_and_convert_to_utf8 (str, - self->priv->modem_current_charset); -} - -gchar * -mm_broadband_modem_take_and_convert_to_current_charset (MMBroadbandModem *self, - gchar *str) -{ - /* should only be used AFTER current charset is set */ - if (self->priv->modem_current_charset == MM_MODEM_CHARSET_UNKNOWN) - return str; - - return mm_utf8_take_and_convert_to_charset (str, self->priv->modem_current_charset); -} - MMModemCharset mm_broadband_modem_get_current_charset (MMBroadbandModem *self) { return self->priv->modem_current_charset; } +/*****************************************************************************/ + gchar * -mm_broadband_modem_create_device_identifier (MMBroadbandModem *self, - const gchar *ati, - const gchar *ati1) -{ +mm_broadband_modem_create_device_identifier (MMBroadbandModem *self, + const gchar *ati, + const gchar *ati1, + GError **error) +{ + /* do nothing if device has gone already */ + if (!self->priv->modem_dbus_skeleton) { + g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, + "Modem interface skeleton unavailable"); + return NULL; + } + return (mm_create_device_identifier ( mm_base_modem_get_vendor_id (MM_BASE_MODEM (self)), mm_base_modem_get_product_id (MM_BASE_MODEM (self)), @@ -11819,22 +11947,7 @@ MM_GDBUS_MODEM (self->priv->modem_dbus_skeleton)))); } - /*****************************************************************************/ -static void -after_hotswap_event_disable_ready (MMBaseModem *self, - GAsyncResult *res, - gpointer user_data) -{ - GError *error = NULL; - - mm_base_modem_disable_finish (self, res, &error); - if (error) { - mm_obj_err (self, "failed to disable after hotswap event: %s", error->message); - g_error_free (error); - } else - mm_base_modem_set_valid (self, FALSE); -} void mm_broadband_modem_sim_hot_swap_detected (MMBroadbandModem *self) @@ -11845,10 +11958,7 @@ self->priv->sim_hot_swap_ports_ctx = NULL; } - mm_base_modem_set_reprobe (MM_BASE_MODEM (self), TRUE); - mm_base_modem_disable (MM_BASE_MODEM (self), - (GAsyncReadyCallback) after_hotswap_event_disable_ready, - NULL); + mm_base_modem_process_sim_event (MM_BASE_MODEM (self)); } /*****************************************************************************/ @@ -11930,6 +12040,10 @@ g_clear_object (&self->priv->modem_sim); self->priv->modem_sim = g_value_dup_object (value); break; + case PROP_MODEM_SIM_SLOTS: + g_clear_pointer (&self->priv->modem_sim_slots, g_ptr_array_unref); + self->priv->modem_sim_slots = g_value_dup_boxed (value); + break; case PROP_MODEM_BEARER_LIST: g_clear_object (&self->priv->modem_bearer_list); self->priv->modem_bearer_list = g_value_dup_object (value); @@ -12010,6 +12124,9 @@ case PROP_MODEM_CARRIER_CONFIG_MAPPING: self->priv->carrier_config_mapping = g_value_dup_string (value); break; + case PROP_MODEM_FIRMWARE_IGNORE_CARRIER: + self->priv->modem_firmware_ignore_carrier = g_value_get_boolean (value); + break; case PROP_FLOW_CONTROL: self->priv->flow_control = g_value_get_flags (value); break; @@ -12070,6 +12187,9 @@ case PROP_MODEM_SIM: g_value_set_object (value, self->priv->modem_sim); break; + case PROP_MODEM_SIM_SLOTS: + g_value_set_boxed (value, self->priv->modem_sim_slots); + break; case PROP_MODEM_BEARER_LIST: g_value_set_object (value, self->priv->modem_bearer_list); break; @@ -12145,6 +12265,9 @@ case PROP_MODEM_CARRIER_CONFIG_MAPPING: g_value_set_string (value, self->priv->carrier_config_mapping); break; + case PROP_MODEM_FIRMWARE_IGNORE_CARRIER: + g_value_set_boolean (value, self->priv->modem_firmware_ignore_carrier); + break; case PROP_FLOW_CONTROL: g_value_set_flags (value, self->priv->flow_control); break; @@ -12274,6 +12397,7 @@ g_clear_object (&self->priv->modem_3gpp_initial_eps_bearer); g_clear_object (&self->priv->modem_sim); + g_clear_pointer (&self->priv->modem_sim_slots, g_ptr_array_unref); g_clear_object (&self->priv->modem_bearer_list); g_clear_object (&self->priv->modem_messaging_sms_list); g_clear_object (&self->priv->modem_voice_call_list); @@ -12636,6 +12760,10 @@ MM_IFACE_MODEM_SIM); g_object_class_override_property (object_class, + PROP_MODEM_SIM_SLOTS, + MM_IFACE_MODEM_SIM_SLOTS); + + g_object_class_override_property (object_class, PROP_MODEM_BEARER_LIST, MM_IFACE_MODEM_BEARER_LIST); @@ -12735,6 +12863,10 @@ PROP_MODEM_CARRIER_CONFIG_MAPPING, MM_IFACE_MODEM_CARRIER_CONFIG_MAPPING); + g_object_class_override_property (object_class, + PROP_MODEM_FIRMWARE_IGNORE_CARRIER, + MM_IFACE_MODEM_FIRMWARE_IGNORE_CARRIER); + properties[PROP_FLOW_CONTROL] = g_param_spec_flags (MM_BROADBAND_MODEM_FLOW_CONTROL, "Flow control", diff -Nru modemmanager-1.14.10/src/mm-broadband-modem.h modemmanager-1.16.6/src/mm-broadband-modem.h --- modemmanager-1.14.10/src/mm-broadband-modem.h 2021-01-08 23:22:00.000000000 +0800 +++ modemmanager-1.16.6/src/mm-broadband-modem.h 2021-06-06 21:40:59.000000000 +0800 @@ -100,25 +100,14 @@ guint16 vendor_id, guint16 product_id); -/* Convert the given string, which comes in the charset currently set in the - * modem, to UTF-8. Given in the API so that subclasses can also use it directly. - */ -gchar *mm_broadband_modem_take_and_convert_to_utf8 (MMBroadbandModem *self, - gchar *str); - -/* Convert the given string, which comes in UTF-8, to the charset currently set - * in the modem. Given in the API so that subclasses can also use it directly. - */ -gchar *mm_broadband_modem_take_and_convert_to_current_charset (MMBroadbandModem *self, - gchar *str); - MMModemCharset mm_broadband_modem_get_current_charset (MMBroadbandModem *self); /* Create a unique device identifier string using the ATI and ATI1 replies and some * additional internal info */ -gchar *mm_broadband_modem_create_device_identifier (MMBroadbandModem *self, - const gchar *ati, - const gchar *ati1); +gchar *mm_broadband_modem_create_device_identifier (MMBroadbandModem *self, + const gchar *ati, + const gchar *ati1, + GError **error); /* Locking/unlocking SMS storages */ void mm_broadband_modem_lock_sms_storages (MMBroadbandModem *self, diff -Nru modemmanager-1.14.10/src/mm-charsets.c modemmanager-1.16.6/src/mm-charsets.c --- modemmanager-1.14.10/src/mm-charsets.c 2021-01-08 23:22:00.000000000 +0800 +++ modemmanager-1.16.6/src/mm-charsets.c 2021-06-06 21:40:59.000000000 +0800 @@ -11,6 +11,7 @@ * GNU General Public License for more details: * * Copyright (C) 2010 Red Hat, Inc. + * Copyright (C) 2020 Aleksander Morgado */ #include @@ -26,24 +27,28 @@ #include "mm-charsets.h" #include "mm-log.h" +/* Common fallback character when transliteration is enabled */ +static const gchar *translit_fallback = "?"; + +/******************************************************************************/ +/* Expected charset settings */ + typedef struct { + MMModemCharset charset; const gchar *gsm_name; const gchar *other_name; - const gchar *iconv_from_name; - const gchar *iconv_to_name; - MMModemCharset charset; -} CharsetEntry; + const gchar *iconv_name; +} CharsetSettings; -static const CharsetEntry charset_map[] = { - { "UTF-8", "UTF8", "UTF-8", "UTF-8//TRANSLIT", MM_MODEM_CHARSET_UTF8 }, - { "UCS2", NULL, "UCS-2BE", "UCS-2BE//TRANSLIT", MM_MODEM_CHARSET_UCS2 }, - { "IRA", "ASCII", "ASCII", "ASCII//TRANSLIT", MM_MODEM_CHARSET_IRA }, - { "GSM", NULL, NULL, NULL, MM_MODEM_CHARSET_GSM }, - { "8859-1", NULL, "ISO8859-1", "ISO8859-1//TRANSLIT", MM_MODEM_CHARSET_8859_1 }, - { "PCCP437", "CP437", "CP437", "CP437//TRANSLIT", MM_MODEM_CHARSET_PCCP437 }, - { "PCDN", "CP850", "CP850", "CP850//TRANSLIT", MM_MODEM_CHARSET_PCDN }, - { "HEX", NULL, NULL, NULL, MM_MODEM_CHARSET_HEX }, - { "UTF-16", "UTF16", "UTF-16BE", "UTF-16BE//TRANSLIT", MM_MODEM_CHARSET_UTF16 }, +static const CharsetSettings charset_settings[] = { + { MM_MODEM_CHARSET_UTF8, "UTF-8", "UTF8", "UTF-8" }, + { MM_MODEM_CHARSET_UCS2, "UCS2", NULL, "UCS-2BE" }, + { MM_MODEM_CHARSET_IRA, "IRA", "ASCII", "ASCII" }, + { MM_MODEM_CHARSET_GSM, "GSM", NULL, NULL }, + { MM_MODEM_CHARSET_8859_1, "8859-1", NULL, "ISO8859-1" }, + { MM_MODEM_CHARSET_PCCP437, "PCCP437", "CP437", "CP437" }, + { MM_MODEM_CHARSET_PCDN, "PCDN", "CP850", "CP850" }, + { MM_MODEM_CHARSET_UTF16, "UTF-16", "UTF16", "UTF-16BE" }, }; MMModemCharset @@ -53,24 +58,24 @@ g_return_val_if_fail (string != NULL, MM_MODEM_CHARSET_UNKNOWN); - for (i = 0; i < G_N_ELEMENTS (charset_map); i++) { - if (strcasestr (string, charset_map[i].gsm_name)) - return charset_map[i].charset; - if (charset_map[i].other_name && strcasestr (string, charset_map[i].other_name)) - return charset_map[i].charset; + for (i = 0; i < G_N_ELEMENTS (charset_settings); i++) { + if (strcasestr (string, charset_settings[i].gsm_name)) + return charset_settings[i].charset; + if (charset_settings[i].other_name && strcasestr (string, charset_settings[i].other_name)) + return charset_settings[i].charset; } return MM_MODEM_CHARSET_UNKNOWN; } -static const CharsetEntry * -lookup_charset_by_id (MMModemCharset charset) +static const CharsetSettings * +lookup_charset_settings (MMModemCharset charset) { guint i; g_return_val_if_fail (charset != MM_MODEM_CHARSET_UNKNOWN, NULL); - for (i = 0; i < G_N_ELEMENTS (charset_map); i++) { - if (charset_map[i].charset == charset) - return &charset_map[i]; + for (i = 0; i < G_N_ELEMENTS (charset_settings); i++) { + if (charset_settings[i].charset == charset) + return &charset_settings[i]; } g_warn_if_reached (); return NULL; @@ -79,146 +84,13 @@ const gchar * mm_modem_charset_to_string (MMModemCharset charset) { - const CharsetEntry *entry; - - entry = lookup_charset_by_id (charset); - return entry ? entry->gsm_name : NULL; -} - -static const gchar * -charset_iconv_to (MMModemCharset charset) -{ - const CharsetEntry *entry; - - entry = lookup_charset_by_id (charset); - return entry ? entry->iconv_to_name : NULL; -} - -static const gchar * -charset_iconv_from (MMModemCharset charset) -{ - const CharsetEntry *entry; + const CharsetSettings *settings; - entry = lookup_charset_by_id (charset); - return entry ? entry->iconv_from_name : NULL; -} - -gboolean -mm_modem_charset_byte_array_append (GByteArray *array, - const gchar *utf8, - gboolean quoted, - MMModemCharset charset, - GError **error) -{ - g_autofree gchar *converted = NULL; - const gchar *iconv_to; - gsize written = 0; - - g_return_val_if_fail (array != NULL, FALSE); - g_return_val_if_fail (utf8 != NULL, FALSE); - - iconv_to = charset_iconv_to (charset); - g_assert (iconv_to); - - converted = g_convert (utf8, -1, iconv_to, "UTF-8", NULL, &written, error); - if (!converted) { - g_prefix_error (error, "Failed to convert '%s' to %s character set", - utf8, iconv_to); - return FALSE; - } - - if (quoted) - g_byte_array_append (array, (const guint8 *) "\"", 1); - g_byte_array_append (array, (const guint8 *) converted, written); - if (quoted) - g_byte_array_append (array, (const guint8 *) "\"", 1); - - return TRUE; -} - -gchar * -mm_modem_charset_byte_array_to_utf8 (GByteArray *array, - MMModemCharset charset) -{ - const gchar *iconv_from; - g_autofree gchar *converted = NULL; - g_autoptr(GError) error = NULL; - - g_return_val_if_fail (array != NULL, NULL); - g_return_val_if_fail (charset != MM_MODEM_CHARSET_UNKNOWN, NULL); - - iconv_from = charset_iconv_from (charset); - g_return_val_if_fail (iconv_from != NULL, FALSE); - - converted = g_convert ((const gchar *)array->data, array->len, - "UTF-8//TRANSLIT", iconv_from, - NULL, NULL, &error); - if (!converted || error) - return NULL; - - return g_steal_pointer (&converted); -} - -gchar * -mm_modem_charset_hex_to_utf8 (const gchar *src, - MMModemCharset charset) -{ - const gchar *iconv_from; - g_autofree gchar *unconverted = NULL; - g_autofree gchar *converted = NULL; - g_autoptr(GError) error = NULL; - gsize unconverted_len = 0; - - g_return_val_if_fail (src != NULL, NULL); - g_return_val_if_fail (charset != MM_MODEM_CHARSET_UNKNOWN, NULL); - - iconv_from = charset_iconv_from (charset); - g_return_val_if_fail (iconv_from != NULL, FALSE); - - unconverted = mm_utils_hexstr2bin (src, &unconverted_len); - if (!unconverted) - return NULL; - - if (charset == MM_MODEM_CHARSET_UTF8 || charset == MM_MODEM_CHARSET_IRA) - return g_steal_pointer (&unconverted); - - converted = g_convert (unconverted, unconverted_len, - "UTF-8//TRANSLIT", iconv_from, - NULL, NULL, &error); - if (!converted || error) - return NULL; - - return g_steal_pointer (&converted); -} - -gchar * -mm_modem_charset_utf8_to_hex (const gchar *src, - MMModemCharset charset) -{ - const gchar *iconv_to; - g_autofree gchar *converted = NULL; - g_autoptr(GError) error = NULL; - gsize converted_len = 0; - - g_return_val_if_fail (src != NULL, NULL); - g_return_val_if_fail (charset != MM_MODEM_CHARSET_UNKNOWN, NULL); - - iconv_to = charset_iconv_from (charset); - g_return_val_if_fail (iconv_to != NULL, FALSE); - - if (charset == MM_MODEM_CHARSET_UTF8 || charset == MM_MODEM_CHARSET_IRA) - return g_strdup (src); - - converted = g_convert (src, strlen (src), - iconv_to, "UTF-8//TRANSLIT", - NULL, &converted_len, &error); - if (!converted || error) - return NULL; - - /* Get hex representation of the string */ - return mm_utils_bin2hexstr ((guint8 *)converted, converted_len); + settings = lookup_charset_settings (charset); + return settings ? settings->gsm_name : NULL; } +/******************************************************************************/ /* GSM 03.38 encoding conversion stuff */ #define GSM_DEF_ALPHABET_SIZE 128 @@ -337,6 +209,22 @@ return FALSE; } +static gboolean +translit_gsm_nul_byte (GByteArray *gsm) +{ + guint i; + guint n_replaces = 0; + + for (i = 0; i < gsm->len; i++) { + if (gsm->data[i] == 0x00) { + utf8_to_gsm_def_char (translit_fallback, strlen (translit_fallback), &gsm->data[i]); + n_replaces++; + } + } + + return (n_replaces > 0); +} + #define EONE(a, g) { {a, 0x00, 0x00}, 1, g } #define ETHR(a, b, c, g) { {a, b, c}, 3, g } @@ -393,12 +281,14 @@ return FALSE; } -guint8 * -mm_charset_gsm_unpacked_to_utf8 (const guint8 *gsm, - guint32 len) +static guint8 * +charset_gsm_unpacked_to_utf8 (const guint8 *gsm, + guint32 len, + gboolean translit, + GError **error) { - guint i; - GByteArray *utf8; + g_autoptr(GByteArray) utf8 = NULL; + guint i; g_return_val_if_fail (gsm != NULL, NULL); g_return_val_if_fail (len < 4096, NULL); @@ -444,26 +334,36 @@ if (ulen) g_byte_array_append (utf8, &uchars[0], ulen); - else - g_byte_array_append (utf8, (guint8 *) "?", 1); + else if (translit) + g_byte_array_append (utf8, (guint8 *) translit_fallback, strlen (translit_fallback)); + else { + g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_INVALID_ARGS, + "Invalid conversion from GSM7"); + return NULL; + } } /* Always make sure returned string is NUL terminated */ g_byte_array_append (utf8, (guint8 *) "\0", 1); - return g_byte_array_free (utf8, FALSE); + return g_byte_array_free (g_steal_pointer (&utf8), FALSE); } -guint8 * -mm_charset_utf8_to_unpacked_gsm (const gchar *utf8, - guint32 *out_len) -{ - GByteArray *gsm; - const gchar *c; - const gchar *next; - static const guint8 gesc = GSM_ESCAPE_CHAR; - - g_return_val_if_fail (utf8 != NULL, NULL); - g_return_val_if_fail (g_utf8_validate (utf8, -1, NULL), NULL); +static guint8 * +charset_utf8_to_unpacked_gsm (const gchar *utf8, + gboolean translit, + guint32 *out_len, + GError **error) +{ + g_autoptr(GByteArray) gsm = NULL; + const gchar *c; + const gchar *next; + static const guint8 gesc = GSM_ESCAPE_CHAR; + + if (!utf8 || !g_utf8_validate (utf8, -1, NULL)) { + g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_INVALID_ARGS, + "Couldn't convert UTF-8 to GSM: input UTF-8 validation failed"); + return NULL; + } /* worst case initial length */ gsm = g_byte_array_sized_new (g_utf8_strlen (utf8, -1) * 2 + 1); @@ -473,7 +373,7 @@ g_byte_array_append (gsm, (guint8 *) "\0", 1); if (out_len) *out_len = 0; - return g_byte_array_free (gsm, FALSE); + return g_byte_array_free (g_steal_pointer (&gsm), FALSE); } next = utf8; @@ -488,8 +388,16 @@ /* Add the escape char */ g_byte_array_append (gsm, &gesc, 1); g_byte_array_append (gsm, &gch, 1); - } else if (utf8_to_gsm_def_char (c, next - c, &gch)) + } else if (utf8_to_gsm_def_char (c, next - c, &gch)) { + g_byte_array_append (gsm, &gch, 1); + } else if (translit) { + /* add ? */ g_byte_array_append (gsm, &gch, 1); + } else { + g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_INVALID_ARGS, + "Couldn't convert UTF-8 char to GSM"); + return NULL; + } c = next; } @@ -500,9 +408,13 @@ /* Always make sure returned string is NUL terminated */ g_byte_array_append (gsm, (guint8 *) "\0", 1); - return g_byte_array_free (gsm, FALSE); + return g_byte_array_free (g_steal_pointer (&gsm), FALSE); } +/******************************************************************************/ +/* Checks to see whether conversion to a target charset may be done without + * any loss. */ + static gboolean gsm_is_subset (gunichar c, const gchar *utf8, @@ -632,13 +544,6 @@ { MM_MODEM_CHARSET_PCDN, pcdn_is_subset }, }; -/** - * mm_charset_can_covert_to: - * @utf8: UTF-8 valid string. - * @charset: the #MMModemCharset to validate the conversion from @utf8. - * - * Returns: %TRUE if the conversion is possible without errors, %FALSE otherwise. - */ gboolean mm_charset_can_convert_to (const gchar *utf8, MMModemCharset charset) @@ -682,6 +587,9 @@ return TRUE; } +/******************************************************************************/ +/* GSM-7 pack/unpack operations */ + guint8 * mm_charset_gsm_unpack (const guint8 *gsm, guint32 num_septets, @@ -754,217 +662,265 @@ return packed; } -/* We do all our best to get the given string, which is possibly given in the - * specified charset, to UTF8. It may happen that the given string is really - * the hex representation of the charset-encoded string, so we need to cope with - * that case. */ -gchar * -mm_charset_take_and_convert_to_utf8 (gchar *str, - MMModemCharset charset) -{ - gchar *utf8 = NULL; +/*****************************************************************************/ +/* Main conversion functions */ - if (!str) +static guint8 * +charset_iconv_from_utf8 (const gchar *utf8, + const CharsetSettings *settings, + gboolean translit, + guint *out_size, + GError **error) +{ + g_autoptr(GError) inner_error = NULL; + gsize bytes_written = 0; + g_autofree guint8 *encoded = NULL; + + encoded = (guint8 *) g_convert (utf8, -1, + settings->iconv_name, "UTF-8", + NULL, &bytes_written, &inner_error); + if (encoded) { + if (out_size) + *out_size = (guint) bytes_written; + return g_steal_pointer (&encoded); + } + + if (!translit) { + g_propagate_error (error, g_steal_pointer (&inner_error)); + g_prefix_error (error, "Couldn't convert from UTF-8 to %s: ", settings->gsm_name); return NULL; + } - switch (charset) { - case MM_MODEM_CHARSET_UNKNOWN: - g_warn_if_reached (); - utf8 = str; - break; - - case MM_MODEM_CHARSET_HEX: - /* We'll assume that the HEX string is really valid ASCII at the end */ - utf8 = str; - break; - - case MM_MODEM_CHARSET_GSM: - utf8 = (gchar *) mm_charset_gsm_unpacked_to_utf8 ((const guint8 *) str, strlen (str)); - g_free (str); - break; - - case MM_MODEM_CHARSET_8859_1: - case MM_MODEM_CHARSET_PCCP437: - case MM_MODEM_CHARSET_PCDN: { - const gchar *iconv_from; - GError *error = NULL; - - iconv_from = charset_iconv_from (charset); - utf8 = g_convert (str, strlen (str), - "UTF-8//TRANSLIT", iconv_from, - NULL, NULL, &error); - if (!utf8 || error) { - g_clear_error (&error); - utf8 = NULL; - } - - g_free (str); - break; - } - - case MM_MODEM_CHARSET_UCS2: - case MM_MODEM_CHARSET_UTF16: { - gsize len; - gboolean possibly_hex = TRUE; - gsize bread = 0, bwritten = 0; - - /* If the string comes in hex-UCS-2, len needs to be a multiple of 4 */ - len = strlen (str); - if ((len < 4) || ((len % 4) != 0)) - possibly_hex = FALSE; - else { - const gchar *p = str; + encoded = (guint8 *) g_convert_with_fallback (utf8, -1, + settings->iconv_name, "UTF-8", translit_fallback, + NULL, &bytes_written, error); + if (encoded) { + if (out_size) + *out_size = (guint) bytes_written; + return g_steal_pointer (&encoded); + } - /* All chars in the string must be hex */ - while (*p && possibly_hex) - possibly_hex = isxdigit (*p++); - } + g_prefix_error (error, "Couldn't convert from UTF-8 to %s with translit: ", settings->gsm_name); + return NULL; +} - /* If hex, then we expect hex-encoded UCS-2 */ - if (possibly_hex) { - utf8 = mm_modem_charset_hex_to_utf8 (str, charset); - if (utf8) { - g_free (str); - break; - } - } +GByteArray * +mm_modem_charset_bytearray_from_utf8 (const gchar *utf8, + MMModemCharset charset, + gboolean translit, + GError **error) +{ + const CharsetSettings *settings; + guint8 *encoded = NULL; + guint encoded_size = 0; + + settings = lookup_charset_settings (charset); + + if (charset == MM_MODEM_CHARSET_UNKNOWN) { + g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_INVALID_ARGS, + "Cannot convert from UTF-8: unknown target charset"); + return NULL; + } - /* If not hex, then it might be raw UCS-2 (very unlikely) or ASCII/UTF-8 - * (much more likely). Try to convert to UTF-8 and if that fails, use - * the partial conversion length to re-convert the part of the string - * that is UTF-8, if any. - */ - utf8 = g_convert (str, strlen (str), - "UTF-8//TRANSLIT", "UTF-8//TRANSLIT", - &bread, &bwritten, NULL); - - /* Valid conversion, or we didn't get enough valid UTF-8 */ - if (utf8 || (bwritten <= 2)) { - g_free (str); + switch (charset) { + case MM_MODEM_CHARSET_GSM: + encoded = charset_utf8_to_unpacked_gsm (utf8, translit, &encoded_size, error); break; - } + case MM_MODEM_CHARSET_IRA: + case MM_MODEM_CHARSET_8859_1: + case MM_MODEM_CHARSET_UTF8: + case MM_MODEM_CHARSET_UCS2: + case MM_MODEM_CHARSET_PCCP437: + case MM_MODEM_CHARSET_PCDN: + case MM_MODEM_CHARSET_UTF16: + encoded = charset_iconv_from_utf8 (utf8, settings, translit, &encoded_size, error); + break; + case MM_MODEM_CHARSET_UNKNOWN: + default: + g_assert_not_reached (); + } - /* Last try; chop off the original string at the conversion failure - * location and get what we can. - */ - str[bread] = '\0'; - utf8 = g_convert (str, strlen (str), - "UTF-8//TRANSLIT", "UTF-8//TRANSLIT", - NULL, NULL, NULL); - g_free (str); - break; + return g_byte_array_new_take (encoded, encoded_size); +} + +gchar * +mm_modem_charset_str_from_utf8 (const gchar *utf8, + MMModemCharset charset, + gboolean translit, + GError **error) +{ + g_autoptr(GByteArray) bytearray = NULL; + + if (charset == MM_MODEM_CHARSET_UNKNOWN) { + g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_INVALID_ARGS, + "Cannot convert from UTF-8: unknown target charset"); + return NULL; } - /* If the given charset is ASCII or UTF8, we really expect the final string - * already here */ - case MM_MODEM_CHARSET_IRA: - case MM_MODEM_CHARSET_UTF8: - utf8 = str; - break; + bytearray = mm_modem_charset_bytearray_from_utf8 (utf8, charset, translit, error); + if (!bytearray) + return NULL; - default: - g_assert_not_reached (); + switch (charset) { + case MM_MODEM_CHARSET_GSM: + /* Note: strings encoded in unpacked GSM-7 can be used as plain + * strings as long as the string doesn't contain character '@', which + * is the one encoded as 0x00. At this point, we perform transliteration + * of the NUL bytes in the GSM-7 bytearray, and we fail the operation + * if one or more replacements were done and transliteration wasn't + * requested */ + if (translit_gsm_nul_byte (bytearray) && !translit) { + g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_INVALID_ARGS, + "Cannot convert to GSM-7 string: transliteration required for embedded '@'"); + return NULL; + } + /* fall through */ + case MM_MODEM_CHARSET_IRA: + case MM_MODEM_CHARSET_8859_1: + case MM_MODEM_CHARSET_UTF8: + case MM_MODEM_CHARSET_PCCP437: + case MM_MODEM_CHARSET_PCDN: + return (gchar *) g_byte_array_free (g_steal_pointer (&bytearray), FALSE); + case MM_MODEM_CHARSET_UCS2: + case MM_MODEM_CHARSET_UTF16: + return mm_utils_bin2hexstr (bytearray->data, bytearray->len); + default: + case MM_MODEM_CHARSET_UNKNOWN: + g_assert_not_reached (); } +} - /* Validate UTF-8 always before returning. This result will be exposed in DBus - * very likely... */ - if (utf8 && !g_utf8_validate (utf8, -1, NULL)) { - /* Better return NULL than an invalid UTF-8 string */ - g_free (utf8); - utf8 = NULL; +static gchar * +charset_iconv_to_utf8 (const guint8 *data, + guint32 len, + const CharsetSettings *settings, + gboolean translit, + GError **error) +{ + g_autoptr(GError) inner_error = NULL; + g_autofree gchar *utf8 = NULL; + + utf8 = g_convert ((const gchar *) data, len, + "UTF-8", + settings->iconv_name, + NULL, NULL, &inner_error); + if (utf8) + return g_steal_pointer (&utf8); + + if (!translit) { + g_propagate_error (error, g_steal_pointer (&inner_error)); + g_prefix_error (error, "Couldn't convert from %s to UTF-8: ", settings->gsm_name); + return NULL; } - return utf8; + utf8 = g_convert_with_fallback ((const gchar *) data, len, + "UTF-8", settings->iconv_name, translit_fallback, + NULL, NULL, error); + if (utf8) + return g_steal_pointer (&utf8); + + g_prefix_error (error, "Couldn't convert from %s to UTF-8 with translit: ", settings->gsm_name); + return NULL; } -/* We do all our best to convert the given string, which comes in UTF-8, to the - * specified charset. It may be that the output string needs to be the hex - * representation of the charset-encoded string, so we need to cope with that - * case. */ gchar * -mm_utf8_take_and_convert_to_charset (gchar *str, - MMModemCharset charset) +mm_modem_charset_bytearray_to_utf8 (GByteArray *bytearray, + MMModemCharset charset, + gboolean translit, + GError **error) { - gchar *encoded = NULL; + const CharsetSettings *settings; + g_autofree gchar *utf8 = NULL; - if (!str) + if (charset == MM_MODEM_CHARSET_UNKNOWN) { + g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_INVALID_ARGS, + "Cannot convert from UTF-8: unknown target charset"); return NULL; + } + + settings = lookup_charset_settings (charset); - /* Validate UTF-8 always before converting */ - if (!g_utf8_validate (str, -1, NULL)) { - /* Better return NULL than an invalid encoded string */ - g_free (str); + switch (charset) { + case MM_MODEM_CHARSET_GSM: + utf8 = (gchar *) charset_gsm_unpacked_to_utf8 (bytearray->data, + bytearray->len, + translit, + error); + break; + case MM_MODEM_CHARSET_IRA: + case MM_MODEM_CHARSET_UTF8: + case MM_MODEM_CHARSET_8859_1: + case MM_MODEM_CHARSET_PCCP437: + case MM_MODEM_CHARSET_PCDN: + case MM_MODEM_CHARSET_UCS2: + case MM_MODEM_CHARSET_UTF16: + utf8 = charset_iconv_to_utf8 (bytearray->data, + bytearray->len, + settings, + translit, + error); + break; + case MM_MODEM_CHARSET_UNKNOWN: + default: + g_assert_not_reached (); + } + + if (utf8 && g_utf8_validate (utf8, -1, NULL)) + return g_steal_pointer (&utf8); + + g_prefix_error (error, "Invalid conversion from %s to UTF-8: ", settings->gsm_name); + return NULL; +} + +gchar * +mm_modem_charset_str_to_utf8 (const gchar *str, + gssize len, + MMModemCharset charset, + gboolean translit, + GError **error) +{ + g_autoptr(GByteArray) bytearray = NULL; + + if (charset == MM_MODEM_CHARSET_UNKNOWN) { + g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_INVALID_ARGS, + "Cannot convert from UTF-8: unknown target charset"); return NULL; } + /* Note: if the input string is GSM-7 encoded and it contains the '@' + * character, using -1 to indicate string length won't work properly, + * as '@' is encoded as 0x00. Whenever possible, if using GSM-7, + * give a proper len value or otherwise use the bytearray_to_utf8() + * method instead. */ + if (len < 0) + len = strlen (str); + switch (charset) { - case MM_MODEM_CHARSET_UNKNOWN: - g_warn_if_reached (); - encoded = str; - break; - - case MM_MODEM_CHARSET_HEX: - encoded = str; - break; - - case MM_MODEM_CHARSET_GSM: - encoded = (gchar *) mm_charset_utf8_to_unpacked_gsm (str, NULL); - g_free (str); - break; - - case MM_MODEM_CHARSET_8859_1: - case MM_MODEM_CHARSET_PCCP437: - case MM_MODEM_CHARSET_PCDN: { - const gchar *iconv_to; - GError *error = NULL; - - iconv_to = charset_iconv_from (charset); - encoded = g_convert (str, strlen (str), - iconv_to, "UTF-8", - NULL, NULL, &error); - if (!encoded || error) { - g_clear_error (&error); - encoded = NULL; - } - - g_free (str); - break; - } - - case MM_MODEM_CHARSET_UCS2: - case MM_MODEM_CHARSET_UTF16: { - const gchar *iconv_to; - gsize encoded_len = 0; - GError *error = NULL; - gchar *hex; - - iconv_to = charset_iconv_from (charset); - encoded = g_convert (str, strlen (str), - iconv_to, "UTF-8", - NULL, &encoded_len, &error); - if (!encoded || error) { - g_clear_error (&error); - encoded = NULL; - } - - /* Get hex representation of the string */ - hex = mm_utils_bin2hexstr ((guint8 *)encoded, encoded_len); - g_free (encoded); - encoded = hex; - g_free (str); - break; - } - - /* If the given charset is ASCII or UTF8, we really expect the final string - * already here. */ - case MM_MODEM_CHARSET_IRA: - case MM_MODEM_CHARSET_UTF8: - encoded = str; - break; + case MM_MODEM_CHARSET_GSM: + case MM_MODEM_CHARSET_IRA: + case MM_MODEM_CHARSET_8859_1: + case MM_MODEM_CHARSET_UTF8: + case MM_MODEM_CHARSET_PCCP437: + case MM_MODEM_CHARSET_PCDN: + bytearray = g_byte_array_sized_new (len); + g_byte_array_append (bytearray, (const guint8 *)str, len); + break; + case MM_MODEM_CHARSET_UCS2: + case MM_MODEM_CHARSET_UTF16: { + guint8 *bin = NULL; + gsize bin_len; + + bin = (guint8 *) mm_utils_hexstr2bin (str, len, &bin_len, error); + if (!bin) + return NULL; - default: - g_assert_not_reached (); + bytearray = g_byte_array_new_take (bin, bin_len); + break; + } + case MM_MODEM_CHARSET_UNKNOWN: + default: + g_assert_not_reached (); } - return encoded; + return mm_modem_charset_bytearray_to_utf8 (bytearray, charset, translit, error); } diff -Nru modemmanager-1.14.10/src/mm-charsets.h modemmanager-1.16.6/src/mm-charsets.h --- modemmanager-1.14.10/src/mm-charsets.h 2021-01-08 23:22:00.000000000 +0800 +++ modemmanager-1.16.6/src/mm-charsets.h 2021-06-06 21:40:59.000000000 +0800 @@ -18,53 +18,24 @@ #include +/*****************************************************************************************/ + typedef enum { - MM_MODEM_CHARSET_UNKNOWN = 0x00000000, - MM_MODEM_CHARSET_GSM = 0x00000001, - MM_MODEM_CHARSET_IRA = 0x00000002, - MM_MODEM_CHARSET_8859_1 = 0x00000004, - MM_MODEM_CHARSET_UTF8 = 0x00000008, - MM_MODEM_CHARSET_UCS2 = 0x00000010, - MM_MODEM_CHARSET_PCCP437 = 0x00000020, - MM_MODEM_CHARSET_PCDN = 0x00000040, - MM_MODEM_CHARSET_HEX = 0x00000080, - MM_MODEM_CHARSET_UTF16 = 0x00000100, + MM_MODEM_CHARSET_UNKNOWN = 0, + MM_MODEM_CHARSET_GSM = 1 << 0, + MM_MODEM_CHARSET_IRA = 1 << 1, + MM_MODEM_CHARSET_8859_1 = 1 << 2, + MM_MODEM_CHARSET_UTF8 = 1 << 3, + MM_MODEM_CHARSET_UCS2 = 1 << 4, + MM_MODEM_CHARSET_PCCP437 = 1 << 5, + MM_MODEM_CHARSET_PCDN = 1 << 6, + MM_MODEM_CHARSET_UTF16 = 1 << 7, } MMModemCharset; const gchar *mm_modem_charset_to_string (MMModemCharset charset); MMModemCharset mm_modem_charset_from_string (const gchar *string); -/* Append the given string to the given byte array but re-encode it - * into the given charset first. The original string is assumed to be - * UTF-8 encoded. - */ -gboolean mm_modem_charset_byte_array_append (GByteArray *array, - const gchar *utf8, - gboolean quoted, - MMModemCharset charset, - GError **error); - -/* Take a string encoded in the given charset in binary form, and - * convert it to UTF-8. */ -gchar *mm_modem_charset_byte_array_to_utf8 (GByteArray *array, - MMModemCharset charset); - -/* Take a string in hex representation ("00430052" or "A4BE11" for example) - * and convert it from the given character set to UTF-8. - */ -gchar *mm_modem_charset_hex_to_utf8 (const gchar *src, - MMModemCharset charset); - -/* Take a string in UTF-8 and convert it to the given charset in hex - * representation. - */ -gchar *mm_modem_charset_utf8_to_hex (const gchar *src, - MMModemCharset charset); - -guint8 *mm_charset_utf8_to_unpacked_gsm (const gchar *utf8, - guint32 *out_len); -guint8 *mm_charset_gsm_unpacked_to_utf8 (const guint8 *gsm, - guint32 len); +/*****************************************************************************************/ /* Checks whether conversion to the given charset may be done without errors */ gboolean mm_charset_can_convert_to (const gchar *utf8, @@ -80,9 +51,61 @@ guint8 start_offset, /* in bits */ guint32 *out_packed_len); -gchar *mm_charset_take_and_convert_to_utf8 (gchar *str, - MMModemCharset charset); -gchar *mm_utf8_take_and_convert_to_charset (gchar *str, - MMModemCharset charset); +/*****************************************************************************************/ + +/* + * Convert the given UTF-8 encoded string into the given charset. + * + * The output is given as a bytearray, because the target charset may allow + * embedded NUL bytes (e.g. UTF-16). + * + * The output encoded string is not guaranteed to be NUL-terminated, instead + * the bytearray length itself gives the correct string length. + */ +GByteArray *mm_modem_charset_bytearray_from_utf8 (const gchar *utf8, + MMModemCharset charset, + gboolean translit, + GError **error); + +/* + * Convert the given UTF-8 encoded string into the given charset. + * + * The output is given as a C string, and those charsets that allow + * embedded NUL bytes (e.g. UTF-16) will be hex-encoded. + * + * The output encoded string is guaranteed to be NUL-terminated, and so no + * explicit output length is returned. + */ +gchar *mm_modem_charset_str_from_utf8 (const gchar *utf8, + MMModemCharset charset, + gboolean translit, + GError **error); + +/* + * Convert into an UTF-8 encoded string the input byte array, which is + * encoded in the given charset. + * + * The output string is guaranteed to be valid UTF-8 and NUL-terminated. + */ +gchar *mm_modem_charset_bytearray_to_utf8 (GByteArray *bytearray, + MMModemCharset charset, + gboolean translit, + GError **error); + +/* + * Convert into an UTF-8 encoded string the input string, which is + * encoded in the given charset. Those charsets that allow embedded NUL + * bytes (e.g. UTF-16) need to be hex-encoded. + * + * If the input string is NUL-terminated, len may be given as -1; otherwise + * len needs to specify the number of valid bytes in the input string. + * + * The output string is guaranteed to be valid UTF-8 and NUL-terminated. + */ +gchar *mm_modem_charset_str_to_utf8 (const gchar *str, + gssize len, + MMModemCharset charset, + gboolean translit, + GError **error); #endif /* MM_CHARSETS_H */ diff -Nru modemmanager-1.14.10/src/mm-context.c modemmanager-1.16.6/src/mm-context.c --- modemmanager-1.14.10/src/mm-context.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-context.c 2021-06-06 21:40:59.000000000 +0800 @@ -222,6 +222,12 @@ static gboolean test_session; static gboolean test_enable; static gchar *test_plugin_dir; +#if defined WITH_UDEV +static gboolean test_no_udev; +#endif +#if defined WITH_SYSTEMD_SUSPEND_RESUME +static gboolean test_no_suspend_resume; +#endif static const GOptionEntry test_entries[] = { { @@ -239,6 +245,20 @@ "Path to look for plugins", "[PATH]" }, +#if defined WITH_UDEV + { + "test-no-udev", 0, 0, G_OPTION_ARG_NONE, &test_no_udev, + "Run without udev support even if available", + NULL + }, +#endif +#if defined WITH_SYSTEMD_SUSPEND_RESUME + { + "test-no-suspend-resume", 0, 0, G_OPTION_ARG_NONE, &test_no_suspend_resume, + "Disable suspend/resume support at runtime even if available", + NULL + }, +#endif { NULL } }; @@ -274,13 +294,29 @@ return test_plugin_dir ? test_plugin_dir : PLUGINDIR; } +#if defined WITH_UDEV +gboolean +mm_context_get_test_no_udev (void) +{ + return test_no_udev; +} +#endif + +#if defined WITH_SYSTEMD_SUSPEND_RESUME +gboolean +mm_context_get_test_no_suspend_resume (void) +{ + return test_no_suspend_resume; +} +#endif + /*****************************************************************************/ static void print_version (void) { g_print ("ModemManager " MM_DIST_VERSION "\n" - "Copyright (C) 2008-2020 The ModemManager authors\n" + "Copyright (C) 2008-2021 The ModemManager authors\n" "License GPLv2+: GNU GPL version 2 or later \n" "This is free software: you are free to change and redistribute it.\n" "There is NO WARRANTY, to the extent permitted by law.\n" @@ -345,5 +381,8 @@ g_warning ("error: --initial-kernel-events must be used only if --no-auto-scan is also used"); exit (1); } + /* Force skipping autoscan if running test without udev */ + if (test_no_udev) + no_auto_scan = TRUE; #endif } diff -Nru modemmanager-1.14.10/src/mm-context.h modemmanager-1.16.6/src/mm-context.h --- modemmanager-1.14.10/src/mm-context.h 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-context.h 2021-06-06 21:40:59.000000000 +0800 @@ -43,8 +43,14 @@ gboolean mm_context_get_log_relative_timestamps (void); /* Testing support */ -gboolean mm_context_get_test_session (void); -gboolean mm_context_get_test_enable (void); -const gchar *mm_context_get_test_plugin_dir (void); +gboolean mm_context_get_test_session (void); +gboolean mm_context_get_test_enable (void); +const gchar *mm_context_get_test_plugin_dir (void); +#if defined WITH_UDEV +gboolean mm_context_get_test_no_udev (void); +#endif +#if defined WITH_SYSTEMD_SUSPEND_RESUME +gboolean mm_context_get_test_no_suspend_resume (void); +#endif #endif /* MM_CONTEXT_H */ diff -Nru modemmanager-1.14.10/src/mm-device.c modemmanager-1.16.6/src/mm-device.c --- modemmanager-1.14.10/src/mm-device.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-device.c 2021-06-06 21:40:59.000000000 +0800 @@ -97,32 +97,56 @@ /*****************************************************************************/ static MMPortProbe * -device_find_probe_with_device (MMDevice *self, - MMKernelDevice *kernel_port, - gboolean lookup_ignored) +probe_list_lookup_by_device (GList *port_probes, + MMKernelDevice *kernel_port) { GList *l; - for (l = self->priv->port_probes; l; l = g_list_next (l)) { + for (l = port_probes; l; l = g_list_next (l)) { MMPortProbe *probe = MM_PORT_PROBE (l->data); if (mm_kernel_device_cmp (mm_port_probe_peek_port (probe), kernel_port)) return probe; } + return NULL; +} - if (!lookup_ignored) - return NULL; - - for (l = self->priv->ignored_port_probes; l; l = g_list_next (l)) { - MMPortProbe *probe = MM_PORT_PROBE (l->data); +static MMPortProbe * +probe_list_lookup_by_name (GList *port_probes, + const gchar *subsystem, + const gchar *name) +{ + GList *l; - if (mm_kernel_device_cmp (mm_port_probe_peek_port (probe), kernel_port)) + for (l = port_probes; l; l = g_list_next (l)) { + MMPortProbe *probe = MM_PORT_PROBE (l->data); + MMKernelDevice *probe_device; + + probe_device = mm_port_probe_peek_port (probe); + if ((g_strcmp0 (subsystem, mm_kernel_device_get_subsystem (probe_device)) == 0) && + (g_strcmp0 (name, mm_kernel_device_get_name (probe_device)) == 0)) return probe; } - return NULL; } +static MMPortProbe * +device_find_probe_with_device (MMDevice *self, + MMKernelDevice *kernel_port, + gboolean lookup_ignored) +{ + MMPortProbe *probe; + + probe = probe_list_lookup_by_device (self->priv->port_probes, kernel_port); + if (probe) + return probe; + + if (!lookup_ignored) + return NULL; + + return probe_list_lookup_by_device (self->priv->ignored_port_probes, kernel_port); +} + gboolean mm_device_owns_port (MMDevice *self, MMKernelDevice *kernel_port) @@ -130,6 +154,28 @@ return !!device_find_probe_with_device (self, kernel_port, TRUE); } +static MMPortProbe * +device_find_probe_with_name (MMDevice *self, + const gchar *subsystem, + const gchar *name) +{ + MMPortProbe *probe; + + probe = probe_list_lookup_by_name (self->priv->port_probes, subsystem, name); + if (probe) + return probe; + + return probe_list_lookup_by_name (self->priv->ignored_port_probes, subsystem, name); +} + +gboolean +mm_device_owns_port_name (MMDevice *self, + const gchar *subsystem, + const gchar *name) +{ + return !!device_find_probe_with_name (self, subsystem, name); +} + static void add_port_driver (MMDevice *self, MMKernelDevice *kernel_port) @@ -190,12 +236,13 @@ } void -mm_device_release_port (MMDevice *self, - MMKernelDevice *kernel_port) +mm_device_release_port_name (MMDevice *self, + const gchar *subsystem, + const gchar *name) { MMPortProbe *probe; - probe = device_find_probe_with_device (self, kernel_port, TRUE); + probe = device_find_probe_with_name (self, subsystem, name); if (probe) { /* Found, remove from lists and destroy probe */ if (g_list_find (self->priv->port_probes, probe)) @@ -336,6 +383,9 @@ { GError *error = NULL; + self->priv->reprobe_id = 0; + + mm_obj_dbg (self, "Reprobing modem..."); if (!mm_device_create_modem (self, &error)) { mm_obj_warn (self, "could not recreate modem: %s", error->message); g_error_free (error); diff -Nru modemmanager-1.14.10/src/mm-device.h modemmanager-1.16.6/src/mm-device.h --- modemmanager-1.14.10/src/mm-device.h 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-device.h 2021-06-06 21:40:59.000000000 +0800 @@ -67,14 +67,19 @@ gboolean virtual, GDBusObjectManagerServer *object_manager); -void mm_device_grab_port (MMDevice *self, - MMKernelDevice *kernel_port); -void mm_device_release_port (MMDevice *self, - MMKernelDevice *kernel_port); -gboolean mm_device_owns_port (MMDevice *self, - MMKernelDevice *kernel_port); -void mm_device_ignore_port (MMDevice *self, - MMKernelDevice *kernel_port); +void mm_device_grab_port (MMDevice *self, + MMKernelDevice *kernel_port); +gboolean mm_device_owns_port (MMDevice *self, + MMKernelDevice *kernel_port); +void mm_device_ignore_port (MMDevice *self, + MMKernelDevice *kernel_port); + +gboolean mm_device_owns_port_name (MMDevice *self, + const gchar *subsystem, + const gchar *name); +void mm_device_release_port_name (MMDevice *self, + const gchar *subsystem, + const gchar *name); gboolean mm_device_create_modem (MMDevice *self, GError **error); diff -Nru modemmanager-1.14.10/src/mm-filter.c modemmanager-1.16.6/src/mm-filter.c --- modemmanager-1.14.10/src/mm-filter.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-filter.c 2021-06-06 21:40:59.000000000 +0800 @@ -193,10 +193,23 @@ } /* If this is a cdc-wdm device, we always allow it */ - if ((self->priv->enabled_rules & MM_FILTER_RULE_CDC_WDM) && - (g_strcmp0 (subsystem, "usb") == 0 || g_strcmp0 (subsystem, "usbmisc") == 0) && - (name && g_str_has_prefix (name, "cdc-wdm"))) { - mm_obj_dbg (self, "(%s/%s) port allowed: cdc-wdm device", subsystem, name); + if ((self->priv->enabled_rules & MM_FILTER_RULE_USBMISC) && + (g_strcmp0 (subsystem, "usbmisc") == 0)) { + mm_obj_dbg (self, "(%s/%s) port allowed: usbmisc device", subsystem, name); + return TRUE; + } + + /* If this is a rpmsg channel device, we always allow it */ + if ((self->priv->enabled_rules & MM_FILTER_RULE_RPMSG) && + (g_strcmp0 (subsystem, "rpmsg") == 0)) { + mm_obj_dbg (self, "(%s/%s) port allowed: rpmsg device", subsystem, name); + return TRUE; + } + + /* If this is a wwan port/device, we always allow it */ + if ((self->priv->enabled_rules & MM_FILTER_RULE_WWAN) && + (g_strcmp0 (subsystem, "wwan") == 0)) { + mm_obj_dbg (self, "(%s/%s) port allowed: wwan device", subsystem, name); return TRUE; } @@ -449,7 +462,9 @@ mm_obj_dbg (self, " plugin whitelist: %s", RULE_ENABLED_STR (MM_FILTER_RULE_PLUGIN_WHITELIST)); mm_obj_dbg (self, " virtual devices forbidden: %s", RULE_ENABLED_STR (MM_FILTER_RULE_VIRTUAL)); mm_obj_dbg (self, " net devices allowed: %s", RULE_ENABLED_STR (MM_FILTER_RULE_NET)); - mm_obj_dbg (self, " cdc-wdm devices allowed: %s", RULE_ENABLED_STR (MM_FILTER_RULE_CDC_WDM)); + mm_obj_dbg (self, " usbmisc devices allowed: %s", RULE_ENABLED_STR (MM_FILTER_RULE_USBMISC)); + mm_obj_dbg (self, " rpmsg devices allowed: %s", RULE_ENABLED_STR (MM_FILTER_RULE_RPMSG)); + mm_obj_dbg (self, " wwan devices allowed: %s", RULE_ENABLED_STR (MM_FILTER_RULE_WWAN)); if (self->priv->enabled_rules & MM_FILTER_RULE_TTY) { mm_obj_dbg (self, " tty devices:"); mm_obj_dbg (self, " blacklist applied: %s", RULE_ENABLED_STR (MM_FILTER_RULE_TTY_BLACKLIST)); diff -Nru modemmanager-1.14.10/src/mm-filter.h modemmanager-1.16.6/src/mm-filter.h --- modemmanager-1.14.10/src/mm-filter.h 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-filter.h 2021-06-06 21:40:59.000000000 +0800 @@ -52,16 +52,18 @@ MM_FILTER_RULE_PLUGIN_WHITELIST = 1 << 2, MM_FILTER_RULE_VIRTUAL = 1 << 3, MM_FILTER_RULE_NET = 1 << 4, - MM_FILTER_RULE_CDC_WDM = 1 << 5, - MM_FILTER_RULE_TTY = 1 << 6, - MM_FILTER_RULE_TTY_BLACKLIST = 1 << 7, - MM_FILTER_RULE_TTY_MANUAL_SCAN_ONLY = 1 << 8, - MM_FILTER_RULE_TTY_PLATFORM_DRIVER = 1 << 9, - MM_FILTER_RULE_TTY_DEFAULT_ALLOWED = 1 << 10, - MM_FILTER_RULE_TTY_DRIVER = 1 << 11, - MM_FILTER_RULE_TTY_ACM_INTERFACE = 1 << 12, - MM_FILTER_RULE_TTY_WITH_NET = 1 << 13, - MM_FILTER_RULE_TTY_DEFAULT_FORBIDDEN = 1 << 14, + MM_FILTER_RULE_USBMISC = 1 << 5, + MM_FILTER_RULE_RPMSG = 1 << 6, + MM_FILTER_RULE_TTY = 1 << 7, + MM_FILTER_RULE_TTY_BLACKLIST = 1 << 8, + MM_FILTER_RULE_TTY_MANUAL_SCAN_ONLY = 1 << 9, + MM_FILTER_RULE_TTY_PLATFORM_DRIVER = 1 << 10, + MM_FILTER_RULE_TTY_DEFAULT_ALLOWED = 1 << 11, + MM_FILTER_RULE_TTY_DRIVER = 1 << 12, + MM_FILTER_RULE_TTY_ACM_INTERFACE = 1 << 13, + MM_FILTER_RULE_TTY_WITH_NET = 1 << 14, + MM_FILTER_RULE_TTY_DEFAULT_FORBIDDEN = 1 << 15, + MM_FILTER_RULE_WWAN = 1 << 16, } MMFilterRule; #define MM_FILTER_RULE_ALL \ @@ -70,7 +72,8 @@ MM_FILTER_RULE_PLUGIN_WHITELIST | \ MM_FILTER_RULE_VIRTUAL | \ MM_FILTER_RULE_NET | \ - MM_FILTER_RULE_CDC_WDM | \ + MM_FILTER_RULE_USBMISC | \ + MM_FILTER_RULE_RPMSG | \ MM_FILTER_RULE_TTY | \ MM_FILTER_RULE_TTY_BLACKLIST | \ MM_FILTER_RULE_TTY_MANUAL_SCAN_ONLY | \ @@ -79,7 +82,8 @@ MM_FILTER_RULE_TTY_DRIVER | \ MM_FILTER_RULE_TTY_ACM_INTERFACE | \ MM_FILTER_RULE_TTY_WITH_NET | \ - MM_FILTER_RULE_TTY_DEFAULT_FORBIDDEN) + MM_FILTER_RULE_TTY_DEFAULT_FORBIDDEN | \ + MM_FILTER_RULE_WWAN) /* This is the legacy ModemManager policy that tries to automatically probe * device ports unless they're blacklisted in some way or another. */ @@ -88,12 +92,14 @@ MM_FILTER_RULE_EXPLICIT_BLACKLIST | \ MM_FILTER_RULE_VIRTUAL | \ MM_FILTER_RULE_NET | \ - MM_FILTER_RULE_CDC_WDM | \ + MM_FILTER_RULE_USBMISC | \ + MM_FILTER_RULE_RPMSG | \ MM_FILTER_RULE_TTY | \ MM_FILTER_RULE_TTY_BLACKLIST | \ MM_FILTER_RULE_TTY_MANUAL_SCAN_ONLY | \ MM_FILTER_RULE_TTY_PLATFORM_DRIVER | \ - MM_FILTER_RULE_TTY_DEFAULT_ALLOWED) + MM_FILTER_RULE_TTY_DEFAULT_ALLOWED | \ + MM_FILTER_RULE_WWAN) /* This is a stricter policy which will only automatically probe device ports * if they are allowed by any of the automatic whitelist rules. */ @@ -103,13 +109,15 @@ MM_FILTER_RULE_PLUGIN_WHITELIST | \ MM_FILTER_RULE_VIRTUAL | \ MM_FILTER_RULE_NET | \ - MM_FILTER_RULE_CDC_WDM | \ + MM_FILTER_RULE_USBMISC | \ + MM_FILTER_RULE_RPMSG | \ MM_FILTER_RULE_TTY | \ MM_FILTER_RULE_TTY_PLATFORM_DRIVER | \ MM_FILTER_RULE_TTY_DRIVER | \ MM_FILTER_RULE_TTY_ACM_INTERFACE | \ MM_FILTER_RULE_TTY_WITH_NET | \ - MM_FILTER_RULE_TTY_DEFAULT_FORBIDDEN) + MM_FILTER_RULE_TTY_DEFAULT_FORBIDDEN | \ + MM_FILTER_RULE_WWAN) /* This is equivalent to the strict policy, but also applying the device * blacklists explicitly */ @@ -119,7 +127,8 @@ MM_FILTER_RULE_PLUGIN_WHITELIST | \ MM_FILTER_RULE_VIRTUAL | \ MM_FILTER_RULE_NET | \ - MM_FILTER_RULE_CDC_WDM | \ + MM_FILTER_RULE_USBMISC | \ + MM_FILTER_RULE_RPMSG | \ MM_FILTER_RULE_TTY | \ MM_FILTER_RULE_TTY_BLACKLIST | \ MM_FILTER_RULE_TTY_MANUAL_SCAN_ONLY | \ @@ -127,7 +136,8 @@ MM_FILTER_RULE_TTY_DRIVER | \ MM_FILTER_RULE_TTY_ACM_INTERFACE | \ MM_FILTER_RULE_TTY_WITH_NET | \ - MM_FILTER_RULE_TTY_DEFAULT_FORBIDDEN) + MM_FILTER_RULE_TTY_DEFAULT_FORBIDDEN | \ + MM_FILTER_RULE_WWAN) /* This policy only allows using device ports explicitly whitelisted via * udev rules. i.e. ModemManager won't do any kind of automatic probing. */ diff -Nru modemmanager-1.14.10/src/mm-iface-modem-3gpp.c modemmanager-1.16.6/src/mm-iface-modem-3gpp.c --- modemmanager-1.14.10/src/mm-iface-modem-3gpp.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-iface-modem-3gpp.c 2021-06-06 21:40:59.000000000 +0800 @@ -30,6 +30,16 @@ #define SUBSYSTEM_3GPP "3gpp" +/* When comparing EPS bearer settings take into account that PASSWORD may not always + * be readable, and apply very loose matching for all fields. Also, some implementations + * may allow configuring roaming allowance in the initial EPS bearer, but that is also + * not common. */ +#define MM_BEARER_PROPERTIES_CMP_FLAGS_EPS \ + (MM_BEARER_PROPERTIES_CMP_FLAGS_LOOSE | \ + MM_BEARER_PROPERTIES_CMP_FLAGS_NO_PASSWORD | \ + MM_BEARER_PROPERTIES_CMP_FLAGS_NO_ALLOW_ROAMING | \ + MM_BEARER_PROPERTIES_CMP_FLAGS_NO_RM_PROTOCOL) + /*****************************************************************************/ /* Private data context */ @@ -973,6 +983,45 @@ } static void +log_initial_eps_bearer_settings (MMIfaceModem3gpp *self, + MMBearerProperties *properties) +{ + const gchar *apn; + MMBearerAllowedAuth allowed_auth; + const gchar *user; + const gchar *password; + MMBearerIpFamily ip_family; + + apn = mm_bearer_properties_get_apn (properties); + if (apn) + mm_obj_dbg (self, " APN: '%s'", apn); + + allowed_auth = mm_bearer_properties_get_allowed_auth (properties); + if (allowed_auth != MM_BEARER_ALLOWED_AUTH_UNKNOWN) { + g_autofree gchar *allowed_auth_str = NULL; + + allowed_auth_str = mm_bearer_allowed_auth_build_string_from_mask (allowed_auth); + mm_obj_dbg (self, " allowed auth: '%s'", allowed_auth_str); + } + + user = mm_bearer_properties_get_user (properties); + if (user) + mm_obj_dbg (self, " user: '%s'", user); + + password = mm_bearer_properties_get_password (properties); + if (password) + mm_obj_dbg (self, " password: '%s'", password); + + ip_family = mm_bearer_properties_get_ip_type (properties); + if (ip_family != MM_BEARER_IP_FAMILY_NONE) { + g_autofree gchar *ip_family_str = NULL; + + ip_family_str = mm_bearer_ip_family_build_string_from_mask (ip_family); + mm_obj_dbg (self, " ip family: '%s'", ip_family_str); + } +} + +static void after_set_load_initial_eps_bearer_settings_ready (MMIfaceModem3gpp *self, GAsyncResult *res, HandleSetInitialEpsBearerSettingsContext *ctx) @@ -987,7 +1036,12 @@ return; } - if (!mm_bearer_properties_cmp (new_config, ctx->config)) { + mm_obj_dbg (self, "Updated initial EPS bearer settings:"); + log_initial_eps_bearer_settings (self, new_config); + + if (!mm_bearer_properties_cmp (new_config, ctx->config, MM_BEARER_PROPERTIES_CMP_FLAGS_EPS)) { + mm_obj_dbg (self, "Requested initial EPS bearer settings:"); + log_initial_eps_bearer_settings (self, ctx->config); g_dbus_method_invocation_return_error_literal (ctx->invocation, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, "Initial EPS bearer settings were not updated"); } else { @@ -1064,15 +1118,11 @@ return; } - /* If the user doesn't specify explicit auth settings, assume NONE as default */ - if (mm_bearer_properties_get_allowed_auth (ctx->config) == MM_BEARER_ALLOWED_AUTH_UNKNOWN) - mm_bearer_properties_set_allowed_auth (ctx->config, MM_BEARER_ALLOWED_AUTH_NONE); - old_dictionary = mm_gdbus_modem3gpp_get_initial_eps_bearer_settings (ctx->skeleton); if (old_dictionary) old_config = mm_bearer_properties_new_from_dictionary (old_dictionary, NULL); - if (old_config && mm_bearer_properties_cmp (ctx->config, old_config)) { + if (old_config && mm_bearer_properties_cmp (ctx->config, old_config, MM_BEARER_PROPERTIES_CMP_FLAGS_EPS)) { mm_gdbus_modem3gpp_complete_set_initial_eps_bearer_settings (ctx->skeleton, ctx->invocation); handle_set_initial_eps_bearer_settings_context_free (ctx); } else { @@ -1712,7 +1762,10 @@ /* skip update? */ if ((!old_bearer && !properties) || - (old_bearer && properties && mm_bearer_properties_cmp (properties, mm_base_bearer_peek_config (MM_BASE_BEARER (old_bearer))))) + (old_bearer && properties && + mm_bearer_properties_cmp (properties, + mm_base_bearer_peek_config (MM_BASE_BEARER (old_bearer)), + MM_BEARER_PROPERTIES_CMP_FLAGS_EPS))) goto out; if (properties) { @@ -1739,6 +1792,41 @@ g_object_unref (skeleton); } +static void +reload_initial_eps_bearer_ready (MMIfaceModem3gpp *self, + GAsyncResult *res) +{ + g_autoptr(MMBearerProperties) properties = NULL; + g_autoptr(GError) error = NULL; + + properties = MM_IFACE_MODEM_3GPP_GET_INTERFACE (self)->load_initial_eps_bearer_finish (self, res, &error); + if (!properties) { + mm_obj_dbg (self, "couldn't load initial default bearer properties: %s", error->message); + return; + } + + mm_iface_modem_3gpp_update_initial_eps_bearer (self, properties); +} + +void +mm_iface_modem_3gpp_reload_initial_eps_bearer (MMIfaceModem3gpp *self) +{ + gboolean eps_supported = FALSE; + + g_object_get (self, + MM_IFACE_MODEM_3GPP_EPS_NETWORK_SUPPORTED, &eps_supported, + NULL); + + if (eps_supported && + MM_IFACE_MODEM_3GPP_GET_INTERFACE (self)->load_initial_eps_bearer && + MM_IFACE_MODEM_3GPP_GET_INTERFACE (self)->load_initial_eps_bearer_finish) { + MM_IFACE_MODEM_3GPP_GET_INTERFACE (self)->load_initial_eps_bearer ( + self, + (GAsyncReadyCallback)reload_initial_eps_bearer_ready, + NULL); + } +} + /*****************************************************************************/ typedef struct _DisablingContext DisablingContext; diff -Nru modemmanager-1.14.10/src/mm-iface-modem-3gpp.h modemmanager-1.16.6/src/mm-iface-modem-3gpp.h --- modemmanager-1.14.10/src/mm-iface-modem-3gpp.h 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-iface-modem-3gpp.h 2021-06-06 21:40:59.000000000 +0800 @@ -292,6 +292,7 @@ const GList *pco_list); void mm_iface_modem_3gpp_update_initial_eps_bearer (MMIfaceModem3gpp *self, MMBearerProperties *properties); +void mm_iface_modem_3gpp_reload_initial_eps_bearer (MMIfaceModem3gpp *self); /* Run all registration checks */ void mm_iface_modem_3gpp_run_registration_checks (MMIfaceModem3gpp *self, diff -Nru modemmanager-1.14.10/src/mm-iface-modem-firmware.c modemmanager-1.16.6/src/mm-iface-modem-firmware.c --- modemmanager-1.14.10/src/mm-iface-modem-firmware.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-iface-modem-firmware.c 2021-06-06 21:40:59.000000000 +0800 @@ -21,6 +21,13 @@ #include "mm-iface-modem-firmware.h" #include "mm-log-object.h" +#if defined WITH_QMI +# include "mm-broadband-modem-qmi.h" +#endif +#if defined WITH_MBIM +# include "mm-broadband-modem-mbim.h" +#endif + /*****************************************************************************/ void @@ -290,18 +297,23 @@ MMFirmwareUpdateSettings *update_settings, GError **error) { - const gchar *firmware_revision; - const gchar *carrier_revision; - gchar *combined; + const gchar *firmware_revision; + const gchar *carrier_revision = NULL; + g_autofree gchar *combined = NULL; + gboolean ignore_carrier = FALSE; firmware_revision = mm_iface_modem_get_revision (MM_IFACE_MODEM (self)); if (!firmware_revision) { - g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, - "Unknown revision"); + g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, "Unknown revision"); return FALSE; } - mm_iface_modem_get_carrier_config (MM_IFACE_MODEM (self), NULL, &carrier_revision); + g_object_get (self, + MM_IFACE_MODEM_FIRMWARE_IGNORE_CARRIER, &ignore_carrier, + NULL); + + if (!ignore_carrier) + mm_iface_modem_get_carrier_config (MM_IFACE_MODEM (self), NULL, &carrier_revision); if (!carrier_revision) { mm_firmware_update_settings_set_version (update_settings, firmware_revision); @@ -310,7 +322,6 @@ combined = g_strdup_printf ("%s - %s", firmware_revision, carrier_revision); mm_firmware_update_settings_set_version (update_settings, combined); - g_free (combined); return TRUE; } @@ -319,53 +330,75 @@ MMFirmwareUpdateSettings *update_settings, GError **error) { - guint16 vid; - guint16 pid; - guint16 rid; - GPtrArray *ids; - MMPort *primary = NULL; - const gchar *subsystem; - const gchar *aux; + static const gchar *supported_subsystems[] = { "USB", "PCI" }; + guint16 vid; + guint16 pid; + guint16 rid; + MMPort *primary = NULL; + const gchar *subsystem; + const gchar *carrier_config = NULL; + g_autoptr(GPtrArray) ids = NULL; + guint i; + gboolean ignore_carrier = FALSE; vid = mm_base_modem_get_vendor_id (self); pid = mm_base_modem_get_product_id (self); #if defined WITH_QMI - primary = MM_PORT (mm_base_modem_peek_port_qmi (self)); + if (MM_IS_BROADBAND_MODEM_QMI (self)) + primary = MM_PORT (mm_broadband_modem_qmi_peek_port_qmi (MM_BROADBAND_MODEM_QMI (self))); #endif #if defined WITH_MBIM - if (!primary) - primary = MM_PORT (mm_base_modem_peek_port_mbim (self)); + if (!primary && MM_IS_BROADBAND_MODEM_MBIM (self)) + primary = MM_PORT (mm_broadband_modem_mbim_peek_port_mbim (MM_BROADBAND_MODEM_MBIM (self))); #endif if (!primary) primary = MM_PORT (mm_base_modem_peek_port_primary (self)); g_assert (primary != NULL); rid = mm_kernel_device_get_physdev_revision (mm_port_peek_kernel_device (primary)); + subsystem = mm_kernel_device_get_physdev_subsystem (mm_port_peek_kernel_device (primary)); - if (g_strcmp0 (subsystem, "usb")) { + if (!subsystem) { + g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, + "Unknown device subsystem"); + return FALSE; + } + + for (i = 0; i < G_N_ELEMENTS (supported_subsystems); i++) { + if (g_ascii_strcasecmp (supported_subsystems[i], subsystem) == 0) + break; + } + if (i == G_N_ELEMENTS (supported_subsystems)) { g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, "Unsupported subsystem: %s", subsystem); return FALSE; } - mm_iface_modem_get_carrier_config (MM_IFACE_MODEM (self), &aux, NULL); + g_object_get (self, + MM_IFACE_MODEM_FIRMWARE_IGNORE_CARRIER, &ignore_carrier, + NULL); + + if (!ignore_carrier) + mm_iface_modem_get_carrier_config (MM_IFACE_MODEM (self), &carrier_config, NULL); ids = g_ptr_array_new_with_free_func (g_free); - if (aux) { - gchar *carrier; + if (carrier_config) { + g_autofree gchar *carrier = NULL; - carrier = g_ascii_strup (aux, -1); - g_ptr_array_add (ids, g_strdup_printf ("USB\\VID_%04X&PID_%04X&REV_%04X&CARRIER_%s", vid, pid, rid, carrier)); - g_free (carrier); - } - g_ptr_array_add (ids, g_strdup_printf ("USB\\VID_%04X&PID_%04X&REV_%04X", vid, pid, rid)); - g_ptr_array_add (ids, g_strdup_printf ("USB\\VID_%04X&PID_%04X", vid, pid)); - g_ptr_array_add (ids, g_strdup_printf ("USB\\VID_%04X", vid)); + carrier = g_ascii_strup (carrier_config, -1); + g_ptr_array_add (ids, g_strdup_printf ("%s\\VID_%04X&PID_%04X&REV_%04X&CARRIER_%s", + supported_subsystems[i], vid, pid, rid, carrier)); + } + g_ptr_array_add (ids, g_strdup_printf ("%s\\VID_%04X&PID_%04X&REV_%04X", + supported_subsystems[i], vid, pid, rid)); + g_ptr_array_add (ids, g_strdup_printf ("%s\\VID_%04X&PID_%04X", + supported_subsystems[i], vid, pid)); + g_ptr_array_add (ids, g_strdup_printf ("%s\\VID_%04X", + supported_subsystems[i], vid)); g_ptr_array_add (ids, NULL); mm_firmware_update_settings_set_device_ids (update_settings, (const gchar **)ids->pdata); - g_ptr_array_unref (ids); return TRUE; } @@ -539,6 +572,14 @@ MM_GDBUS_TYPE_MODEM_FIRMWARE_SKELETON, G_PARAM_READWRITE)); + g_object_interface_install_property + (g_iface, + g_param_spec_boolean (MM_IFACE_MODEM_FIRMWARE_IGNORE_CARRIER, + "Ignore carrier info in firmware details", + "Whether carrier info (version, name) should be ignored when showing the firmware details", + FALSE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + initialized = TRUE; } diff -Nru modemmanager-1.14.10/src/mm-iface-modem-firmware.h modemmanager-1.16.6/src/mm-iface-modem-firmware.h --- modemmanager-1.14.10/src/mm-iface-modem-firmware.h 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-iface-modem-firmware.h 2021-06-06 21:40:59.000000000 +0800 @@ -27,7 +27,8 @@ #define MM_IS_IFACE_MODEM_FIRMWARE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MM_TYPE_IFACE_MODEM_FIRMWARE)) #define MM_IFACE_MODEM_FIRMWARE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MM_TYPE_IFACE_MODEM_FIRMWARE, MMIfaceModemFirmware)) -#define MM_IFACE_MODEM_FIRMWARE_DBUS_SKELETON "iface-modem-firmware-dbus-skeleton" +#define MM_IFACE_MODEM_FIRMWARE_DBUS_SKELETON "iface-modem-firmware-dbus-skeleton" +#define MM_IFACE_MODEM_FIRMWARE_IGNORE_CARRIER "iface-modem-firmware-ignore-carrier" typedef struct _MMIfaceModemFirmware MMIfaceModemFirmware; diff -Nru modemmanager-1.14.10/src/mm-iface-modem-signal.c modemmanager-1.16.6/src/mm-iface-modem-signal.c --- modemmanager-1.14.10/src/mm-iface-modem-signal.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-iface-modem-signal.c 2021-06-06 21:40:59.000000000 +0800 @@ -55,7 +55,7 @@ static void clear_values (MMIfaceModemSignal *self) { - MmGdbusModemSignal *skeleton; + g_autoptr(MmGdbusModemSignalSkeleton) skeleton = NULL; g_object_get (self, MM_IFACE_MODEM_SIGNAL_DBUS_SKELETON, &skeleton, @@ -63,26 +63,32 @@ if (!skeleton) return; - mm_gdbus_modem_signal_set_cdma (skeleton, NULL); - mm_gdbus_modem_signal_set_evdo (skeleton, NULL); - mm_gdbus_modem_signal_set_gsm (skeleton, NULL); - mm_gdbus_modem_signal_set_umts (skeleton, NULL); - mm_gdbus_modem_signal_set_lte (skeleton, NULL); - g_object_unref (skeleton); + mm_gdbus_modem_signal_set_cdma (MM_GDBUS_MODEM_SIGNAL (skeleton), NULL); + mm_gdbus_modem_signal_set_evdo (MM_GDBUS_MODEM_SIGNAL (skeleton), NULL); + mm_gdbus_modem_signal_set_gsm (MM_GDBUS_MODEM_SIGNAL (skeleton), NULL); + mm_gdbus_modem_signal_set_umts (MM_GDBUS_MODEM_SIGNAL (skeleton), NULL); + mm_gdbus_modem_signal_set_lte (MM_GDBUS_MODEM_SIGNAL (skeleton), NULL); + mm_gdbus_modem_signal_set_nr5g (MM_GDBUS_MODEM_SIGNAL (skeleton), NULL); } static void load_values_ready (MMIfaceModemSignal *self, - GAsyncResult *res) + GAsyncResult *res) { - GVariant *dictionary; - GError *error = NULL; - MMSignal *cdma = NULL; - MMSignal *evdo = NULL; - MMSignal *gsm = NULL; - MMSignal *umts = NULL; - MMSignal *lte = NULL; - MmGdbusModemSignal *skeleton; + g_autoptr(GError) error = NULL; + g_autoptr(MMSignal) cdma = NULL; + g_autoptr(GVariant) dict_cdma = NULL; + g_autoptr(MMSignal) evdo = NULL; + g_autoptr(GVariant) dict_evdo = NULL; + g_autoptr(MMSignal) gsm = NULL; + g_autoptr(GVariant) dict_gsm = NULL; + g_autoptr(MMSignal) umts = NULL; + g_autoptr(GVariant) dict_umts = NULL; + g_autoptr(MMSignal) lte = NULL; + g_autoptr(GVariant) dict_lte = NULL; + g_autoptr(MMSignal) nr5g = NULL; + g_autoptr(GVariant) dict_nr5g = NULL; + g_autoptr(MmGdbusModemSignalSkeleton) skeleton = NULL; if (!MM_IFACE_MODEM_SIGNAL_GET_INTERFACE (self)->load_values_finish ( self, @@ -92,9 +98,9 @@ &gsm, &umts, <e, + &nr5g, &error)) { mm_obj_warn (self, "couldn't load extended signal information: %s", error->message); - g_error_free (error); clear_values (self); return; } @@ -107,50 +113,32 @@ return; } - if (cdma) { - dictionary = mm_signal_get_dictionary (cdma); - mm_gdbus_modem_signal_set_cdma (skeleton, dictionary); - g_variant_unref (dictionary); - g_object_unref (cdma); - } else - mm_gdbus_modem_signal_set_cdma (skeleton, NULL); - - if (evdo) { - dictionary = mm_signal_get_dictionary (evdo); - mm_gdbus_modem_signal_set_evdo (skeleton, dictionary); - g_variant_unref (dictionary); - g_object_unref (evdo); - } else - mm_gdbus_modem_signal_set_evdo (skeleton, NULL); - - if (gsm) { - dictionary = mm_signal_get_dictionary (gsm); - mm_gdbus_modem_signal_set_gsm (skeleton, dictionary); - g_variant_unref (dictionary); - g_object_unref (gsm); - } else - mm_gdbus_modem_signal_set_gsm (skeleton, NULL); - - if (umts) { - dictionary = mm_signal_get_dictionary (umts); - mm_gdbus_modem_signal_set_umts (skeleton, dictionary); - g_variant_unref (dictionary); - g_object_unref (umts); - } else - mm_gdbus_modem_signal_set_umts (skeleton, NULL); - - if (lte) { - dictionary = mm_signal_get_dictionary (lte); - mm_gdbus_modem_signal_set_lte (skeleton, dictionary); - g_variant_unref (dictionary); - g_object_unref (lte); - } else - mm_gdbus_modem_signal_set_lte (skeleton, NULL); + if (cdma) + dict_cdma = mm_signal_get_dictionary (cdma); + mm_gdbus_modem_signal_set_cdma (MM_GDBUS_MODEM_SIGNAL (skeleton), dict_cdma); + + if (evdo) + dict_evdo = mm_signal_get_dictionary (evdo); + mm_gdbus_modem_signal_set_evdo (MM_GDBUS_MODEM_SIGNAL (skeleton), dict_evdo); + + if (gsm) + dict_gsm = mm_signal_get_dictionary (gsm); + mm_gdbus_modem_signal_set_gsm (MM_GDBUS_MODEM_SIGNAL (skeleton), dict_gsm); + + if (umts) + dict_umts = mm_signal_get_dictionary (umts); + mm_gdbus_modem_signal_set_umts (MM_GDBUS_MODEM_SIGNAL (skeleton), dict_umts); + + if (lte) + dict_lte = mm_signal_get_dictionary (lte); + mm_gdbus_modem_signal_set_lte (MM_GDBUS_MODEM_SIGNAL (skeleton), dict_lte); + + if (nr5g) + dict_nr5g = mm_signal_get_dictionary (nr5g); + mm_gdbus_modem_signal_set_nr5g (MM_GDBUS_MODEM_SIGNAL (skeleton), dict_nr5g); /* Flush right away */ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (skeleton)); - - g_object_unref (skeleton); } static gboolean diff -Nru modemmanager-1.14.10/src/mm-iface-modem-signal.h modemmanager-1.16.6/src/mm-iface-modem-signal.h --- modemmanager-1.14.10/src/mm-iface-modem-signal.h 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-iface-modem-signal.h 2021-06-06 21:40:59.000000000 +0800 @@ -54,6 +54,7 @@ MMSignal **gsm, MMSignal **umts, MMSignal **lte, + MMSignal **nr5g, GError **error); }; diff -Nru modemmanager-1.14.10/src/mm-iface-modem-time.c modemmanager-1.16.6/src/mm-iface-modem-time.c --- modemmanager-1.14.10/src/mm-iface-modem-time.c 2020-09-28 16:25:21.000000000 +0800 +++ modemmanager-1.16.6/src/mm-iface-modem-time.c 2021-06-06 21:40:59.000000000 +0800 @@ -194,7 +194,7 @@ load_network_timezone_ready (MMIfaceModemTime *self, GAsyncResult *res) { - GError *error = NULL; + g_autoptr(GError) error = NULL; MMNetworkTimezone *tz; /* Finish the async operation */ @@ -203,7 +203,6 @@ NetworkTimezoneContext *ctx; mm_obj_dbg (self, "couldn't load network timezone: %s", error->message); - g_error_free (error); /* Note: may be NULL if the polling has been removed while processing the async operation */ ctx = (NetworkTimezoneContext *) g_object_get_qdata (G_OBJECT (self), network_timezone_context_quark); diff -Nru modemmanager-1.14.10/src/mm-iface-modem.c modemmanager-1.16.6/src/mm-iface-modem.c --- modemmanager-1.14.10/src/mm-iface-modem.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-iface-modem.c 2021-06-06 21:40:59.000000000 +0800 @@ -13,7 +13,6 @@ * Copyright (C) 2011 Google, Inc. */ - #include #define _LIBMM_INSIDE_MM #include @@ -26,8 +25,15 @@ #include "mm-base-modem-at.h" #include "mm-base-sim.h" #include "mm-bearer-list.h" +#include "mm-private-boxed-types.h" #include "mm-log-object.h" #include "mm-context.h" +#if defined WITH_QMI +# include "mm-broadband-modem-qmi.h" +#endif +#if defined WITH_MBIM +# include "mm-broadband-modem-mbim.h" +#endif #define SIGNAL_QUALITY_RECENT_TIMEOUT_SEC 60 @@ -47,6 +53,89 @@ /*****************************************************************************/ +gboolean +mm_iface_modem_check_for_sim_swap_finish (MMIfaceModem *self, + GAsyncResult *res, + GError **error) +{ + return g_task_propagate_boolean (G_TASK (res), error); +} + +static void +explicit_check_for_sim_swap_ready (MMIfaceModem *self, + GAsyncResult *res, + GTask *task) +{ + GError *error = NULL; + + if (!MM_IFACE_MODEM_GET_INTERFACE (self)->check_for_sim_swap_finish (self, res, &error)) { + mm_obj_warn (self, "SIM swap check failed: %s", error->message); + g_task_return_error (task, error); + } else { + mm_obj_dbg (self, "SIM swap check completed"); + g_task_return_boolean (task, TRUE); + } + g_object_unref (task); +} + +void +mm_iface_modem_check_for_sim_swap (MMIfaceModem *self, + guint slot_index, + const gchar *iccid, + GAsyncReadyCallback callback, + gpointer user_data) +{ + GTask *task; + + task = g_task_new (self, NULL, callback, user_data); + + /* Slot index 0 is used when slot is not known, assumingly on a modem with just one SIM slot */ + if (slot_index != 0) { + MmGdbusModem *skeleton; + guint primary_slot; + + g_object_get (self, + MM_IFACE_MODEM_DBUS_SKELETON, &skeleton, + NULL); + + if (!skeleton) { + g_task_return_new_error (task, + MM_CORE_ERROR, + MM_CORE_ERROR_FAILED, + "Couldn't get interface skeleton"); + g_object_unref (task); + return; + } + + primary_slot = mm_gdbus_modem_get_primary_sim_slot (MM_GDBUS_MODEM (skeleton)); + g_object_unref (skeleton); + + /* Check that it's really the primary slot whose iccid has changed */ + if (primary_slot && primary_slot != slot_index) { + mm_obj_dbg (self, "checking for SIM swap ignored: status changed in slot %u, but primary is %u", slot_index, primary_slot); + g_task_return_boolean (task, TRUE); + g_object_unref (task); + return; + } + } + + if (MM_IFACE_MODEM_GET_INTERFACE (self)->check_for_sim_swap && + MM_IFACE_MODEM_GET_INTERFACE (self)->check_for_sim_swap_finish) { + mm_obj_dbg (self, "start checking for SIM swap in slot %u", slot_index); + MM_IFACE_MODEM_GET_INTERFACE (self)->check_for_sim_swap ( + self, + iccid, + (GAsyncReadyCallback)explicit_check_for_sim_swap_ready, + task); + return; + } + + g_task_return_boolean (task, FALSE); + g_object_unref (task); +} + +/*****************************************************************************/ + void mm_iface_modem_bind_simple_status (MMIfaceModem *self, MMSimpleStatus *status) @@ -958,6 +1047,117 @@ /*****************************************************************************/ +typedef struct { + MmGdbusModem *skeleton; + GDBusMethodInvocation *invocation; + MMIfaceModem *self; + guint requested_sim_slot; +} HandleSetPrimarySimSlotContext; + +static void +handle_set_primary_sim_slot_context_free (HandleSetPrimarySimSlotContext *ctx) +{ + g_clear_object (&ctx->skeleton); + g_clear_object (&ctx->invocation); + g_clear_object (&ctx->self); + g_free (ctx); +} + +static void +set_primary_sim_slot_ready (MMIfaceModem *self, + GAsyncResult *res, + HandleSetPrimarySimSlotContext *ctx) +{ + g_autoptr(GError) error = NULL; + + if (!MM_IFACE_MODEM_GET_INTERFACE (self)->set_primary_sim_slot_finish (self, res, &error)) { + /* If the implementation returns EXISTS, we're already in the requested SIM slot, + * so we can safely return a success on the operation and skip the reprobing */ + if (!g_error_matches (error, MM_CORE_ERROR, MM_CORE_ERROR_EXISTS)) { + mm_obj_warn (self, "couldn't process primary SIM update request: %s", error->message); + g_dbus_method_invocation_take_error (ctx->invocation, g_steal_pointer (&error)); + handle_set_primary_sim_slot_context_free (ctx); + return; + } + mm_obj_dbg (self, "ignoring SIM update request: %s", error->message); + } else { + /* Notify about the SIM swap, which will disable and reprobe the device. + * There is no need to update the PrimarySimSlot property, as this value will be + * reloaded automatically during the reprobe. */ + mm_base_modem_process_sim_event (MM_BASE_MODEM (self)); + } + + mm_gdbus_modem_complete_set_primary_sim_slot (ctx->skeleton, ctx->invocation); + handle_set_primary_sim_slot_context_free (ctx); +} + +static void +handle_set_primary_sim_slot_auth_ready (MMBaseModem *self, + GAsyncResult *res, + HandleSetPrimarySimSlotContext *ctx) +{ + GError *error = NULL; + const gchar *const *sim_slot_paths; + + if (!mm_base_modem_authorize_finish (self, res, &error)) { + g_dbus_method_invocation_take_error (ctx->invocation, error); + handle_set_primary_sim_slot_context_free (ctx); + return; + } + + /* If SIM switching is not implemented, report an error */ + if (!MM_IFACE_MODEM_GET_INTERFACE (self)->set_primary_sim_slot || + !MM_IFACE_MODEM_GET_INTERFACE (self)->set_primary_sim_slot_finish) { + g_dbus_method_invocation_return_error (ctx->invocation, + MM_CORE_ERROR, + MM_CORE_ERROR_UNSUPPORTED, + "Cannot switch sim: " + "operation not supported"); + handle_set_primary_sim_slot_context_free (ctx); + return; + } + + /* Validate SIM slot number */ + sim_slot_paths = mm_gdbus_modem_get_sim_slots (ctx->skeleton); + if (ctx->requested_sim_slot > g_strv_length ((gchar **)sim_slot_paths)) { + g_dbus_method_invocation_return_error (ctx->invocation, + MM_CORE_ERROR, + MM_CORE_ERROR_INVALID_ARGS, + "Cannot switch sim: requested SIM slot number is out of bounds"); + handle_set_primary_sim_slot_context_free (ctx); + return; + } + + MM_IFACE_MODEM_GET_INTERFACE (self)->set_primary_sim_slot (MM_IFACE_MODEM (self), + ctx->requested_sim_slot, + (GAsyncReadyCallback)set_primary_sim_slot_ready, + ctx); +} + +static gboolean +handle_set_primary_sim_slot (MmGdbusModem *skeleton, + GDBusMethodInvocation *invocation, + guint sim_slot, + MMIfaceModem *self) +{ + HandleSetPrimarySimSlotContext *ctx; + + ctx = g_new0 (HandleSetPrimarySimSlotContext, 1); + ctx->skeleton = g_object_ref (skeleton); + ctx->invocation = g_object_ref (invocation); + ctx->self = g_object_ref (self); + ctx->requested_sim_slot = sim_slot; + + mm_base_modem_authorize (MM_BASE_MODEM (self), + invocation, + MM_AUTHORIZATION_DEVICE_CONTROL, + (GAsyncReadyCallback)handle_set_primary_sim_slot_auth_ready, + ctx); + return TRUE; +} + +/*****************************************************************************/ + void mm_iface_modem_update_access_technologies (MMIfaceModem *self, MMModemAccessTechnology new_access_tech, @@ -3122,6 +3322,8 @@ old_lock = mm_gdbus_modem_get_unlock_required (skeleton); mm_gdbus_modem_set_unlock_required (skeleton, lock); + if (lock == MM_MODEM_LOCK_UNKNOWN) + mm_gdbus_modem_set_unlock_retries (skeleton, 0); /* We don't care about SIM-PIN2/SIM-PUK2 since the device is * operational without it. */ @@ -3447,6 +3649,7 @@ case UPDATE_LOCK_INFO_CONTEXT_STEP_LAST: if (ctx->saved_error) { + set_lock_status (self, ctx->skeleton, MM_MODEM_LOCK_UNKNOWN); /* Return saved error */ g_task_return_error (task, ctx->saved_error); ctx->saved_error = NULL; @@ -3474,9 +3677,6 @@ GTask *task; ctx = g_slice_new0 (UpdateLockInfoContext); - g_object_get (self, - MM_IFACE_MODEM_DBUS_SKELETON, &ctx->skeleton, - NULL); /* If the given lock is known, we will avoid re-asking for it */ ctx->lock = known_lock; @@ -3484,255 +3684,250 @@ task = g_task_new (self, NULL, callback, user_data); g_task_set_task_data (task, ctx, (GDestroyNotify)update_lock_info_context_free); + g_object_get (self, + MM_IFACE_MODEM_DBUS_SKELETON, &ctx->skeleton, + NULL); + + if (!ctx->skeleton) { + g_task_return_new_error (task, + MM_CORE_ERROR, + MM_CORE_ERROR_FAILED, + "Couldn't get interface skeleton"); + g_object_unref (task); + return; + } + update_lock_info_context_step (task); } /*****************************************************************************/ /* Set power state sequence */ +typedef enum { + SET_POWER_STATE_STEP_FIRST, + SET_POWER_STATE_STEP_LOAD, + SET_POWER_STATE_STEP_CHECK, + SET_POWER_STATE_STEP_UPDATE, + SET_POWER_STATE_STEP_FCC_UNLOCK, + SET_POWER_STATE_STEP_AFTER_UPDATE, + SET_POWER_STATE_STEP_LAST, +} SetPowerStateStep; + typedef struct { - MmGdbusModem *skeleton; - MMModemPowerState power_state; - MMModemPowerState previous_cached_power_state; - MMModemPowerState previous_real_power_state; + SetPowerStateStep step; + MmGdbusModem *skeleton; + GError *saved_error; + gboolean fcc_unlock_attempted; + MMModemPowerState requested_power_state; + MMModemPowerState previous_cached_power_state; + MMModemPowerState previous_real_power_state; + + void (*requested_power_setup) (MMIfaceModem *self, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (*requested_power_setup_finish) (MMIfaceModem *self, + GAsyncResult *res, + GError **error); } SetPowerStateContext; static void set_power_state_context_free (SetPowerStateContext *ctx) { + g_assert (!ctx->saved_error); if (ctx->skeleton) g_object_unref (ctx->skeleton); g_slice_free (SetPowerStateContext, ctx); } gboolean -mm_iface_modem_set_power_state_finish (MMIfaceModem *self, - GAsyncResult *res, - GError **error) +mm_iface_modem_set_power_state_finish (MMIfaceModem *self, + GAsyncResult *res, + GError **error) { return g_task_propagate_boolean (G_TASK (res), error); } +static void set_power_state_step (GTask *task); + static void modem_after_power_up_ready (MMIfaceModem *self, GAsyncResult *res, - GTask *task) + GTask *task) { - GError *error = NULL; + SetPowerStateContext *ctx; - MM_IFACE_MODEM_GET_INTERFACE (self)->modem_after_power_up_finish (self, res, &error); - if (error) - g_task_return_error (task, error); - else - g_task_return_boolean (task, TRUE); - g_object_unref (task); + ctx = g_task_get_task_data (task); + g_assert (!ctx->saved_error); + MM_IFACE_MODEM_GET_INTERFACE (self)->modem_after_power_up_finish (self, res, &ctx->saved_error); + if (ctx->saved_error) + mm_obj_dbg (self, "failure running after power up step: %s", ctx->saved_error->message); + + ctx->step++; + set_power_state_step (task); } static void -modem_power_up_ready (MMIfaceModem *self, - GAsyncResult *res, - GTask *task) +fcc_unlock_ready (MMIfaceModem *self, + GAsyncResult *res, + GTask *task) { SetPowerStateContext *ctx; - GError *error = NULL; + g_autoptr(GError) error = NULL; ctx = g_task_get_task_data (task); + if (!MM_IFACE_MODEM_GET_INTERFACE (self)->fcc_unlock_finish (self, res, &error)) + mm_obj_dbg (self, "couldn't run FCC unlock: %s", error->message); - MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_up_finish (self, res, &error); - if (error) { - /* If the real and cached ones are different, set the real one */ - if (ctx->previous_cached_power_state != ctx->previous_real_power_state) - mm_gdbus_modem_set_power_state (ctx->skeleton, ctx->previous_real_power_state); - g_task_return_error (task, error); - g_object_unref (task); - return; - } - - mm_obj_dbg (self, "set in full-power mode..."); - mm_gdbus_modem_set_power_state (ctx->skeleton, ctx->power_state); - - /* If we have something to do just after power-up, do it */ - if (MM_IFACE_MODEM_GET_INTERFACE (self)->modem_after_power_up && - MM_IFACE_MODEM_GET_INTERFACE (self)->modem_after_power_up_finish) { - MM_IFACE_MODEM_GET_INTERFACE (self)->modem_after_power_up ( - self, - (GAsyncReadyCallback)modem_after_power_up_ready, - task); - return; - } - - /* Otherwise, we're done */ - g_task_return_boolean (task, TRUE); - g_object_unref (task); + /* always retry, even on reported error */ + ctx->step = SET_POWER_STATE_STEP_UPDATE; + set_power_state_step (task); } static void -modem_power_down_ready (MMIfaceModem *self, - GAsyncResult *res, - GTask *task) +requested_power_setup_ready (MMIfaceModem *self, + GAsyncResult *res, + GTask *task) { SetPowerStateContext *ctx; - GError *error = NULL; ctx = g_task_get_task_data (task); + g_assert (!ctx->saved_error); + if (!ctx->requested_power_setup_finish (self, res, &ctx->saved_error)) + mm_obj_dbg (self, "couldn't update power state: %s", ctx->saved_error->message); - MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_down_finish (self, res, &error); - if (error) { - /* If the real and cached ones are different, set the real one */ - if (ctx->previous_cached_power_state != ctx->previous_real_power_state) - mm_gdbus_modem_set_power_state (ctx->skeleton, ctx->previous_real_power_state); - g_task_return_error (task, error); - } else { - mm_obj_dbg (self, "set in low-power mode..."); - mm_gdbus_modem_set_power_state (ctx->skeleton, ctx->power_state); - g_task_return_boolean (task, TRUE); - } - - g_object_unref (task); + ctx->step++; + set_power_state_step (task); } static void -modem_power_off_ready (MMIfaceModem *self, - GAsyncResult *res, - GTask *task) +set_power_state_load_ready (MMIfaceModem *self, + GAsyncResult *res, + GTask *task) { SetPowerStateContext *ctx; - GError *error = NULL; + g_autoptr(GError) error = NULL; ctx = g_task_get_task_data (task); - MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_off_finish (self, res, &error); + ctx->previous_real_power_state = MM_IFACE_MODEM_GET_INTERFACE (self)->load_power_state_finish (self, res, &error); if (error) { - /* If the real and cached ones are different, set the real one */ - if (ctx->previous_cached_power_state != ctx->previous_real_power_state) - mm_gdbus_modem_set_power_state (ctx->skeleton, ctx->previous_real_power_state); - g_task_return_error (task, error); - } else { - mm_obj_info (self, "powered off... may no longer be accessible"); - mm_gdbus_modem_set_power_state (ctx->skeleton, ctx->power_state); - g_task_return_boolean (task, TRUE); + mm_obj_dbg (self, "couldn't reload current power state: %s", error->message); + /* Default to the cached one */ + ctx->previous_real_power_state = ctx->previous_cached_power_state; } - g_object_unref (task); + ctx->step++; + set_power_state_step (task); } static void -set_power_state (GTask *task) +set_power_state_step (GTask *task) { - MMIfaceModem *self; + MMIfaceModem *self; SetPowerStateContext *ctx; self = g_task_get_source_object (task); - ctx = g_task_get_task_data (task); + ctx = g_task_get_task_data (task); - /* Already done if we're in the desired power state */ - if (ctx->previous_real_power_state == ctx->power_state) { - mm_obj_dbg (self, "no need to change power state: already in '%s' power state", - mm_modem_power_state_get_string (ctx->power_state)); - /* If the real and cached ones are different, set the real one */ - if (ctx->previous_cached_power_state != ctx->previous_real_power_state) - mm_gdbus_modem_set_power_state (ctx->skeleton, ctx->previous_real_power_state); - g_task_return_boolean (task, TRUE); - g_object_unref (task); - return; - } + switch (ctx->step) { + case SET_POWER_STATE_STEP_FIRST: + ctx->step++; + /* fall-through */ - /* Fully powering off the modem? */ - if (ctx->power_state == MM_MODEM_POWER_STATE_OFF) { - /* Error if unsupported */ - if (!MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_off || - !MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_off_finish) { - g_task_return_new_error (task, - MM_CORE_ERROR, - MM_CORE_ERROR_UNSUPPORTED, - "Powering off is not supported by this modem"); - g_object_unref (task); + case SET_POWER_STATE_STEP_LOAD: + /* We cannot really rely on the power state value that we had cached before, + * as the real power status of the modem may also be changed by rfkill. So, + * before updating the current power state, re-check which is the real power + * state. */ + if (MM_IFACE_MODEM_GET_INTERFACE (self)->load_power_state && + MM_IFACE_MODEM_GET_INTERFACE (self)->load_power_state_finish) { + MM_IFACE_MODEM_GET_INTERFACE (self)->load_power_state (self, (GAsyncReadyCallback)set_power_state_load_ready, task); return; } + /* If there is no way to load power state, just keep on assuming the cached + * one is also the real one */ + ctx->previous_real_power_state = ctx->previous_cached_power_state; + ctx->step++; + /* fall-through */ - MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_off ( - MM_IFACE_MODEM (self), - (GAsyncReadyCallback)modem_power_off_ready, - task); - return; - } - - /* Going into low power mode? */ - if (ctx->power_state == MM_MODEM_POWER_STATE_LOW) { - /* Error if unsupported */ - if (!MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_down || - !MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_down_finish) { - g_task_return_new_error (task, - MM_CORE_ERROR, - MM_CORE_ERROR_UNSUPPORTED, - "Going into low-power mode is not supported by this modem"); - g_object_unref (task); + case SET_POWER_STATE_STEP_CHECK: + /* Already done if we're in the desired power state */ + if (ctx->previous_real_power_state == ctx->requested_power_state) { + mm_obj_dbg (self, "no need to change power state: already '%s'", + mm_modem_power_state_get_string (ctx->requested_power_state)); + ctx->step = SET_POWER_STATE_STEP_LAST; + set_power_state_step (task); return; } + ctx->step++; + /* fall-through */ - MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_down ( - MM_IFACE_MODEM (self), - (GAsyncReadyCallback)modem_power_down_ready, - task); - return; - } + case SET_POWER_STATE_STEP_UPDATE: + mm_obj_dbg (self, "updating power state: '%s'...", mm_modem_power_state_get_string (ctx->requested_power_state)); + ctx->requested_power_setup (self, (GAsyncReadyCallback)requested_power_setup_ready, task); + return; + + case SET_POWER_STATE_STEP_FCC_UNLOCK: + /* The FCC unlock operation and update retry should only be done + * if requested by the implementation with MM_CORE_ERROR_RETRY. */ + if ((ctx->requested_power_state == MM_MODEM_POWER_STATE_ON) && + ctx->saved_error && + g_error_matches (ctx->saved_error, MM_CORE_ERROR, MM_CORE_ERROR_RETRY) && + !ctx->fcc_unlock_attempted && + MM_IFACE_MODEM_GET_INTERFACE (self)->fcc_unlock && + MM_IFACE_MODEM_GET_INTERFACE (self)->fcc_unlock_finish) { + mm_obj_dbg (self, "attempting fcc unlock..."); + ctx->fcc_unlock_attempted = TRUE; + g_clear_error (&ctx->saved_error); + MM_IFACE_MODEM_GET_INTERFACE (self)->fcc_unlock (self, (GAsyncReadyCallback)fcc_unlock_ready, task); + return; + } + ctx->step++; + /* fall-through */ - /* Going out of low power mode? */ - if (ctx->power_state == MM_MODEM_POWER_STATE_ON) { - /* Error if unsupported */ - if (!MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_up || - !MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_up_finish) { - g_task_return_new_error (task, - MM_CORE_ERROR, - MM_CORE_ERROR_UNSUPPORTED, - "Going into full-power mode is not supported by this modem"); - g_object_unref (task); + case SET_POWER_STATE_STEP_AFTER_UPDATE: + if ((ctx->requested_power_state == MM_MODEM_POWER_STATE_ON) && + !ctx->saved_error && + MM_IFACE_MODEM_GET_INTERFACE (self)->modem_after_power_up && + MM_IFACE_MODEM_GET_INTERFACE (self)->modem_after_power_up_finish) { + mm_obj_dbg (self, "running after power up operation..."); + MM_IFACE_MODEM_GET_INTERFACE (self)->modem_after_power_up (self, (GAsyncReadyCallback)modem_after_power_up_ready, task); return; } + ctx->step++; + /* fall-through */ - MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_up ( - MM_IFACE_MODEM (self), - (GAsyncReadyCallback)modem_power_up_ready, - task); + case SET_POWER_STATE_STEP_LAST: + if (ctx->saved_error) { + /* If the real and cached ones are different, set the real one */ + if (ctx->previous_cached_power_state != ctx->previous_real_power_state) + mm_gdbus_modem_set_power_state (ctx->skeleton, ctx->previous_real_power_state); + g_task_return_error (task, g_steal_pointer (&ctx->saved_error)); + } else { + mm_obj_info (self, "power state updated: %s", mm_modem_power_state_get_string (ctx->requested_power_state)); + mm_gdbus_modem_set_power_state (ctx->skeleton, ctx->requested_power_state); + g_task_return_boolean (task, TRUE); + } + g_object_unref (task); return; - } - - g_assert_not_reached (); -} - -static void -set_power_state_load_ready (MMIfaceModem *self, - GAsyncResult *res, - GTask *task) -{ - SetPowerStateContext *ctx; - GError *error = NULL; - - ctx = g_task_get_task_data (task); - ctx->previous_real_power_state = MM_IFACE_MODEM_GET_INTERFACE (self)->load_power_state_finish (self, res, &error); - if (error) { - mm_obj_dbg (self, "couldn't reload current power state: %s", error->message); - g_error_free (error); - /* Default to the cached one */ - ctx->previous_real_power_state = ctx->previous_cached_power_state; + default: + g_assert_not_reached (); } - - /* And keep on */ - set_power_state (task); } void -mm_iface_modem_set_power_state (MMIfaceModem *self, - MMModemPowerState power_state, - GAsyncReadyCallback callback, - gpointer user_data) +mm_iface_modem_set_power_state (MMIfaceModem *self, + MMModemPowerState power_state, + GAsyncReadyCallback callback, + gpointer user_data) { SetPowerStateContext *ctx; - GTask *task; + GTask *task; ctx = g_slice_new0 (SetPowerStateContext); - ctx->power_state = power_state; + ctx->step = SET_POWER_STATE_STEP_FIRST; + ctx->requested_power_state = power_state; task = g_task_new (self, NULL, callback, user_data); g_task_set_task_data (task, ctx, (GDestroyNotify)set_power_state_context_free); @@ -3748,26 +3943,36 @@ g_object_unref (task); return; } - ctx->previous_cached_power_state = mm_gdbus_modem_get_power_state (ctx->skeleton); - /* We cannot really rely on the power state value that we had cached before, - * as the real power status of the modem may also be changed by rfkill. So, - * before updating the current power state, re-check which is the real power - * state. */ - if (MM_IFACE_MODEM_GET_INTERFACE (self)->load_power_state && - MM_IFACE_MODEM_GET_INTERFACE (self)->load_power_state_finish) { - MM_IFACE_MODEM_GET_INTERFACE (self)->load_power_state ( - self, - (GAsyncReadyCallback)set_power_state_load_ready, - task); + /* Setup requested operation */ + switch (ctx->requested_power_state) { + case MM_MODEM_POWER_STATE_OFF: + ctx->requested_power_setup = MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_off; + ctx->requested_power_setup_finish = MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_off_finish; + break; + case MM_MODEM_POWER_STATE_LOW: + ctx->requested_power_setup = MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_down; + ctx->requested_power_setup_finish = MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_down_finish; + break; + case MM_MODEM_POWER_STATE_ON: + ctx->requested_power_setup = MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_up; + ctx->requested_power_setup_finish = MM_IFACE_MODEM_GET_INTERFACE (self)->modem_power_up_finish; + break; + case MM_MODEM_POWER_STATE_UNKNOWN: + default: + g_assert_not_reached (); + } + + /* Error if unsupported */ + if (!ctx->requested_power_setup || !ctx->requested_power_setup_finish) { + g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_UNSUPPORTED, + "Requested power transition is not supported by this modem"); + g_object_unref (task); return; } - /* If there is no way to load power state, just keep on assuming the cached - * one is also the real one */ - ctx->previous_real_power_state = ctx->previous_cached_power_state; - set_power_state (task); + set_power_state_step (task); } /*****************************************************************************/ @@ -3930,6 +4135,7 @@ MM_IFACE_MODEM_GET_INTERFACE (self)->check_for_sim_swap_finish) { MM_IFACE_MODEM_GET_INTERFACE (self)->check_for_sim_swap ( self, + NULL, (GAsyncReadyCallback)check_for_sim_swap_ready, task); return; @@ -4017,6 +4223,7 @@ INITIALIZATION_STEP_SUPPORTED_IP_FAMILIES, INITIALIZATION_STEP_POWER_STATE, INITIALIZATION_STEP_SIM_HOT_SWAP, + INITIALIZATION_STEP_SIM_SLOTS, INITIALIZATION_STEP_UNLOCK_REQUIRED, INITIALIZATION_STEP_SIM, INITIALIZATION_STEP_SETUP_CARRIER_CONFIG, @@ -4402,6 +4609,73 @@ } static void +load_sim_slots_ready (MMIfaceModem *self, + GAsyncResult *res, + GTask *task) +{ + InitializationContext *ctx; + g_autoptr(GPtrArray) sim_slots = NULL; + g_autoptr(GError) error = NULL; + guint primary_sim_slot = 0; + + ctx = g_task_get_task_data (task); + + if (!MM_IFACE_MODEM_GET_INTERFACE (self)->load_sim_slots_finish (self, + res, + &sim_slots, + &primary_sim_slot, + &error)) + mm_obj_warn (self, "couldn't query SIM slots: %s", error->message); + + if (sim_slots) { + MMBaseSim *primary_sim = NULL; + GPtrArray *sim_slot_paths_array; + g_auto(GStrv) sim_slot_paths = NULL; + guint i; + + g_assert (primary_sim_slot); + g_assert_cmpuint (primary_sim_slot, <=, sim_slots->len); + + sim_slot_paths_array = g_ptr_array_new (); + for (i = 0; i < sim_slots->len; i++) { + MMBaseSim *sim; + const gchar *sim_path; + + sim = MM_BASE_SIM (g_ptr_array_index (sim_slots, i)); + if (!sim) { + g_ptr_array_add (sim_slot_paths_array, g_strdup ("/")); + continue; + } + + sim_path = mm_base_sim_get_path (sim); + g_ptr_array_add (sim_slot_paths_array, g_strdup (sim_path)); + } + g_ptr_array_add (sim_slot_paths_array, NULL); + sim_slot_paths = (GStrv) g_ptr_array_free (sim_slot_paths_array, FALSE); + + mm_gdbus_modem_set_sim_slots (ctx->skeleton, (const gchar *const *)sim_slot_paths); + mm_gdbus_modem_set_primary_sim_slot (ctx->skeleton, primary_sim_slot); + + /* If loading SIM slots is supported, we also expose already the primary active SIM object */ + if (primary_sim_slot) { + primary_sim = g_ptr_array_index (sim_slots, primary_sim_slot - 1); + if (primary_sim) + g_object_bind_property (primary_sim, MM_BASE_SIM_PATH, + ctx->skeleton, "sim", + G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE); + } + g_object_set (self, + MM_IFACE_MODEM_SIM, primary_sim, + MM_IFACE_MODEM_SIM_SLOTS, sim_slots, + NULL); + } + + /* Go on to next step */ + ctx->step++; + interface_initialization_step (task); +} + +static void modem_update_lock_info_ready (MMIfaceModem *self, GAsyncResult *res, GTask *task) @@ -4701,11 +4975,12 @@ MMPort *primary = NULL; #if defined WITH_QMI - primary = MM_PORT (mm_base_modem_peek_port_qmi (MM_BASE_MODEM (self))); + if (MM_IS_BROADBAND_MODEM_QMI (self)) + primary = MM_PORT (mm_broadband_modem_qmi_peek_port_qmi (MM_BROADBAND_MODEM_QMI (self))); #endif #if defined WITH_MBIM - if (!primary) - primary = MM_PORT (mm_base_modem_peek_port_mbim (MM_BASE_MODEM (self))); + if (!primary && MM_IS_BROADBAND_MODEM_MBIM (self)) + primary = MM_PORT (mm_broadband_modem_mbim_peek_port_mbim (MM_BROADBAND_MODEM_MBIM (self))); #endif if (!primary) primary = MM_PORT (mm_base_modem_peek_port_primary (MM_BASE_MODEM (self))); @@ -5074,8 +5349,14 @@ ctx->step++; /* fall-through */ - case INITIALIZATION_STEP_SIM_HOT_SWAP: - if (MM_IFACE_MODEM_GET_INTERFACE (self)->setup_sim_hot_swap && + case INITIALIZATION_STEP_SIM_HOT_SWAP: { + gboolean sim_hot_swap_configured = FALSE; + + g_object_get (self, + MM_IFACE_MODEM_SIM_HOT_SWAP_CONFIGURED, &sim_hot_swap_configured, + NULL); + if (!sim_hot_swap_configured && + MM_IFACE_MODEM_GET_INTERFACE (self)->setup_sim_hot_swap && MM_IFACE_MODEM_GET_INTERFACE (self)->setup_sim_hot_swap_finish) { MM_IFACE_MODEM_GET_INTERFACE (self)->setup_sim_hot_swap ( MM_IFACE_MODEM (self), @@ -5084,6 +5365,22 @@ return; } ctx->step++; + } /* fall-through */ + + case INITIALIZATION_STEP_SIM_SLOTS: + /* If the modem doesn't need any SIM (not implemented by plugin, or not + * needed in CDMA-only modems), or if we don't know how to query + * for SIM slots */ + if (!mm_gdbus_modem_get_sim_slots (ctx->skeleton) && + !mm_iface_modem_is_cdma_only (self) && + MM_IFACE_MODEM_GET_INTERFACE (self)->load_sim_slots && + MM_IFACE_MODEM_GET_INTERFACE (self)->load_sim_slots_finish) { + MM_IFACE_MODEM_GET_INTERFACE (self)->load_sim_slots (MM_IFACE_MODEM (self), + (GAsyncReadyCallback)load_sim_slots_ready, + task); + return; + } + ctx->step++; /* fall-through */ case INITIALIZATION_STEP_UNLOCK_REQUIRED: @@ -5274,6 +5571,7 @@ "signal::handle-enable", G_CALLBACK (handle_enable), self, "signal::handle-set-current-bands", G_CALLBACK (handle_set_current_bands), self, "signal::handle-set-current-modes", G_CALLBACK (handle_set_current_modes), self, + "signal::handle-set-primary-sim-slot", G_CALLBACK (handle_set_primary_sim_slot), self, NULL); /* Finally, export the new interface, even if we got errors, but only if not @@ -5682,6 +5980,14 @@ g_object_interface_install_property (g_iface, + g_param_spec_boxed (MM_IFACE_MODEM_SIM_SLOTS, + "SIM slots", + "SIM objects in SIM slots", + MM_TYPE_OBJECT_ARRAY, + G_PARAM_READWRITE)); + + g_object_interface_install_property + (g_iface, g_param_spec_enum (MM_IFACE_MODEM_STATE, "State", "State of the modem", diff -Nru modemmanager-1.14.10/src/mm-iface-modem.h modemmanager-1.16.6/src/mm-iface-modem.h --- modemmanager-1.14.10/src/mm-iface-modem.h 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-iface-modem.h 2021-06-06 21:40:59.000000000 +0800 @@ -35,6 +35,7 @@ #define MM_IFACE_MODEM_DBUS_SKELETON "iface-modem-dbus-skeleton" #define MM_IFACE_MODEM_STATE "iface-modem-state" #define MM_IFACE_MODEM_SIM "iface-modem-sim" +#define MM_IFACE_MODEM_SIM_SLOTS "iface-modem-sim-slots" #define MM_IFACE_MODEM_BEARER_LIST "iface-modem-bearer-list" #define MM_IFACE_MODEM_SIM_HOT_SWAP_SUPPORTED "iface-modem-sim-hot-swap-supported" #define MM_IFACE_MODEM_SIM_HOT_SWAP_CONFIGURED "iface-modem-sim-hot-swap-configured" @@ -268,6 +269,14 @@ GAsyncResult *res, GError **error); + /* Asynchronous FCC unlock operation */ + void (* fcc_unlock) (MMIfaceModem *self, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* fcc_unlock_finish) (MMIfaceModem *self, + GAsyncResult *res, + GError **error); + /* Asynchronous modem power-up operation */ void (*modem_power_up) (MMIfaceModem *self, GAsyncReadyCallback callback, @@ -289,6 +298,7 @@ * Useful for when the modem changes power states since we might * not get the relevant notifications from the modem. */ void (*check_for_sim_swap) (MMIfaceModem *self, + const gchar *iccid, GAsyncReadyCallback callback, gpointer user_data); gboolean (*check_for_sim_swap_finish) (MMIfaceModem *self, @@ -343,6 +353,25 @@ GAsyncResult *res, GError **error); + /* Create SIMs in all SIM slots */ + void (* load_sim_slots) (MMIfaceModem *self, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* load_sim_slots_finish) (MMIfaceModem *self, + GAsyncResult *res, + GPtrArray **sim_slots, + guint *primary_sim_slot, + GError **error); + + /* Set primary SIM slot */ + void (* set_primary_sim_slot) (MMIfaceModem *self, + guint sim_slot, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* set_primary_sim_slot_finish) (MMIfaceModem *self, + GAsyncResult *res, + GError **error); + /* Create bearer */ void (*create_bearer) (MMIfaceModem *self, MMBearerProperties *properties, @@ -547,4 +576,14 @@ void mm_iface_modem_bind_simple_status (MMIfaceModem *self, MMSimpleStatus *status); +/* Check if the SIM or eSIM profile has changed */ +void mm_iface_modem_check_for_sim_swap (MMIfaceModem *self, + guint slot_index, + const gchar *iccid, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean mm_iface_modem_check_for_sim_swap_finish (MMIfaceModem *self, + GAsyncResult *res, + GError **error); + #endif /* MM_IFACE_MODEM_H */ diff -Nru modemmanager-1.14.10/src/mm-log.c modemmanager-1.16.6/src/mm-log.c --- modemmanager-1.14.10/src/mm-log.c 2020-11-30 06:50:01.000000000 +0800 +++ modemmanager-1.16.6/src/mm-log.c 2021-06-06 21:40:59.000000000 +0800 @@ -76,7 +76,7 @@ }; static GString *msgbuf = NULL; -static volatile gsize msgbuf_once = 0; +static gsize msgbuf_once = 0; static int mm_to_syslog_priority (MMLogLevel level) diff -Nru modemmanager-1.14.10/src/mm-modem-helpers-mbim.c modemmanager-1.16.6/src/mm-modem-helpers-mbim.c --- modemmanager-1.14.10/src/mm-modem-helpers-mbim.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-modem-helpers-mbim.c 2021-06-06 21:40:59.000000000 +0800 @@ -19,11 +19,14 @@ #include "mm-errors-types.h" #include "mm-log-object.h" +#include + /*****************************************************************************/ MMModemCapability -mm_modem_capability_from_mbim_device_caps (MbimCellularClass caps_cellular_class, - MbimDataClass caps_data_class) +mm_modem_capability_from_mbim_device_caps (MbimCellularClass caps_cellular_class, + MbimDataClass caps_data_class, + const gchar *caps_custom_data_class) { MMModemCapability mask = 0; @@ -38,6 +41,12 @@ if (caps_data_class & MBIM_DATA_CLASS_LTE) mask |= MM_MODEM_CAPABILITY_LTE; + if ((caps_data_class & MBIM_DATA_CLASS_CUSTOM) && caps_custom_data_class) { + /* e.g. Gosuncn GM800 reports MBIM custom data class "5G/TDS" */ + if (strstr (caps_custom_data_class, "5G")) + mask |= MM_MODEM_CAPABILITY_5GNR; + } + return mask; } @@ -375,13 +384,13 @@ /* NOTE: the input is a BITMASK, so we try to find a "best match" */ if (bearer_auth == MM_BEARER_ALLOWED_AUTH_UNKNOWN) { - mm_obj_dbg (log_object, "using default (PAP) authentication method"); - return MBIM_AUTH_PROTOCOL_PAP; + mm_obj_dbg (log_object, "using default (CHAP) authentication method"); + return MBIM_AUTH_PROTOCOL_CHAP; } - if (bearer_auth & MM_BEARER_ALLOWED_AUTH_PAP) - return MBIM_AUTH_PROTOCOL_PAP; if (bearer_auth & MM_BEARER_ALLOWED_AUTH_CHAP) return MBIM_AUTH_PROTOCOL_CHAP; + if (bearer_auth & MM_BEARER_ALLOWED_AUTH_PAP) + return MBIM_AUTH_PROTOCOL_PAP; if (bearer_auth & MM_BEARER_ALLOWED_AUTH_MSCHAPV2) return MBIM_AUTH_PROTOCOL_MSCHAPV2; if (bearer_auth & MM_BEARER_ALLOWED_AUTH_NONE) diff -Nru modemmanager-1.14.10/src/mm-modem-helpers-mbim.h modemmanager-1.16.6/src/mm-modem-helpers-mbim.h --- modemmanager-1.14.10/src/mm-modem-helpers-mbim.h 2021-01-14 23:01:30.000000000 +0800 +++ modemmanager-1.16.6/src/mm-modem-helpers-mbim.h 2021-06-06 21:40:59.000000000 +0800 @@ -24,8 +24,9 @@ /*****************************************************************************/ /* MBIM/BasicConnect to MM translations */ -MMModemCapability mm_modem_capability_from_mbim_device_caps (MbimCellularClass caps_cellular_class, - MbimDataClass caps_data_class); +MMModemCapability mm_modem_capability_from_mbim_device_caps (MbimCellularClass caps_cellular_class, + MbimDataClass caps_data_class, + const gchar *caps_custom_data_class); MMModemLock mm_modem_lock_from_mbim_pin_type (MbimPinType pin_type); diff -Nru modemmanager-1.14.10/src/mm-modem-helpers-qmi.c modemmanager-1.16.6/src/mm-modem-helpers-qmi.c --- modemmanager-1.14.10/src/mm-modem-helpers-qmi.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-modem-helpers-qmi.c 2021-06-06 21:40:59.000000000 +0800 @@ -1106,66 +1106,74 @@ return array; } -GArray * -mm_modem_mode_to_qmi_acquisition_order_preference (MMModemMode allowed, - MMModemMode preferred, - gboolean is_cdma, - gboolean is_3gpp) +static gboolean +radio_interface_array_contains (GArray *array, + QmiNasRadioInterface act) { - GArray *array; - QmiNasRadioInterface value; + guint i; - array = g_array_new (FALSE, FALSE, sizeof (QmiNasRadioInterface)); + for (i = 0; i < array->len; i++) { + QmiNasRadioInterface value; - if (allowed & MM_MODEM_MODE_5G) { - value = QMI_NAS_RADIO_INTERFACE_5GNR; - if (preferred == MM_MODEM_MODE_5G) - g_array_prepend_val (array, value); - else - g_array_append_val (array, value); + value = g_array_index (array, QmiNasRadioInterface, i); + if (value == act) + return TRUE; } + return FALSE; +} - if (allowed & MM_MODEM_MODE_4G) { - value = QMI_NAS_RADIO_INTERFACE_LTE; - if (preferred == MM_MODEM_MODE_4G) - g_array_prepend_val (array, value); - else +static void +radio_interface_array_add_missing (GArray *array, + GArray *all) +{ + guint i; + + for (i = 0; i < all->len; i++) { + QmiNasRadioInterface value; + + value = g_array_index (all, QmiNasRadioInterface, i); + if (!radio_interface_array_contains (array, value)) g_array_append_val (array, value); } +} - if (allowed & MM_MODEM_MODE_3G) { - if (is_cdma) { - value = QMI_NAS_RADIO_INTERFACE_CDMA_1XEVDO; - if (preferred == MM_MODEM_MODE_3G) - g_array_prepend_val (array, value); - else - g_array_append_val (array, value); - } - if (is_3gpp) { - value = QMI_NAS_RADIO_INTERFACE_UMTS; - if (preferred == MM_MODEM_MODE_3G) - g_array_prepend_val (array, value); - else - g_array_append_val (array, value); - } - } +GArray * +mm_modem_mode_to_qmi_acquisition_order_preference (MMModemMode allowed, + MMModemMode preferred, + GArray *all) +{ + GArray *array; + QmiNasRadioInterface preferred_radio = QMI_NAS_RADIO_INTERFACE_UNKNOWN; + QmiNasRadioInterface value; - if (allowed & MM_MODEM_MODE_2G) { - if (is_cdma) { - value = QMI_NAS_RADIO_INTERFACE_CDMA_1X; - if (preferred == MM_MODEM_MODE_2G) - g_array_prepend_val (array, value); - else - g_array_append_val (array, value); - } - if (is_3gpp) { - value = QMI_NAS_RADIO_INTERFACE_GSM; - if (preferred == MM_MODEM_MODE_2G) - g_array_prepend_val (array, value); - else - g_array_append_val (array, value); - } - } + array = g_array_sized_new (FALSE, FALSE, sizeof (QmiNasRadioInterface), all->len); + +#define PROCESS_ALLOWED_PREFERRED_MODE(MODE,RADIO) \ + if ((allowed & MODE) && (radio_interface_array_contains (all, RADIO))) { \ + if ((preferred == MODE) && (preferred_radio == QMI_NAS_RADIO_INTERFACE_UNKNOWN)) \ + preferred_radio = RADIO; \ + else { \ + value = RADIO; \ + g_array_append_val (array, value); \ + } \ + } + + PROCESS_ALLOWED_PREFERRED_MODE (MM_MODEM_MODE_5G, QMI_NAS_RADIO_INTERFACE_5GNR); + PROCESS_ALLOWED_PREFERRED_MODE (MM_MODEM_MODE_4G, QMI_NAS_RADIO_INTERFACE_LTE); + PROCESS_ALLOWED_PREFERRED_MODE (MM_MODEM_MODE_3G, QMI_NAS_RADIO_INTERFACE_UMTS); + PROCESS_ALLOWED_PREFERRED_MODE (MM_MODEM_MODE_3G, QMI_NAS_RADIO_INTERFACE_CDMA_1XEVDO); + PROCESS_ALLOWED_PREFERRED_MODE (MM_MODEM_MODE_2G, QMI_NAS_RADIO_INTERFACE_GSM); + PROCESS_ALLOWED_PREFERRED_MODE (MM_MODEM_MODE_2G, QMI_NAS_RADIO_INTERFACE_CDMA_1X); + +#undef PROCESS_ALLOWED_PREFERRED_MODE + + if (preferred_radio != QMI_NAS_RADIO_INTERFACE_UNKNOWN) + g_array_prepend_val (array, preferred_radio); + + /* the acquisition order preference is a TLV that must ALWAYS contain the + * same list of QmiNasRadioInterface values, just with a different order. */ + radio_interface_array_add_missing (array, all); + g_assert_cmpuint (array->len, ==, all->len); return array; } @@ -1472,6 +1480,72 @@ return out; } +MMBearerAllowedAuth +mm_bearer_allowed_auth_from_qmi_authentication (QmiWdsAuthentication auth) +{ + MMBearerAllowedAuth out = 0; + + if (auth & QMI_WDS_AUTHENTICATION_PAP) + out |= MM_BEARER_ALLOWED_AUTH_PAP; + if (auth & QMI_WDS_AUTHENTICATION_CHAP) + out |= MM_BEARER_ALLOWED_AUTH_CHAP; + + return out; +} + +MMBearerIpFamily +mm_bearer_ip_family_from_qmi_ip_support_type (QmiWdsIpSupportType ip_support_type) +{ + switch (ip_support_type) { + case QMI_WDS_IP_SUPPORT_TYPE_IPV4: + return MM_BEARER_IP_FAMILY_IPV4; + case QMI_WDS_IP_SUPPORT_TYPE_IPV6: + return MM_BEARER_IP_FAMILY_IPV6; + case QMI_WDS_IP_SUPPORT_TYPE_IPV4V6: + return MM_BEARER_IP_FAMILY_IPV4V6; + default: + return MM_BEARER_IP_FAMILY_NONE; + } +} + +MMBearerIpFamily +mm_bearer_ip_family_from_qmi_pdp_type (QmiWdsPdpType pdp_type) +{ + switch (pdp_type) { + case QMI_WDS_PDP_TYPE_IPV4: + return MM_BEARER_IP_FAMILY_IPV4; + case QMI_WDS_PDP_TYPE_IPV6: + return MM_BEARER_IP_FAMILY_IPV6; + case QMI_WDS_PDP_TYPE_IPV4_OR_IPV6: + return MM_BEARER_IP_FAMILY_IPV4V6; + case QMI_WDS_PDP_TYPE_PPP: + default: + return MM_BEARER_IP_FAMILY_NONE; + } +} + +gboolean +mm_bearer_ip_family_to_qmi_pdp_type (MMBearerIpFamily ip_family, + QmiWdsPdpType *out_pdp_type) +{ + switch (ip_family) { + case MM_BEARER_IP_FAMILY_IPV4: + *out_pdp_type = QMI_WDS_PDP_TYPE_IPV4; + return TRUE; + case MM_BEARER_IP_FAMILY_IPV6: + *out_pdp_type = QMI_WDS_PDP_TYPE_IPV6; + return TRUE; + case MM_BEARER_IP_FAMILY_IPV4V6: + *out_pdp_type = QMI_WDS_PDP_TYPE_IPV4_OR_IPV6; + return TRUE; + case MM_BEARER_IP_FAMILY_NONE: + case MM_BEARER_IP_FAMILY_ANY: + default: + /* there is no valid conversion, so just return FALSE to indicate it */ + return FALSE; + } +} + /*****************************************************************************/ /** @@ -1745,25 +1819,19 @@ /* The length will be exactly EXPECTED_QMI_UNIQUE_ID_LENGTH*2 if given in HEX */ if (len == (2 * EXPECTED_QMI_UNIQUE_ID_LENGTH)) { - guint8 *tmp; - gsize tmp_len; - guint i; - - for (i = 0; i < len; i++) { - if (!g_ascii_isxdigit (unique_id[i])) { - g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, - "Unexpected character found in unique id (not HEX): %c", unique_id[i]); - return NULL; - } - } + g_autofree guint8 *tmp = NULL; + gsize tmp_len; tmp_len = 0; - tmp = (guint8 *) mm_utils_hexstr2bin (unique_id, &tmp_len); + tmp = mm_utils_hexstr2bin (unique_id, -1, &tmp_len, error); + if (!tmp) { + g_prefix_error (error, "Unexpected character found in unique id: "); + return NULL; + } g_assert (tmp_len == EXPECTED_QMI_UNIQUE_ID_LENGTH); qmi_unique_id = g_array_sized_new (FALSE, FALSE, sizeof (guint8), tmp_len); g_array_insert_vals (qmi_unique_id, 0, tmp, tmp_len); - g_free (tmp); return qmi_unique_id; } @@ -1791,3 +1859,257 @@ "Unexpected unique id length: %u", len); return NULL; } + +/*****************************************************************************/ + +gboolean +mm_qmi_uim_get_card_status_output_parse (gpointer log_object, + QmiMessageUimGetCardStatusOutput *output, + MMModemLock *o_lock, + QmiUimPinState *o_pin1_state, + guint *o_pin1_retries, + guint *o_puk1_retries, + QmiUimPinState *o_pin2_state, + guint *o_pin2_retries, + guint *o_puk2_retries, + GError **error) +{ + QmiMessageUimGetCardStatusOutputCardStatusCardsElement *card; + QmiMessageUimGetCardStatusOutputCardStatusCardsElementApplicationsElement *app; + GArray *cards; + guint16 index_gw_primary = 0xFFFF; + guint8 gw_primary_slot_i = 0; + guint8 gw_primary_application_i = 0; + MMModemLock lock = MM_MODEM_LOCK_UNKNOWN; + + /* This command supports MULTIPLE cards with MULTIPLE applications each. For our + * purposes, we're going to consider as the SIM to use the one identified as + * 'primary GW' exclusively. We don't really support Dual Sim Dual Standby yet. */ + + qmi_message_uim_get_card_status_output_get_card_status ( + output, + &index_gw_primary, + NULL, /* index_1x_primary */ + NULL, /* index_gw_secondary */ + NULL, /* index_1x_secondary */ + &cards, + NULL); + + if (cards->len == 0) { + g_set_error (error, QMI_CORE_ERROR, QMI_CORE_ERROR_FAILED, + "No cards reported"); + return FALSE; + } + + /* Look for the primary GW slot and application. + * If we don't have valid GW primary slot index and application index, assume + * we're missing the SIM altogether */ + gw_primary_slot_i = ((index_gw_primary & 0xFF00) >> 8); + gw_primary_application_i = ((index_gw_primary & 0x00FF)); + + if (gw_primary_slot_i == 0xFF) { + g_set_error (error, + MM_MOBILE_EQUIPMENT_ERROR, + MM_MOBILE_EQUIPMENT_ERROR_SIM_NOT_INSERTED, + "GW primary session index unknown"); + return FALSE; + } + mm_obj_dbg (log_object, "GW primary session index: %u", gw_primary_slot_i); + + if (gw_primary_application_i == 0xFF) { + g_set_error (error, + MM_MOBILE_EQUIPMENT_ERROR, + MM_MOBILE_EQUIPMENT_ERROR_SIM_NOT_INSERTED, + "GW primary application index unknown"); + return FALSE; + } + mm_obj_dbg (log_object, "GW primary application index: %u", gw_primary_application_i); + + /* Validate slot index */ + if (gw_primary_slot_i >= cards->len) { + g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, + "Invalid GW primary session index: %u", + gw_primary_slot_i); + return FALSE; + } + + /* Get card at slot */ + card = &g_array_index (cards, QmiMessageUimGetCardStatusOutputCardStatusCardsElement, gw_primary_slot_i); + + if (card->card_state == QMI_UIM_CARD_STATE_ABSENT) { + g_set_error (error, + MM_MOBILE_EQUIPMENT_ERROR, + MM_MOBILE_EQUIPMENT_ERROR_SIM_NOT_INSERTED, + "No card found"); + return FALSE; + } + + if (card->card_state == QMI_UIM_CARD_STATE_ERROR) { + const gchar *card_error; + + card_error = qmi_uim_card_error_get_string (card->error_code); + g_set_error (error, + MM_MOBILE_EQUIPMENT_ERROR, + MM_MOBILE_EQUIPMENT_ERROR_SIM_WRONG, + "Card error: %s", card_error ? card_error : "unknown error"); + return FALSE; + } + + if (card->card_state != QMI_UIM_CARD_STATE_PRESENT) { + g_set_error (error, + MM_MOBILE_EQUIPMENT_ERROR, + MM_MOBILE_EQUIPMENT_ERROR_SIM_WRONG, + "Card error: unexpected card state: 0x%x", card->card_state); + return FALSE; + } + + /* Card is present */ + + if (card->applications->len == 0) { + g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, + "No applications reported in card"); + return FALSE; + } + + /* Validate application index */ + if (gw_primary_application_i >= card->applications->len) { + g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, + "Invalid GW primary application index: %u", + gw_primary_application_i); + return FALSE; + } + + app = &g_array_index (card->applications, QmiMessageUimGetCardStatusOutputCardStatusCardsElementApplicationsElement, gw_primary_application_i); + if ((app->type != QMI_UIM_CARD_APPLICATION_TYPE_SIM) && (app->type != QMI_UIM_CARD_APPLICATION_TYPE_USIM)) { + g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, + "Unsupported application type found in GW primary application index: %s", + qmi_uim_card_application_type_get_string (app->type)); + return FALSE; + } + + /* Illegal application state is fatal, consider it as a failed SIM right + * away and don't even attempt to retry */ + if (app->state == QMI_UIM_CARD_APPLICATION_STATE_ILLEGAL) { + g_set_error (error, + MM_MOBILE_EQUIPMENT_ERROR, + MM_MOBILE_EQUIPMENT_ERROR_SIM_WRONG, + "Illegal SIM/USIM application state"); + return FALSE; + } + + /* If card not ready yet, return RETRY error. + * If the application state reports needing PIN/PUk, consider that ready as + * well, and let the logic fall down to check PIN1/PIN2. */ + if (app->state != QMI_UIM_CARD_APPLICATION_STATE_READY && + app->state != QMI_UIM_CARD_APPLICATION_STATE_PIN1_OR_UPIN_PIN_REQUIRED && + app->state != QMI_UIM_CARD_APPLICATION_STATE_PUK1_OR_UPIN_PUK_REQUIRED && + app->state != QMI_UIM_CARD_APPLICATION_STATE_PIN1_BLOCKED) { + mm_obj_dbg (log_object, "neither SIM nor USIM are ready"); + g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_RETRY, + "SIM not ready yet (retry)"); + return FALSE; + } + + /* Report state and retries if requested to do so */ + if (o_pin1_state) + *o_pin1_state = app->pin1_state; + if (o_pin1_retries) + *o_pin1_retries = app->pin1_retries; + if (o_puk1_retries) + *o_puk1_retries = app->puk1_retries; + if (o_pin2_state) + *o_pin2_state = app->pin2_state; + if (o_pin2_retries) + *o_pin2_retries = app->pin2_retries; + if (o_puk2_retries) + *o_puk2_retries = app->puk2_retries; + + /* Early bail out if lock status isn't wanted at this point, so that we + * don't fail with an error the unlock retries check */ + if (!o_lock) + return TRUE; + + /* Card is ready, what's the lock status? */ + + /* PIN1 */ + switch (app->pin1_state) { + case QMI_UIM_PIN_STATE_NOT_INITIALIZED: + g_set_error (error, + MM_MOBILE_EQUIPMENT_ERROR, + MM_MOBILE_EQUIPMENT_ERROR_SIM_WRONG, + "SIM PIN/PUK status not known yet"); + return FALSE; + + case QMI_UIM_PIN_STATE_PERMANENTLY_BLOCKED: + g_set_error (error, + MM_MOBILE_EQUIPMENT_ERROR, + MM_MOBILE_EQUIPMENT_ERROR_SIM_WRONG, + "SIM PIN/PUK permanently blocked"); + return FALSE; + + case QMI_UIM_PIN_STATE_ENABLED_NOT_VERIFIED: + lock = MM_MODEM_LOCK_SIM_PIN; + break; + + case QMI_UIM_PIN_STATE_BLOCKED: + lock = MM_MODEM_LOCK_SIM_PUK; + break; + + case QMI_UIM_PIN_STATE_DISABLED: + case QMI_UIM_PIN_STATE_ENABLED_VERIFIED: + lock = MM_MODEM_LOCK_NONE; + break; + + default: + g_set_error (error, + MM_MOBILE_EQUIPMENT_ERROR, + MM_MOBILE_EQUIPMENT_ERROR_SIM_WRONG, + "Unknown SIM PIN/PUK status"); + return FALSE; + } + + /* PIN2 */ + if (lock == MM_MODEM_LOCK_NONE) { + switch (app->pin2_state) { + case QMI_UIM_PIN_STATE_NOT_INITIALIZED: + mm_obj_warn (log_object, "SIM PIN2/PUK2 status not known yet"); + break; + + case QMI_UIM_PIN_STATE_ENABLED_NOT_VERIFIED: + lock = MM_MODEM_LOCK_SIM_PIN2; + break; + + case QMI_UIM_PIN_STATE_PERMANENTLY_BLOCKED: + mm_obj_warn (log_object, "PUK2 permanently blocked"); + /* Fall through */ + case QMI_UIM_PIN_STATE_BLOCKED: + lock = MM_MODEM_LOCK_SIM_PUK2; + break; + + case QMI_UIM_PIN_STATE_DISABLED: + case QMI_UIM_PIN_STATE_ENABLED_VERIFIED: + break; + + default: + mm_obj_warn (log_object, "unknown SIM PIN2/PUK2 status"); + break; + } + } + + *o_lock = lock; + return TRUE; +} + +/*************************************************************************/ +/* EID parsing */ + +#define EID_BYTE_LENGTH 16 + +gchar * +mm_qmi_uim_decode_eid (const gchar *eid, gsize eid_len) +{ + if (eid_len != EID_BYTE_LENGTH) + return NULL; + + return mm_bcd_to_string ((const guint8 *) eid, eid_len, FALSE /* low_nybble_first */); +} diff -Nru modemmanager-1.14.10/src/mm-modem-helpers-qmi.h modemmanager-1.16.6/src/mm-modem-helpers-qmi.h --- modemmanager-1.14.10/src/mm-modem-helpers-qmi.h 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-modem-helpers-qmi.h 2021-06-06 21:40:59.000000000 +0800 @@ -64,11 +64,10 @@ MMModemCapability mm_modem_capability_from_qmi_rat_mode_preference (QmiNasRatModePreference qmi); QmiNasRatModePreference mm_modem_capability_to_qmi_rat_mode_preference (MMModemCapability caps); -GArray *mm_modem_capability_to_qmi_acquisition_order_preference (MMModemCapability caps); -GArray *mm_modem_mode_to_qmi_acquisition_order_preference (MMModemMode allowed, - MMModemMode preferred, - gboolean is_cdma, - gboolean is_3gpp); +GArray *mm_modem_capability_to_qmi_acquisition_order_preference (MMModemCapability caps); +GArray *mm_modem_mode_to_qmi_acquisition_order_preference (MMModemMode allowed, + MMModemMode preferred, + GArray *all); MMModemCapability mm_modem_capability_from_qmi_radio_technology_preference (QmiNasRadioTechnologyPreference qmi); QmiNasRadioTechnologyPreference mm_modem_capability_to_qmi_radio_technology_preference (MMModemCapability caps); @@ -113,7 +112,12 @@ /*****************************************************************************/ /* QMI/WDS to MM translations */ -QmiWdsAuthentication mm_bearer_allowed_auth_to_qmi_authentication (MMBearerAllowedAuth auth); +QmiWdsAuthentication mm_bearer_allowed_auth_to_qmi_authentication (MMBearerAllowedAuth auth); +MMBearerAllowedAuth mm_bearer_allowed_auth_from_qmi_authentication (QmiWdsAuthentication auth); +MMBearerIpFamily mm_bearer_ip_family_from_qmi_ip_support_type (QmiWdsIpSupportType ip_support_type); +MMBearerIpFamily mm_bearer_ip_family_from_qmi_pdp_type (QmiWdsPdpType pdp_type); +gboolean mm_bearer_ip_family_to_qmi_pdp_type (MMBearerIpFamily ip_family, + QmiWdsPdpType *out_pdp_type); /*****************************************************************************/ /* QMI/OMA to MM translations */ @@ -154,4 +158,22 @@ GArray *mm_firmware_unique_id_to_qmi_unique_id (const gchar *unique_id, GError **error); +/*****************************************************************************/ +/* Common UIM Get Card Status parsing */ + +gboolean mm_qmi_uim_get_card_status_output_parse (gpointer log_object, + QmiMessageUimGetCardStatusOutput *output, + MMModemLock *o_lock, + QmiUimPinState *o_pin1_state, + guint *o_pin1_retries, + guint *o_puk1_retries, + QmiUimPinState *o_pin2_state, + guint *o_pin2_retries, + guint *o_puk2_retries, + GError **error); + +/*****************************************************************************/ +/* UIM Get Slot Status parsing */ +gchar *mm_qmi_uim_decode_eid (const gchar *eid, gsize eid_len); + #endif /* MM_MODEM_HELPERS_QMI_H */ diff -Nru modemmanager-1.14.10/src/mm-modem-helpers.c modemmanager-1.16.6/src/mm-modem-helpers.c --- modemmanager-1.14.10/src/mm-modem-helpers.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-modem-helpers.c 2021-06-06 21:40:59.000000000 +0800 @@ -473,7 +473,7 @@ static const gchar bcd_chars[] = "0123456789\0\0\0\0\0\0"; gchar * -mm_bcd_to_string (const guint8 *bcd, gsize bcd_len) +mm_bcd_to_string (const guint8 *bcd, gsize bcd_len, gboolean low_nybble_first) { GString *str; gsize i; @@ -482,8 +482,11 @@ str = g_string_sized_new (bcd_len * 2 + 1); for (i = 0 ; i < bcd_len; i++) { - str = g_string_append_c (str, bcd_chars[bcd[i] & 0xF]); + if (low_nybble_first) + str = g_string_append_c (str, bcd_chars[bcd[i] & 0xF]); str = g_string_append_c (str, bcd_chars[(bcd[i] >> 4) & 0xF]); + if (!low_nybble_first) + str = g_string_append_c (str, bcd_chars[bcd[i] & 0xF]); } return g_string_free (str, FALSE); } @@ -1286,9 +1289,9 @@ info->operator_code = mm_get_string_unquoted_from_match_info (match_info, 4); /* The returned strings may be given in e.g. UCS2 */ - mm_3gpp_normalize_operator (&info->operator_long, cur_charset); - mm_3gpp_normalize_operator (&info->operator_short, cur_charset); - mm_3gpp_normalize_operator (&info->operator_code, cur_charset); + mm_3gpp_normalize_operator (&info->operator_long, cur_charset, log_object); + mm_3gpp_normalize_operator (&info->operator_short, cur_charset, log_object); + mm_3gpp_normalize_operator (&info->operator_code, cur_charset, log_object); /* Only try for access technology with UMTS-format matches. * If none give, assume GSM */ @@ -4015,8 +4018,11 @@ void mm_3gpp_normalize_operator (gchar **operator, - MMModemCharset cur_charset) + MMModemCharset cur_charset, + gpointer log_object) { + g_autofree gchar *normalized = NULL; + g_assert (operator); if (*operator == NULL) @@ -4024,31 +4030,38 @@ /* Despite +CSCS? may claim supporting UCS2, Some modems (e.g. Huawei) * always report the operator name in ASCII in a +COPS response. */ - if (cur_charset == MM_MODEM_CHARSET_UCS2) { - gchar *tmp; + if (cur_charset != MM_MODEM_CHARSET_UNKNOWN) { + g_autoptr(GError) error = NULL; - tmp = g_strdup (*operator); - /* In this case we're already checking UTF-8 validity */ - tmp = mm_charset_take_and_convert_to_utf8 (tmp, cur_charset); - if (tmp) { - g_clear_pointer (operator, g_free); - *operator = tmp; + normalized = mm_modem_charset_str_to_utf8 (*operator, -1, cur_charset, TRUE, &error); + if (normalized) goto out; - } + + mm_obj_dbg (log_object, "couldn't convert operator string '%s' from charset '%s': %s", + *operator, + mm_modem_charset_to_string (cur_charset), + error->message); } /* Charset is unknown or there was an error in conversion; try to see * if the contents we got are valid UTF-8 already. */ - if (!g_utf8_validate (*operator, -1, NULL)) - g_clear_pointer (operator, g_free); + if (g_utf8_validate (*operator, -1, NULL)) + normalized = g_strdup (*operator); out: /* Some modems (Novatel LTE) return the operator name as "Unknown" when * it fails to obtain the operator name. Return NULL in such case. */ - if (*operator && g_ascii_strcasecmp (*operator, "unknown") == 0) + if (!normalized || g_ascii_strcasecmp (normalized, "unknown") == 0) { + /* If normalization failed, just cleanup the string */ g_clear_pointer (operator, g_free); + return; + } + + mm_obj_dbg (log_object, "operator normalized '%s'->'%s'", *operator, normalized); + g_clear_pointer (operator, g_free); + *operator = g_steal_pointer (&normalized); } /*************************************************************************/ @@ -4288,10 +4301,9 @@ return NULL; } - bin = (guint8 *) mm_utils_hexstr2bin (raw, &binlen); + bin = mm_utils_hexstr2bin (raw, -1, &binlen, error); if (!bin) { - g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_INVALID_ARGS, - "invalid raw emergency numbers list contents: %s", raw); + g_prefix_error (error, "invalid raw emergency numbers list contents: "); return NULL; } @@ -4301,7 +4313,7 @@ for (i = 0; i < max_items; i++) { gchar *number; - number = mm_bcd_to_string (&bin[i*3], 3); + number = mm_bcd_to_string (&bin[i*3], 3, TRUE /* low_nybble_first */); if (number && number[0]) g_ptr_array_add (out, number); else diff -Nru modemmanager-1.14.10/src/mm-modem-helpers.h modemmanager-1.16.6/src/mm-modem-helpers.h --- modemmanager-1.14.10/src/mm-modem-helpers.h 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-modem-helpers.h 2021-06-06 21:40:59.000000000 +0800 @@ -84,7 +84,9 @@ const GArray *supported_combinations, gpointer log_object); -gchar *mm_bcd_to_string (const guint8 *bcd, gsize bcd_len); +gchar *mm_bcd_to_string (const guint8 *bcd, + gsize bcd_len, + gboolean low_nybble_first); /*****************************************************************************/ /* VOICE specific helpers and utilities */ @@ -427,7 +429,8 @@ MMModemAccessTechnology mm_string_to_access_tech (const gchar *string); void mm_3gpp_normalize_operator (gchar **operator, - MMModemCharset cur_charset); + MMModemCharset cur_charset, + gpointer log_object); gboolean mm_3gpp_parse_operator_id (const gchar *operator_id, guint16 *mcc, diff -Nru modemmanager-1.14.10/src/mm-plugin-manager.c modemmanager-1.16.6/src/mm-plugin-manager.c --- modemmanager-1.14.10/src/mm-plugin-manager.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-plugin-manager.c 2021-06-06 21:40:59.000000000 +0800 @@ -28,6 +28,7 @@ #include "mm-plugin-manager.h" #include "mm-plugin.h" #include "mm-shared.h" +#include "mm-utils.h" #include "mm-log-object.h" #define SHARED_PREFIX "libmm-shared" @@ -62,6 +63,9 @@ /* List of ongoing device support checks */ GList *device_contexts; + + /* Full list of subsystems requested by the registered plugins */ + gchar **subsystems; }; /*****************************************************************************/ @@ -178,7 +182,7 @@ /* * Port context * - * This structure hold all the probing information related to a single port. + * This structure holds all the probing information related to a single port. */ struct _PortContext { /* Reference counting */ @@ -735,7 +739,7 @@ /* The operation task */ GTask *task; - /* Internal ancellable */ + /* Internal cancellable */ GCancellable *cancellable; /* Timer tracking how much time is required for the device support check */ @@ -1601,6 +1605,14 @@ /*****************************************************************************/ +const gchar ** +mm_plugin_manager_get_subsystems (MMPluginManager *self) +{ + return (const gchar **) self->priv->subsystems; +} + +/*****************************************************************************/ + static void register_plugin_whitelist_tags (MMPluginManager *self, MMPlugin *plugin) @@ -1765,15 +1777,17 @@ } static gboolean -load_plugins (MMPluginManager *self, - GError **error) +load_plugins (MMPluginManager *self, + GError **error) { - GDir *dir = NULL; - const gchar *fname; - gchar *plugindir_display = NULL; - GList *shared_paths = NULL; - GList *plugin_paths = NULL; - GList *l; + GDir *dir = NULL; + const gchar *fname; + GList *shared_paths = NULL; + GList *plugin_paths = NULL; + GList *l; + GPtrArray *subsystems = NULL; + g_autofree gchar *subsystems_str = NULL; + g_autofree gchar *plugindir_display = NULL; if (!g_module_supported ()) { g_set_error (error, @@ -1811,21 +1825,41 @@ load_shared (self, (const gchar *)(l->data)); /* Load all plugins */ + subsystems = g_ptr_array_new (); for (l = plugin_paths; l; l = g_list_next (l)) { - MMPlugin *plugin; + MMPlugin *plugin; + const gchar **plugin_subsystems; + guint i; plugin = load_plugin (self, (const gchar *)(l->data)); if (!plugin) continue; + /* Ignore plugins that don't specify subsystems */ + plugin_subsystems = mm_plugin_get_allowed_subsystems (plugin); + if (!plugin_subsystems) { + mm_obj_warn (self, "plugin '%s' doesn't specify allowed subsystems: ignored", + mm_plugin_get_name (plugin)); + continue; + } + + /* Process generic plugin */ if (mm_plugin_is_generic (plugin)) { - if (self->priv->generic) - mm_obj_warn (self, "cannot register more than one generic plugin"); - else - self->priv->generic = plugin; + if (self->priv->generic) { + mm_obj_warn (self, "plugin '%s' is generic and another one is already registered: ignored", + mm_plugin_get_name (plugin)); + continue; + } + self->priv->generic = plugin; } else self->priv->plugins = g_list_append (self->priv->plugins, plugin); + /* Track required subsystems, avoiding duplicates in the list */ + for (i = 0; plugin_subsystems[i]; i++) { + if (!g_ptr_array_find_with_equal_func (subsystems, plugin_subsystems[i], g_str_equal, NULL)) + g_ptr_array_add (subsystems, g_strdup (plugin_subsystems[i])); + } + /* Register plugin whitelist rules in filter, if any */ register_plugin_whitelist_tags (self, plugin); register_plugin_whitelist_vendor_ids (self, plugin); @@ -1846,15 +1880,28 @@ goto out; } - mm_obj_dbg (self, "successfully loaded %u plugins", - g_list_length (self->priv->plugins) + !!self->priv->generic); + /* Validate required subsystems */ + if (!subsystems->len) { + g_set_error (error, + MM_CORE_ERROR, + MM_CORE_ERROR_NO_PLUGINS, + "empty list of subsystems required by plugins"); + goto out; + } + /* Add trailing NULL and store as GStrv */ + g_ptr_array_add (subsystems, NULL); + self->priv->subsystems = (gchar **) g_ptr_array_free (subsystems, FALSE); + subsystems_str = g_strjoinv (", ", self->priv->subsystems); + + mm_obj_dbg (self, "successfully loaded %u plugins registering %u subsystems: %s", + g_list_length (self->priv->plugins) + !!self->priv->generic, + g_strv_length (self->priv->subsystems), subsystems_str); out: g_list_free_full (shared_paths, g_free); g_list_free_full (plugin_paths, g_free); if (dir) g_dir_close (dir); - g_free (plugindir_display); /* Return TRUE if at least one plugin found */ return (self->priv->plugins || self->priv->generic); @@ -1884,12 +1931,12 @@ } static void -mm_plugin_manager_init (MMPluginManager *manager) +mm_plugin_manager_init (MMPluginManager *self) { /* Initialize opaque pointer to private data */ - manager->priv = G_TYPE_INSTANCE_GET_PRIVATE (manager, - MM_TYPE_PLUGIN_MANAGER, - MMPluginManagerPrivate); + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + MM_TYPE_PLUGIN_MANAGER, + MMPluginManagerPrivate); } static void @@ -1949,17 +1996,11 @@ { MMPluginManager *self = MM_PLUGIN_MANAGER (object); - /* Cleanup list of plugins */ - if (self->priv->plugins) { - g_list_free_full (self->priv->plugins, g_object_unref); - self->priv->plugins = NULL; - } + g_list_free_full (g_steal_pointer (&self->priv->plugins), g_object_unref); g_clear_object (&self->priv->generic); - - g_free (self->priv->plugin_dir); - self->priv->plugin_dir = NULL; - + g_clear_pointer (&self->priv->plugin_dir, g_free); g_clear_object (&self->priv->filter); + g_clear_pointer (&self->priv->subsystems, g_strfreev); G_OBJECT_CLASS (mm_plugin_manager_parent_class)->dispose (object); } diff -Nru modemmanager-1.14.10/src/mm-plugin-manager.h modemmanager-1.16.6/src/mm-plugin-manager.h --- modemmanager-1.14.10/src/mm-plugin-manager.h 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-plugin-manager.h 2021-06-06 21:40:59.000000000 +0800 @@ -65,5 +65,6 @@ GError **error); MMPlugin *mm_plugin_manager_peek_plugin (MMPluginManager *self, const gchar *plugin_name); +const gchar **mm_plugin_manager_get_subsystems (MMPluginManager *self); #endif /* MM_PLUGIN_MANAGER_H */ diff -Nru modemmanager-1.14.10/src/mm-plugin.c modemmanager-1.16.6/src/mm-plugin.c --- modemmanager-1.14.10/src/mm-plugin.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-plugin.c 2021-06-06 21:40:59.000000000 +0800 @@ -147,6 +147,12 @@ } const gchar ** +mm_plugin_get_allowed_subsystems (MMPlugin *self) +{ + return (const gchar **) self->priv->subsystems; +} + +const gchar ** mm_plugin_get_allowed_udev_tags (MMPlugin *self) { return (const gchar **) self->priv->udev_tags; @@ -217,10 +223,6 @@ for (i = 0; self->priv->subsystems[i]; i++) { if (g_str_equal (subsys, self->priv->subsystems[i])) break; - /* New kernels may report as 'usbmisc' the subsystem */ - else if (g_str_equal (self->priv->subsystems[i], "usb") && - g_str_equal (subsys, "usbmisc")) - break; } /* If we didn't match any subsystem: unsupported */ @@ -763,32 +765,36 @@ return; } - /* Before launching any probing, check if the port is a net device. */ - if (g_str_equal (mm_kernel_device_get_subsystem (port), "net")) { - mm_obj_dbg (self, "probing of port %s deferred until result suggested", mm_kernel_device_get_name (port)); - g_task_return_int (task, MM_PLUGIN_SUPPORTS_PORT_DEFER_UNTIL_SUGGESTED); - g_object_unref (task); - return; - } - /* Build flags depending on what probing needed */ probe_run_flags = MM_PORT_PROBE_NONE; - if (!g_str_has_prefix (mm_kernel_device_get_name (port), "cdc-wdm")) { - /* Serial ports... */ + if (g_str_equal (mm_kernel_device_get_subsystem (port), "tty")) { if (self->priv->at) probe_run_flags |= MM_PORT_PROBE_AT; else if (self->priv->single_at) probe_run_flags |= MM_PORT_PROBE_AT; if (self->priv->qcdm) probe_run_flags |= MM_PORT_PROBE_QCDM; - } else { - /* cdc-wdm ports... */ + } else if (g_str_equal (mm_kernel_device_get_subsystem (port), "usbmisc")) { if (self->priv->qmi && !g_strcmp0 (mm_kernel_device_get_driver (port), "qmi_wwan")) probe_run_flags |= MM_PORT_PROBE_QMI; else if (self->priv->mbim && !g_strcmp0 (mm_kernel_device_get_driver (port), "cdc_mbim")) probe_run_flags |= MM_PORT_PROBE_MBIM; else probe_run_flags |= MM_PORT_PROBE_AT; + } else if (g_str_equal (mm_kernel_device_get_subsystem (port), "rpmsg")) { + if (self->priv->at) + probe_run_flags |= MM_PORT_PROBE_AT; + if (self->priv->qmi) + probe_run_flags |= MM_PORT_PROBE_QMI; + } else if (g_str_equal (mm_kernel_device_get_subsystem (port), "wwan")) { + if (self->priv->mbim) + probe_run_flags |= MM_PORT_PROBE_MBIM; + if (self->priv->qmi) + probe_run_flags |= MM_PORT_PROBE_QMI; + if (self->priv->qcdm) + probe_run_flags |= MM_PORT_PROBE_QCDM; + if (self->priv->at) + probe_run_flags |= MM_PORT_PROBE_AT; } /* For potential AT ports, check for more things */ @@ -803,9 +809,11 @@ probe_run_flags |= MM_PORT_PROBE_AT_XMM; } - /* If no explicit probing was required, just request to grab it without probing anything. - * This may happen, e.g. with cdc-wdm ports which do not need QMI/MBIM probing. */ + /* If no explicit probing was required, just request to grab it without + * probing anything. This happens for all net ports and e.g. for cdc-wdm + * ports which do not need QMI/MBIM probing. */ if (probe_run_flags == MM_PORT_PROBE_NONE) { + mm_obj_dbg (self, "probing of port %s deferred until result suggested", mm_kernel_device_get_name (port)); g_task_return_int (task, MM_PLUGIN_SUPPORTS_PORT_DEFER_UNTIL_SUGGESTED); g_object_unref (task); return; @@ -889,22 +897,25 @@ MMBaseModem * mm_plugin_create_modem (MMPlugin *self, - MMDevice *device, + MMDevice *device, GError **error) { - MMBaseModem *modem; - GList *port_probes = NULL; + MMBaseModem *modem; + GList *port_probes = NULL; const gchar **virtual_ports = NULL; + const gchar **drivers; if (!mm_device_is_virtual (device)) port_probes = mm_device_peek_port_probe_list (device); else virtual_ports = mm_device_virtual_peek_ports (device); + drivers = mm_device_get_drivers (device); + /* Let the plugin create the modem from the port probe results */ modem = MM_PLUGIN_GET_CLASS (self)->create_modem (MM_PLUGIN (self), mm_device_get_uid (device), - mm_device_get_drivers (device), + drivers, mm_device_get_vendor (device), mm_device_get_product (device), port_probes, @@ -957,60 +968,66 @@ goto grab_port; } + /* Force network ignore rules for devices that use qmi_wwan */ + if (drivers && g_strv_contains (drivers, "qmi_wwan")) { #if defined WITH_QMI - if (MM_IS_BROADBAND_MODEM_QMI (modem) && - port_type == MM_PORT_TYPE_NET && - g_strcmp0 (driver, "qmi_wwan") != 0) { - /* Non-QMI net ports are ignored in QMI modems */ - mm_obj_dbg (self, "ignoring non-QMI net port %s in QMI modem", name); - force_ignored = TRUE; - goto grab_port; - } + if (MM_IS_BROADBAND_MODEM_QMI (modem) && + port_type == MM_PORT_TYPE_NET && + g_strcmp0 (driver, "qmi_wwan") != 0) { + /* Non-QMI net ports are ignored in QMI modems */ + mm_obj_dbg (self, "ignoring non-QMI net port %s in QMI modem", name); + force_ignored = TRUE; + goto grab_port; + } - if (!MM_IS_BROADBAND_MODEM_QMI (modem) && - port_type == MM_PORT_TYPE_NET && - g_strcmp0 (driver, "qmi_wwan") == 0) { - /* QMI net ports are ignored in non-QMI modems */ - mm_obj_dbg (self, "ignoring QMI net port %s in non-QMI modem", name); - force_ignored = TRUE; - goto grab_port; - } + if (!MM_IS_BROADBAND_MODEM_QMI (modem) && + port_type == MM_PORT_TYPE_NET && + g_strcmp0 (driver, "qmi_wwan") == 0) { + /* QMI net ports are ignored in non-QMI modems */ + mm_obj_dbg (self, "ignoring QMI net port %s in non-QMI modem", name); + force_ignored = TRUE; + goto grab_port; + } #else - if (port_type == MM_PORT_TYPE_NET && - g_strcmp0 (driver, "qmi_wwan") == 0) { - /* QMI net ports are ignored if QMI support not built */ - mm_obj_dbg (self, "ignoring QMI net port %s as QMI support isn't available", name); - force_ignored = TRUE; - goto grab_port; - } + if (port_type == MM_PORT_TYPE_NET && + g_strcmp0 (driver, "qmi_wwan") == 0) { + /* QMI net ports are ignored if QMI support not built */ + mm_obj_dbg (self, "ignoring QMI net port %s as QMI support isn't available", name); + force_ignored = TRUE; + goto grab_port; + } #endif + } + /* Force network ignore rules for devices that use cdc_mbim */ + if (drivers && g_strv_contains (drivers, "cdc_mbim")) { #if defined WITH_MBIM - if (MM_IS_BROADBAND_MODEM_MBIM (modem) && - port_type == MM_PORT_TYPE_NET && - g_strcmp0 (driver, "cdc_mbim") != 0) { - /* Non-MBIM net ports are ignored in MBIM modems */ - mm_obj_dbg (self, "ignoring non-MBIM net port %s in MBIM modem", name); - force_ignored = TRUE; - goto grab_port; - } + if (MM_IS_BROADBAND_MODEM_MBIM (modem) && + port_type == MM_PORT_TYPE_NET && + g_strcmp0 (driver, "cdc_mbim") != 0) { + /* Non-MBIM net ports are ignored in MBIM modems */ + mm_obj_dbg (self, "ignoring non-MBIM net port %s in MBIM modem", name); + force_ignored = TRUE; + goto grab_port; + } - if (!MM_IS_BROADBAND_MODEM_MBIM (modem) && - port_type == MM_PORT_TYPE_NET && - g_strcmp0 (driver, "cdc_mbim") == 0) { - /* MBIM net ports are ignored in non-MBIM modems */ - mm_obj_dbg (self, "ignoring MBIM net port %s in non-MBIM modem", name); - force_ignored = TRUE; - goto grab_port; - } + if (!MM_IS_BROADBAND_MODEM_MBIM (modem) && + port_type == MM_PORT_TYPE_NET && + g_strcmp0 (driver, "cdc_mbim") == 0) { + /* MBIM net ports are ignored in non-MBIM modems */ + mm_obj_dbg (self, "ignoring MBIM net port %s in non-MBIM modem", name); + force_ignored = TRUE; + goto grab_port; + } #else - if (port_type == MM_PORT_TYPE_NET && - g_strcmp0 (driver, "cdc_mbim") == 0) { - mm_obj_dbg (self, "ignoring MBIM net port %s as MBIM support isn't available", name); - force_ignored = TRUE; - goto grab_port; - } + if (port_type == MM_PORT_TYPE_NET && + g_strcmp0 (driver, "cdc_mbim") == 0) { + mm_obj_dbg (self, "ignoring MBIM net port %s as MBIM support isn't available", name); + force_ignored = TRUE; + goto grab_port; + } #endif + } grab_port: if (force_ignored) diff -Nru modemmanager-1.14.10/src/mm-plugin.h modemmanager-1.16.6/src/mm-plugin.h --- modemmanager-1.14.10/src/mm-plugin.h 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-plugin.h 2021-06-06 21:40:59.000000000 +0800 @@ -126,6 +126,7 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC (MMPlugin, g_object_unref) const gchar *mm_plugin_get_name (MMPlugin *self); +const gchar **mm_plugin_get_allowed_subsystems (MMPlugin *self); const gchar **mm_plugin_get_allowed_udev_tags (MMPlugin *self); const guint16 *mm_plugin_get_allowed_vendor_ids (MMPlugin *self); const mm_uint16_pair *mm_plugin_get_allowed_product_ids (MMPlugin *self); diff -Nru modemmanager-1.14.10/src/mm-port-mbim.c modemmanager-1.16.6/src/mm-port-mbim.c --- modemmanager-1.14.10/src/mm-port-mbim.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-port-mbim.c 2021-06-06 21:40:59.000000000 +0800 @@ -589,11 +589,12 @@ /*****************************************************************************/ MMPortMbim * -mm_port_mbim_new (const gchar *name) +mm_port_mbim_new (const gchar *name, + MMPortSubsys subsys) { return MM_PORT_MBIM (g_object_new (MM_TYPE_PORT_MBIM, MM_PORT_DEVICE, name, - MM_PORT_SUBSYS, MM_PORT_SUBSYS_USB, + MM_PORT_SUBSYS, subsys, MM_PORT_TYPE, MM_PORT_TYPE_MBIM, NULL)); } diff -Nru modemmanager-1.14.10/src/mm-port-mbim.h modemmanager-1.16.6/src/mm-port-mbim.h --- modemmanager-1.14.10/src/mm-port-mbim.h 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-port-mbim.h 2021-06-06 21:40:59.000000000 +0800 @@ -53,7 +53,8 @@ GType mm_port_mbim_get_type (void); G_DEFINE_AUTOPTR_CLEANUP_FUNC (MMPortMbim, g_object_unref) -MMPortMbim *mm_port_mbim_new (const gchar *name); +MMPortMbim *mm_port_mbim_new (const gchar *name, + MMPortSubsys subsys); void mm_port_mbim_open (MMPortMbim *self, #if defined WITH_QMI && QMI_MBIM_QMUX_SUPPORTED diff -Nru modemmanager-1.14.10/src/mm-port-probe.c modemmanager-1.16.6/src/mm-port-probe.c --- modemmanager-1.14.10/src/mm-port-probe.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-port-probe.c 2021-06-06 21:40:59.000000000 +0800 @@ -101,6 +101,8 @@ gboolean maybe_at_secondary; gboolean maybe_at_ppp; gboolean maybe_qcdm; + gboolean maybe_qmi; + gboolean maybe_mbim; /* Current probing task. Only one can be available at a time */ GTask *task; @@ -489,15 +491,22 @@ ctx = g_task_get_task_data (self->priv->task); #if defined WITH_QMI - mm_obj_dbg (self, "probing QMI..."); + { + MMPortSubsys subsys = MM_PORT_SUBSYS_USBMISC; - /* Create a port and try to open it */ - ctx->port_qmi = mm_port_qmi_new (mm_kernel_device_get_name (self->priv->port)); - mm_port_qmi_open (ctx->port_qmi, - FALSE, - NULL, - (GAsyncReadyCallback) port_qmi_open_ready, - self); + mm_obj_dbg (self, "probing QMI..."); + + if (g_str_equal (mm_kernel_device_get_subsystem (self->priv->port), "rpmsg")) + subsys = MM_PORT_SUBSYS_RPMSG; + + /* Create a port and try to open it */ + ctx->port_qmi = mm_port_qmi_new (mm_kernel_device_get_name (self->priv->port), subsys); + mm_port_qmi_open (ctx->port_qmi, + FALSE, + NULL, + (GAsyncReadyCallback) port_qmi_open_ready, + self); + } #else /* If not compiled with QMI support, just assume we won't have any QMI port */ mm_port_probe_set_result_qmi (self, FALSE); @@ -564,7 +573,8 @@ mm_obj_dbg (self, "probing MBIM..."); /* Create a port and try to open it */ - ctx->mbim_port = mm_port_mbim_new (mm_kernel_device_get_name (self->priv->port)); + ctx->mbim_port = mm_port_mbim_new (mm_kernel_device_get_name (self->priv->port), + MM_PORT_SUBSYS_USBMISC); mm_port_mbim_open (ctx->mbim_port, #if defined WITH_QMI && QMI_MBIM_QMUX_SUPPORTED FALSE, /* Don't check QMI over MBIM support at this stage */ @@ -720,6 +730,8 @@ gint len; guint8 marker = 0x7E; PortProbeRunContext *ctx; + MMPortSubsys subsys = MM_PORT_SUBSYS_TTY; + g_assert (self->priv->task); ctx = g_task_get_task_data (self->priv->task); @@ -742,8 +754,11 @@ g_object_unref (ctx->serial); } + if (g_str_equal (mm_kernel_device_get_subsystem (self->priv->port), "wwan")) + subsys = MM_PORT_SUBSYS_WWAN; + /* Open the QCDM port */ - ctx->serial = MM_PORT_SERIAL (mm_port_serial_qcdm_new (mm_kernel_device_get_name (self->priv->port))); + ctx->serial = MM_PORT_SERIAL (mm_port_serial_qcdm_new (mm_kernel_device_get_name (self->priv->port), subsys)); if (!ctx->serial) { port_probe_task_return_error (self, g_error_new (MM_CORE_ERROR, @@ -1267,8 +1282,12 @@ gpointer parser; MMPortSubsys subsys = MM_PORT_SUBSYS_TTY; - if (g_str_has_prefix (mm_kernel_device_get_subsystem (self->priv->port), "usb")) - subsys = MM_PORT_SUBSYS_USB; + if (g_str_equal (mm_kernel_device_get_subsystem (self->priv->port), "usbmisc")) + subsys = MM_PORT_SUBSYS_USBMISC; + else if (g_str_equal (mm_kernel_device_get_subsystem (self->priv->port), "rpmsg")) + subsys = MM_PORT_SUBSYS_RPMSG; + else if (g_str_equal (mm_kernel_device_get_subsystem (self->priv->port), "wwan")) + subsys = MM_PORT_SUBSYS_WWAN; ctx->serial = MM_PORT_SERIAL (mm_port_serial_at_new (mm_kernel_device_get_name (self->priv->port), subsys)); if (!ctx->serial) { @@ -1428,30 +1447,54 @@ return; } - /* If this is a port flagged as a GPS port, don't do any AT or QCDM probing */ + /* If this is a port flagged as a GPS port, don't do any other probing */ if (self->priv->is_gps) { mm_obj_dbg (self, "GPS port detected"); - mm_port_probe_set_result_at (self, FALSE); + mm_port_probe_set_result_at (self, FALSE); mm_port_probe_set_result_qcdm (self, FALSE); + mm_port_probe_set_result_qmi (self, FALSE); + mm_port_probe_set_result_mbim (self, FALSE); } - /* If this is a port flagged as an audio port, don't do any AT or QCDM probing */ + /* If this is a port flagged as an audio port, don't do any other probing */ if (self->priv->is_audio) { mm_obj_dbg (self, "audio port detected"); - mm_port_probe_set_result_at (self, FALSE); + mm_port_probe_set_result_at (self, FALSE); mm_port_probe_set_result_qcdm (self, FALSE); + mm_port_probe_set_result_qmi (self, FALSE); + mm_port_probe_set_result_mbim (self, FALSE); } - /* If this is a port flagged as being an AT port, don't do any QCDM probing */ + /* If this is a port flagged as being an AT port, don't do any other probing */ if (self->priv->maybe_at_primary || self->priv->maybe_at_secondary || self->priv->maybe_at_ppp) { - mm_obj_dbg (self, "no QCDM probing in possible AT port"); + mm_obj_dbg (self, "no QCDM/QMI/MBIM probing in possible AT port"); mm_port_probe_set_result_qcdm (self, FALSE); + mm_port_probe_set_result_qmi (self, FALSE); + mm_port_probe_set_result_mbim (self, FALSE); } - /* If this is a port flagged as being a QCDM port, don't do any AT probing */ + /* If this is a port flagged as being a QCDM port, don't do any other probing */ if (self->priv->maybe_qcdm) { - mm_obj_dbg (self, "no AT probing in possible QCDM port"); - mm_port_probe_set_result_at (self, FALSE); + mm_obj_dbg (self, "no AT/QMI/MBIM probing in possible QCDM port"); + mm_port_probe_set_result_at (self, FALSE); + mm_port_probe_set_result_qmi (self, FALSE); + mm_port_probe_set_result_mbim (self, FALSE); + } + + /* If this is a port flagged as being a QMI port, don't do any other probing */ + if (self->priv->maybe_qmi) { + mm_obj_dbg (self, "no AT/QCDM/MBIM probing in possible QMI port"); + mm_port_probe_set_result_at (self, FALSE); + mm_port_probe_set_result_qcdm (self, FALSE); + mm_port_probe_set_result_mbim (self, FALSE); + } + + /* If this is a port flagged as being a MBIM port, don't do any other probing */ + if (self->priv->maybe_mbim) { + mm_obj_dbg (self, "no AT/QCDM/QMI probing in possible MBIM port"); + mm_port_probe_set_result_at (self, FALSE); + mm_port_probe_set_result_qcdm (self, FALSE); + mm_port_probe_set_result_qmi (self, FALSE); } /* Check if we already have the requested probing results. @@ -1543,18 +1586,8 @@ gboolean mm_port_probe_is_qcdm (MMPortProbe *self) { - const gchar *subsys; - const gchar *name; - g_return_val_if_fail (MM_IS_PORT_PROBE (self), FALSE); - subsys = mm_kernel_device_get_subsystem (self->priv->port); - name = mm_kernel_device_get_name (self->priv->port); - if (g_str_equal (subsys, "net") || - (g_str_has_prefix (subsys, "usb") && - g_str_has_prefix (name, "cdc-wdm"))) - return FALSE; - return (self->priv->flags & MM_PORT_PROBE_QCDM ? self->priv->is_qcdm : FALSE); @@ -1563,19 +1596,11 @@ gboolean mm_port_probe_is_qmi (MMPortProbe *self) { - const gchar *subsys; - const gchar *name; - g_return_val_if_fail (MM_IS_PORT_PROBE (self), FALSE); - subsys = mm_kernel_device_get_subsystem (self->priv->port); - name = mm_kernel_device_get_name (self->priv->port); - if (!g_str_has_prefix (subsys, "usb") || - !name || - !g_str_has_prefix (name, "cdc-wdm")) - return FALSE; - - return self->priv->is_qmi; + return (self->priv->flags & MM_PORT_PROBE_QMI ? + self->priv->is_qmi : + FALSE); } gboolean @@ -1597,19 +1622,11 @@ gboolean mm_port_probe_is_mbim (MMPortProbe *self) { - const gchar *subsys; - const gchar *name; - g_return_val_if_fail (MM_IS_PORT_PROBE (self), FALSE); - subsys = mm_kernel_device_get_subsystem (self->priv->port); - name = mm_kernel_device_get_name (self->priv->port); - if (!g_str_has_prefix (subsys, "usb") || - !name || - !g_str_has_prefix (name, "cdc-wdm")) - return FALSE; - - return self->priv->is_mbim; + return (self->priv->flags & MM_PORT_PROBE_MBIM ? + self->priv->is_mbim : + FALSE); } gboolean @@ -1640,21 +1657,17 @@ if (g_str_equal (subsys, "net")) return MM_PORT_TYPE_NET; - if (g_str_has_prefix (subsys, "usb")) { - const gchar *name; - - name = mm_kernel_device_get_name (self->priv->port); - if (g_str_has_prefix (name, "cdc-wdm")) { #if defined WITH_QMI - if (self->priv->is_qmi) - return MM_PORT_TYPE_QMI; + if (self->priv->flags & MM_PORT_PROBE_QMI && + self->priv->is_qmi) + return MM_PORT_TYPE_QMI; #endif + #if defined WITH_MBIM - if (self->priv->is_mbim) - return MM_PORT_TYPE_MBIM; + if (self->priv->flags & MM_PORT_PROBE_MBIM && + self->priv->is_mbim) + return MM_PORT_TYPE_MBIM; #endif - } - } if (self->priv->flags & MM_PORT_PROBE_QCDM && self->priv->is_qcdm) @@ -1708,18 +1721,8 @@ const gchar * mm_port_probe_get_vendor (MMPortProbe *self) { - const gchar *subsys; - const gchar *name; - g_return_val_if_fail (MM_IS_PORT_PROBE (self), FALSE); - subsys = mm_kernel_device_get_subsystem (self->priv->port); - name = mm_kernel_device_get_name (self->priv->port); - if (g_str_equal (subsys, "net") || - (g_str_has_prefix (subsys, "usb") && - g_str_has_prefix (name, "cdc-wdm"))) - return NULL; - return (self->priv->flags & MM_PORT_PROBE_AT_VENDOR ? self->priv->vendor : NULL); @@ -1728,18 +1731,8 @@ const gchar * mm_port_probe_get_product (MMPortProbe *self) { - const gchar *subsys; - const gchar *name; - g_return_val_if_fail (MM_IS_PORT_PROBE (self), FALSE); - subsys = mm_kernel_device_get_subsystem (self->priv->port); - name = mm_kernel_device_get_name (self->priv->port); - if (g_str_equal (subsys, "net") || - (g_str_has_prefix (subsys, "usb") && - g_str_has_prefix (name, "cdc-wdm"))) - return NULL; - return (self->priv->flags & MM_PORT_PROBE_AT_PRODUCT ? self->priv->product : NULL); @@ -1750,9 +1743,6 @@ { g_return_val_if_fail (MM_IS_PORT_PROBE (self), FALSE); - if (g_str_equal (mm_kernel_device_get_subsystem (self->priv->port), "net")) - return FALSE; - return (self->priv->flags & MM_PORT_PROBE_AT_ICERA ? self->priv->is_icera : FALSE); @@ -1776,9 +1766,6 @@ { g_return_val_if_fail (MM_IS_PORT_PROBE (self), FALSE); - if (g_str_equal (mm_kernel_device_get_subsystem (self->priv->port), "net")) - return FALSE; - return (self->priv->flags & MM_PORT_PROBE_AT_XMM ? self->priv->is_xmm : FALSE); @@ -1875,6 +1862,8 @@ self->priv->maybe_at_secondary = mm_kernel_device_get_property_as_boolean (self->priv->port, ID_MM_PORT_TYPE_AT_SECONDARY); self->priv->maybe_at_ppp = mm_kernel_device_get_property_as_boolean (self->priv->port, ID_MM_PORT_TYPE_AT_PPP); self->priv->maybe_qcdm = mm_kernel_device_get_property_as_boolean (self->priv->port, ID_MM_PORT_TYPE_QCDM); + self->priv->maybe_qmi = mm_kernel_device_get_property_as_boolean (self->priv->port, ID_MM_PORT_TYPE_QMI); + self->priv->maybe_mbim = mm_kernel_device_get_property_as_boolean (self->priv->port, ID_MM_PORT_TYPE_MBIM); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); diff -Nru modemmanager-1.14.10/src/mm-port-qmi.c modemmanager-1.16.6/src/mm-port-qmi.c --- modemmanager-1.14.10/src/mm-port-qmi.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-port-qmi.c 2021-06-06 21:40:59.000000000 +0800 @@ -234,7 +234,7 @@ PORT_OPEN_STEP_ALLOCATE_WDA_CLIENT, PORT_OPEN_STEP_GET_WDA_DATA_FORMAT, PORT_OPEN_STEP_CHECK_DATA_FORMAT, - PORT_OPEN_STEP_SET_KERNEL_DATA_FORMAT, + PORT_OPEN_STEP_SYNC_DATA_FORMAT, PORT_OPEN_STEP_CLOSE_BEFORE_OPEN_WITH_DATA_FORMAT, PORT_OPEN_STEP_OPEN_WITH_DATA_FORMAT, PORT_OPEN_STEP_LAST @@ -294,29 +294,35 @@ GAsyncResult *res, GTask *task) { - MMPortQmi *self; - GError *error = NULL; + MMPortQmi *self; + g_autoptr(GError) error = NULL; self = g_task_get_source_object (task); - if (!qmi_device_close_finish (qmi_device, res, &error)) { + if (!qmi_device_close_finish (qmi_device, res, &error)) mm_obj_warn (self, "Couldn't close QMI device after failed open sequence: %s", error->message); - g_error_free (error); - } port_open_complete_with_error (task); } static void -qmi_device_open_second_ready (QmiDevice *qmi_device, +qmi_device_open_second_ready (QmiDevice *qmi_device, GAsyncResult *res, - GTask *task) + GTask *task) { + MMPortQmi *self; PortOpenContext *ctx; - ctx = g_task_get_task_data (task); + self = g_task_get_source_object (task); + ctx = g_task_get_task_data (task); - qmi_device_open_finish (qmi_device, res, &ctx->error); + if (qmi_device_open_finish (qmi_device, res, &ctx->error)) { + /* If the open with CTL data format is sucessful, update */ + if (ctx->kernel_data_format == QMI_DEVICE_EXPECTED_DATA_FORMAT_RAW_IP) + self->priv->llp_is_raw_ip = TRUE; + else + self->priv->llp_is_raw_ip = FALSE; + } /* In both error and success, we go to last step */ ctx->step = PORT_OPEN_STEP_LAST; @@ -343,17 +349,44 @@ } static void +set_data_format_ready (QmiClientWda *client, + GAsyncResult *res, + GTask *task) +{ + MMPortQmi *self; + PortOpenContext *ctx; + g_autoptr(QmiMessageWdaSetDataFormatOutput) output = NULL; + g_autoptr(GError) error = NULL; + + self = g_task_get_source_object (task); + ctx = g_task_get_task_data (task); + + output = qmi_client_wda_set_data_format_finish (client, res, &error); + if (!output || !qmi_message_wda_set_data_format_output_get_result (output, &error)) { + mm_obj_warn (self, "Couldn't set data format: %s", error->message); + /* If setting WDA data format fails, fallback to LLP requested via CTL */ + ctx->step = PORT_OPEN_STEP_CLOSE_BEFORE_OPEN_WITH_DATA_FORMAT; + } else { + self->priv->llp_is_raw_ip = TRUE; + ctx->step = PORT_OPEN_STEP_LAST; + } + + port_open_step (task); +} + +static void get_data_format_ready (QmiClientWda *client, GAsyncResult *res, - GTask *task) + GTask *task) { - MMPortQmi *self; - PortOpenContext *ctx; - QmiMessageWdaGetDataFormatOutput *output; - g_autoptr(GError) error = NULL; + MMPortQmi *self; + PortOpenContext *ctx; + g_autoptr(QmiMessageWdaGetDataFormatOutput) output = NULL; + g_autoptr(GError) error = NULL; self = g_task_get_source_object (task); - ctx = g_task_get_task_data (task); + ctx = g_task_get_task_data (task); + output = qmi_client_wda_get_data_format_finish (client, res, NULL); if (!output || !qmi_message_wda_get_data_format_output_get_result (output, &error) || @@ -374,20 +407,18 @@ /* Go on to next step */ ctx->step++; - if (output) - qmi_message_wda_get_data_format_output_unref (output); - port_open_step (task); } static void -allocate_client_wda_ready (QmiDevice *device, +allocate_client_wda_ready (QmiDevice *device, GAsyncResult *res, - GTask *task) + GTask *task) { PortOpenContext *ctx; ctx = g_task_get_task_data (task); + ctx->wda = qmi_device_allocate_client_finish (device, res, NULL); if (!ctx->wda) { /* If no WDA supported, then we just fallback to reopening explicitly @@ -403,13 +434,14 @@ } static void -qmi_device_open_first_ready (QmiDevice *qmi_device, +qmi_device_open_first_ready (QmiDevice *qmi_device, GAsyncResult *res, - GTask *task) + GTask *task) { PortOpenContext *ctx; ctx = g_task_get_task_data (task); + if (!qmi_device_open_finish (qmi_device, res, &ctx->error)) /* Error opening the device */ ctx->step = PORT_OPEN_STEP_LAST; @@ -446,7 +478,7 @@ static void port_open_step (GTask *task) { - MMPortQmi *self; + MMPortQmi *self; PortOpenContext *ctx; self = g_task_get_source_object (task); @@ -509,22 +541,32 @@ qmi_device_open (ctx->device, (QMI_DEVICE_OPEN_FLAGS_VERSION_INFO | QMI_DEVICE_OPEN_FLAGS_PROXY), - 25, + 45, g_task_get_cancellable (task), (GAsyncReadyCallback) qmi_device_open_first_ready, task); return; case PORT_OPEN_STEP_GET_KERNEL_DATA_FORMAT: - mm_obj_dbg (self, "Querying kernel data format..."); - /* Try to gather expected data format from the sysfs file */ - ctx->kernel_data_format = qmi_device_get_expected_data_format (ctx->device, NULL); - /* If data format cannot be retrieved, we fallback to 802.3 via CTL */ - if (ctx->kernel_data_format == QMI_DEVICE_EXPECTED_DATA_FORMAT_UNKNOWN) { - ctx->step = PORT_OPEN_STEP_CLOSE_BEFORE_OPEN_WITH_DATA_FORMAT; - port_open_step (task); - return; + /* Querying kernel data format is only expected when using qmi_wwan */ + if (mm_port_get_subsys (MM_PORT (self)) == MM_PORT_SUBSYS_USBMISC) { + mm_obj_dbg (self, "Querying kernel data format..."); + /* Try to gather expected data format from the sysfs file */ + ctx->kernel_data_format = qmi_device_get_expected_data_format (ctx->device, NULL); + /* If data format cannot be retrieved, we fallback to 802.3 via CTL */ + if (ctx->kernel_data_format == QMI_DEVICE_EXPECTED_DATA_FORMAT_UNKNOWN) { + ctx->step = PORT_OPEN_STEP_CLOSE_BEFORE_OPEN_WITH_DATA_FORMAT; + port_open_step (task); + return; + } + } + /* For any driver other than qmi_wwan, assume raw-ip */ + else { + ctx->kernel_data_format = QMI_DEVICE_EXPECTED_DATA_FORMAT_RAW_IP; + mm_obj_dbg (self, "Assuming default kernel data format: %s", + qmi_device_expected_data_format_get_string (ctx->kernel_data_format)); } + ctx->step++; /* Fall through */ @@ -542,7 +584,6 @@ case PORT_OPEN_STEP_GET_WDA_DATA_FORMAT: /* If we have WDA client, query current data format */ - g_assert (ctx->wda); mm_obj_dbg (self, "Querying device data format..."); qmi_client_wda_get_data_format (QMI_CLIENT_WDA (ctx->wda), NULL, @@ -578,8 +619,26 @@ ctx->step++; /* Fall through */ - case PORT_OPEN_STEP_SET_KERNEL_DATA_FORMAT: - /* Update the data format to be expected by the kernel */ + case PORT_OPEN_STEP_SYNC_DATA_FORMAT: + /* For drivers other than qmi_wwan, the kernel data format was raw-ip + * by default, we need to ask the module to switch to it */ + if (mm_port_get_subsys (MM_PORT (self)) != MM_PORT_SUBSYS_USBMISC) { + g_autoptr(QmiMessageWdaSetDataFormatInput) input = NULL; + + g_assert (ctx->kernel_data_format == QMI_DEVICE_EXPECTED_DATA_FORMAT_RAW_IP); + input = qmi_message_wda_set_data_format_input_new (); + qmi_message_wda_set_data_format_input_set_link_layer_protocol (input, QMI_WDA_LINK_LAYER_PROTOCOL_RAW_IP, NULL); + qmi_client_wda_set_data_format (QMI_CLIENT_WDA (ctx->wda), + input, + 10, + g_task_get_cancellable (task), + (GAsyncReadyCallback) set_data_format_ready, + task); + return; + } + + /* If using the qmi_wwan driver, we ask the kernel to sync with the + * data format requested by the module */ mm_obj_dbg (self, "Updating kernel data format: %s", qmi_wda_link_layer_protocol_get_string (ctx->llp)); if (ctx->llp == QMI_WDA_LINK_LAYER_PROTOCOL_802_3) { ctx->kernel_data_format = QMI_DEVICE_EXPECTED_DATA_FORMAT_802_3; @@ -599,6 +658,7 @@ return; case PORT_OPEN_STEP_CLOSE_BEFORE_OPEN_WITH_DATA_FORMAT: + /* This fallback only applies when WDA unsupported */ mm_obj_dbg (self, "Closing device to reopen it right away..."); qmi_device_close_async (ctx->device, 5, @@ -607,19 +667,30 @@ task); return; - case PORT_OPEN_STEP_OPEN_WITH_DATA_FORMAT: - /* Need to reopen setting 802.3 using CTL */ - mm_obj_dbg (self, "Reopening device with data format..."); + case PORT_OPEN_STEP_OPEN_WITH_DATA_FORMAT: { + QmiDeviceOpenFlags open_flags; + + /* Common open flags */ + open_flags = (QMI_DEVICE_OPEN_FLAGS_VERSION_INFO | + QMI_DEVICE_OPEN_FLAGS_PROXY | + QMI_DEVICE_OPEN_FLAGS_NET_NO_QOS_HEADER); + + /* Need to reopen setting 802.3/raw-ip using CTL */ + if (ctx->kernel_data_format == QMI_DEVICE_EXPECTED_DATA_FORMAT_RAW_IP) + open_flags |= QMI_DEVICE_OPEN_FLAGS_NET_RAW_IP; + else + open_flags |= QMI_DEVICE_OPEN_FLAGS_NET_802_3; + + mm_obj_dbg (self, "Reopening device with data format: %s...", + qmi_device_expected_data_format_get_string (ctx->kernel_data_format)); qmi_device_open (ctx->device, - (QMI_DEVICE_OPEN_FLAGS_VERSION_INFO | - QMI_DEVICE_OPEN_FLAGS_PROXY | - QMI_DEVICE_OPEN_FLAGS_NET_802_3 | - QMI_DEVICE_OPEN_FLAGS_NET_NO_QOS_HEADER), + open_flags, 10, g_task_get_cancellable (task), (GAsyncReadyCallback) qmi_device_open_second_ready, task); return; + } case PORT_OPEN_STEP_LAST: if (ctx->error) { @@ -655,26 +726,23 @@ } void -mm_port_qmi_open (MMPortQmi *self, - gboolean set_data_format, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) +mm_port_qmi_open (MMPortQmi *self, + gboolean set_data_format, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) { PortOpenContext *ctx; - GTask *task; - - g_return_if_fail (MM_IS_PORT_QMI (self)); + GTask *task; ctx = g_slice_new0 (PortOpenContext); ctx->step = PORT_OPEN_STEP_FIRST; ctx->set_data_format = set_data_format; - ctx->kernel_data_format = QMI_DEVICE_EXPECTED_DATA_FORMAT_UNKNOWN; ctx->llp = QMI_WDA_LINK_LAYER_PROTOCOL_UNKNOWN; + ctx->kernel_data_format = QMI_DEVICE_EXPECTED_DATA_FORMAT_UNKNOWN; task = g_task_new (self, cancellable, callback, user_data); g_task_set_task_data (task, ctx, (GDestroyNotify)port_open_context_free); - port_open_step (task); } @@ -788,11 +856,12 @@ /*****************************************************************************/ MMPortQmi * -mm_port_qmi_new (const gchar *name) +mm_port_qmi_new (const gchar *name, + MMPortSubsys subsys) { return MM_PORT_QMI (g_object_new (MM_TYPE_PORT_QMI, MM_PORT_DEVICE, name, - MM_PORT_SUBSYS, MM_PORT_SUBSYS_USB, + MM_PORT_SUBSYS, subsys, MM_PORT_TYPE, MM_PORT_TYPE_QMI, NULL)); } diff -Nru modemmanager-1.14.10/src/mm-port-qmi.h modemmanager-1.16.6/src/mm-port-qmi.h --- modemmanager-1.14.10/src/mm-port-qmi.h 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-port-qmi.h 2021-06-06 21:40:59.000000000 +0800 @@ -47,23 +47,23 @@ GType mm_port_qmi_get_type (void); G_DEFINE_AUTOPTR_CLEANUP_FUNC (MMPortQmi, g_object_unref) -MMPortQmi *mm_port_qmi_new (const gchar *name); - -void mm_port_qmi_open (MMPortQmi *self, - gboolean set_data_format, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); -gboolean mm_port_qmi_open_finish (MMPortQmi *self, - GAsyncResult *res, - GError **error); -gboolean mm_port_qmi_is_open (MMPortQmi *self); -void mm_port_qmi_close (MMPortQmi *self, - GAsyncReadyCallback callback, - gpointer user_data); -gboolean mm_port_qmi_close_finish (MMPortQmi *self, - GAsyncResult *res, - GError **error); +MMPortQmi *mm_port_qmi_new (const gchar *name, + MMPortSubsys subsys); +void mm_port_qmi_open (MMPortQmi *self, + gboolean set_data_format, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean mm_port_qmi_open_finish (MMPortQmi *self, + GAsyncResult *res, + GError **error); +gboolean mm_port_qmi_is_open (MMPortQmi *self); +void mm_port_qmi_close (MMPortQmi *self, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean mm_port_qmi_close_finish (MMPortQmi *self, + GAsyncResult *res, + GError **error); typedef enum { MM_PORT_QMI_FLAG_DEFAULT = 0, diff -Nru modemmanager-1.14.10/src/mm-port-serial-at.c modemmanager-1.16.6/src/mm-port-serial-at.c --- modemmanager-1.14.10/src/mm-port-serial-at.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-port-serial-at.c 2021-06-06 21:40:59.000000000 +0800 @@ -473,6 +473,8 @@ { g_return_if_fail (self != NULL); g_return_if_fail (MM_IS_PORT_SERIAL_AT (self)); + + /* MM_PORT_SERIAL_AT_FLAG_NONE_NO_GENERIC is not expected */ g_return_if_fail (flags <= (MM_PORT_SERIAL_AT_FLAG_PRIMARY | MM_PORT_SERIAL_AT_FLAG_SECONDARY | MM_PORT_SERIAL_AT_FLAG_PPP | @@ -527,17 +529,13 @@ /*****************************************************************************/ MMPortSerialAt * -mm_port_serial_at_new (const char *name, - MMPortSubsys subsys) +mm_port_serial_at_new (const char *name, + MMPortSubsys subsys) { - g_return_val_if_fail (subsys == MM_PORT_SUBSYS_TTY || - subsys == MM_PORT_SUBSYS_USB || - subsys == MM_PORT_SUBSYS_UNIX, NULL); - return MM_PORT_SERIAL_AT (g_object_new (MM_TYPE_PORT_SERIAL_AT, MM_PORT_DEVICE, name, MM_PORT_SUBSYS, subsys, - MM_PORT_TYPE, MM_PORT_TYPE_AT, + MM_PORT_TYPE, MM_PORT_TYPE_AT, NULL)); } diff -Nru modemmanager-1.14.10/src/mm-port-serial-at.h modemmanager-1.16.6/src/mm-port-serial-at.h --- modemmanager-1.14.10/src/mm-port-serial-at.h 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-port-serial-at.h 2021-06-06 21:40:59.000000000 +0800 @@ -42,15 +42,18 @@ * only when connecting is port 0 opened for dialing (ATD) and PPP */ typedef enum { /*< underscore_name=mm_port_serial_at_flag >*/ - MM_PORT_SERIAL_AT_FLAG_NONE = 0, + MM_PORT_SERIAL_AT_FLAG_NONE = 0, /* This port is preferred for command and status */ - MM_PORT_SERIAL_AT_FLAG_PRIMARY = 1 << 0, + MM_PORT_SERIAL_AT_FLAG_PRIMARY = 1 << 0, /* Use port for command and status if the primary port is connected */ - MM_PORT_SERIAL_AT_FLAG_SECONDARY = 1 << 1, + MM_PORT_SERIAL_AT_FLAG_SECONDARY = 1 << 1, /* This port should be used for PPP */ - MM_PORT_SERIAL_AT_FLAG_PPP = 1 << 2, + MM_PORT_SERIAL_AT_FLAG_PPP = 1 << 2, /* This port should be used for GPS control */ - MM_PORT_SERIAL_AT_FLAG_GPS_CONTROL = 1 << 3, + MM_PORT_SERIAL_AT_FLAG_GPS_CONTROL = 1 << 3, + /* Helper flag to allow plugins specify that generic tags shouldn't be + * applied */ + MM_PORT_SERIAL_AT_FLAG_NONE_NO_GENERIC = 1 << 4, } MMPortSerialAtFlag; typedef gboolean (*MMPortSerialAtResponseParserFn) (gpointer user_data, diff -Nru modemmanager-1.14.10/src/mm-port-serial-qcdm.c modemmanager-1.16.6/src/mm-port-serial-qcdm.c --- modemmanager-1.14.10/src/mm-port-serial-qcdm.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-port-serial-qcdm.c 2021-06-06 21:40:59.000000000 +0800 @@ -350,11 +350,12 @@ /*****************************************************************************/ MMPortSerialQcdm * -mm_port_serial_qcdm_new (const char *name) +mm_port_serial_qcdm_new (const char *name, + MMPortSubsys subsys) { return MM_PORT_SERIAL_QCDM (g_object_new (MM_TYPE_PORT_SERIAL_QCDM, MM_PORT_DEVICE, name, - MM_PORT_SUBSYS, MM_PORT_SUBSYS_TTY, + MM_PORT_SUBSYS, subsys, MM_PORT_TYPE, MM_PORT_TYPE_QCDM, MM_PORT_SERIAL_SEND_DELAY, (guint64) 0, NULL)); diff -Nru modemmanager-1.14.10/src/mm-port-serial-qcdm.h modemmanager-1.16.6/src/mm-port-serial-qcdm.h --- modemmanager-1.14.10/src/mm-port-serial-qcdm.h 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-port-serial-qcdm.h 2021-06-06 21:40:59.000000000 +0800 @@ -45,7 +45,8 @@ GType mm_port_serial_qcdm_get_type (void); G_DEFINE_AUTOPTR_CLEANUP_FUNC (MMPortSerialQcdm, g_object_unref) -MMPortSerialQcdm *mm_port_serial_qcdm_new (const char *name); +MMPortSerialQcdm *mm_port_serial_qcdm_new (const char *name, + MMPortSubsys subsys); MMPortSerialQcdm *mm_port_serial_qcdm_new_fd (int fd); void mm_port_serial_qcdm_command (MMPortSerialQcdm *self, diff -Nru modemmanager-1.14.10/src/mm-port.h modemmanager-1.16.6/src/mm-port.h --- modemmanager-1.14.10/src/mm-port.h 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-port.h 2021-06-06 21:40:59.000000000 +0800 @@ -26,10 +26,11 @@ MM_PORT_SUBSYS_UNKNOWN = 0x0, MM_PORT_SUBSYS_TTY, MM_PORT_SUBSYS_NET, - MM_PORT_SUBSYS_USB, + MM_PORT_SUBSYS_USBMISC, MM_PORT_SUBSYS_UNIX, - - MM_PORT_SUBSYS_LAST = MM_PORT_SUBSYS_UNIX /*< skip >*/ + MM_PORT_SUBSYS_RPMSG, + MM_PORT_SUBSYS_WWAN, + MM_PORT_SUBSYS_LAST = MM_PORT_SUBSYS_WWAN /*< skip >*/ } MMPortSubsys; typedef enum { /*< underscore_name=mm_port_type >*/ diff -Nru modemmanager-1.14.10/src/mm-private-boxed-types.c modemmanager-1.16.6/src/mm-private-boxed-types.c --- modemmanager-1.14.10/src/mm-private-boxed-types.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-private-boxed-types.c 2021-06-06 21:40:59.000000000 +0800 @@ -37,18 +37,18 @@ GType mm_uint16_array_get_type (void) { - static volatile gsize g_define_type_id__volatile = 0; + static gsize g_define_type_id_initialized = 0; - if (g_once_init_enter (&g_define_type_id__volatile)) { + if (g_once_init_enter (&g_define_type_id_initialized)) { GType g_define_type_id = g_boxed_type_register_static (g_intern_static_string ("MMUint16Array"), (GBoxedCopyFunc) uint16_array_copy, (GBoxedFreeFunc) g_free); - g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + g_once_init_leave (&g_define_type_id_initialized, g_define_type_id); } - return g_define_type_id__volatile; + return g_define_type_id_initialized; } static mm_uint16_pair * @@ -72,18 +72,18 @@ GType mm_uint16_pair_array_get_type (void) { - static volatile gsize g_define_type_id__volatile = 0; + static gsize g_define_type_id_initialized = 0; - if (g_once_init_enter (&g_define_type_id__volatile)) { + if (g_once_init_enter (&g_define_type_id_initialized)) { GType g_define_type_id = g_boxed_type_register_static (g_intern_static_string ("MMUint16PairArray"), (GBoxedCopyFunc) uint16_pair_array_copy, (GBoxedFreeFunc) g_free); - g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + g_once_init_leave (&g_define_type_id_initialized, g_define_type_id); } - return g_define_type_id__volatile; + return g_define_type_id_initialized; } static void @@ -122,18 +122,18 @@ GType mm_str_pair_array_get_type (void) { - static volatile gsize g_define_type_id__volatile = 0; + static gsize g_define_type_id_initialized = 0; - if (g_once_init_enter (&g_define_type_id__volatile)) { + if (g_once_init_enter (&g_define_type_id_initialized)) { GType g_define_type_id = g_boxed_type_register_static (g_intern_static_string ("MMStrPairArray"), (GBoxedCopyFunc) str_pair_array_copy, (GBoxedFreeFunc) str_pair_array_free); - g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + g_once_init_leave (&g_define_type_id_initialized, g_define_type_id); } - return g_define_type_id__volatile; + return g_define_type_id_initialized; } static gpointer * @@ -157,18 +157,47 @@ GType mm_pointer_array_get_type (void) { - static volatile gsize g_define_type_id__volatile = 0; + static gsize g_define_type_id_initialized = 0; - if (g_once_init_enter (&g_define_type_id__volatile)) { + if (g_once_init_enter (&g_define_type_id_initialized)) { GType g_define_type_id = g_boxed_type_register_static (g_intern_static_string ("MMPointerArray"), (GBoxedCopyFunc) pointer_array_copy, (GBoxedFreeFunc) g_free); - g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + g_once_init_leave (&g_define_type_id_initialized, g_define_type_id); } - return g_define_type_id__volatile; + return g_define_type_id_initialized; +} + +static GPtrArray * +object_array_copy (GPtrArray *object_array) +{ + return g_ptr_array_ref (object_array); +} + +static void +object_array_free (GPtrArray *object_array) +{ + g_ptr_array_unref (object_array); +} + +GType +mm_object_array_get_type (void) +{ + static gsize g_define_type_id_initialized = 0; + + if (g_once_init_enter (&g_define_type_id_initialized)) { + GType g_define_type_id = + g_boxed_type_register_static (g_intern_static_string ("MMObjectArray"), + (GBoxedCopyFunc) object_array_copy, + (GBoxedFreeFunc) object_array_free); + + g_once_init_leave (&g_define_type_id_initialized, g_define_type_id); + } + + return g_define_type_id_initialized; } static void @@ -194,16 +223,16 @@ GType mm_async_method_get_type (void) { - static volatile gsize g_define_type_id__volatile = 0; + static gsize g_define_type_id_initialized = 0; - if (g_once_init_enter (&g_define_type_id__volatile)) { + if (g_once_init_enter (&g_define_type_id_initialized)) { GType g_define_type_id = g_boxed_type_register_static (g_intern_static_string ("MMAsyncMethod"), (GBoxedCopyFunc) async_method_copy, (GBoxedFreeFunc) async_method_free); - g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + g_once_init_leave (&g_define_type_id_initialized, g_define_type_id); } - return g_define_type_id__volatile; + return g_define_type_id_initialized; } diff -Nru modemmanager-1.14.10/src/mm-private-boxed-types.h modemmanager-1.16.6/src/mm-private-boxed-types.h --- modemmanager-1.14.10/src/mm-private-boxed-types.h 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-private-boxed-types.h 2021-06-06 21:40:59.000000000 +0800 @@ -34,6 +34,9 @@ GType mm_pointer_array_get_type (void) G_GNUC_CONST; #define MM_TYPE_POINTER_ARRAY (mm_pointer_array_get_type ()) +GType mm_object_array_get_type (void) G_GNUC_CONST; +#define MM_TYPE_OBJECT_ARRAY (mm_object_array_get_type ()) + typedef struct { GCallback async; GCallback finish; diff -Nru modemmanager-1.14.10/src/mm-serial-parsers.c modemmanager-1.16.6/src/mm-serial-parsers.c --- modemmanager-1.14.10/src/mm-serial-parsers.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-serial-parsers.c 2021-06-06 21:40:59.000000000 +0800 @@ -108,16 +108,16 @@ parser = g_slice_new (MMSerialParserV1); - parser->regex_ok = g_regex_new ("\\r\\nOK(\\r\\n)+$", flags, 0, NULL); + parser->regex_ok = g_regex_new ("\\r\\nOK(\\r\\n)+", flags, 0, NULL); parser->regex_connect = g_regex_new ("\\r\\nCONNECT.*\\r\\n", flags, 0, NULL); parser->regex_sms = g_regex_new ("\\r\\n>\\s*$", flags, 0, NULL); - parser->regex_cme_error = g_regex_new ("\\r\\n\\+CME ERROR:\\s*(\\d+)\\r\\n$", flags, 0, NULL); - parser->regex_cms_error = g_regex_new ("\\r\\n\\+CMS ERROR:\\s*(\\d+)\\r\\n$", flags, 0, NULL); - parser->regex_cme_error_str = g_regex_new ("\\r\\n\\+CME ERROR:\\s*([^\\n\\r]+)\\r\\n$", flags, 0, NULL); - parser->regex_cms_error_str = g_regex_new ("\\r\\n\\+CMS ERROR:\\s*([^\\n\\r]+)\\r\\n$", flags, 0, NULL); - parser->regex_ezx_error = g_regex_new ("\\r\\n\\MODEM ERROR:\\s*(\\d+)\\r\\n$", flags, 0, NULL); - parser->regex_unknown_error = g_regex_new ("\\r\\n(ERROR)|(COMMAND NOT SUPPORT)\\r\\n$", flags, 0, NULL); - parser->regex_connect_failed = g_regex_new ("\\r\\n(NO CARRIER)|(BUSY)|(NO ANSWER)|(NO DIALTONE)\\r\\n$", flags, 0, NULL); + parser->regex_cme_error = g_regex_new ("\\r\\n\\+CME ERROR:\\s*(\\d+)\\r\\n", flags, 0, NULL); + parser->regex_cms_error = g_regex_new ("\\r\\n\\+CMS ERROR:\\s*(\\d+)\\r\\n", flags, 0, NULL); + parser->regex_cme_error_str = g_regex_new ("\\r\\n\\+CME ERROR:\\s*([^\\n\\r]+)\\r\\n", flags, 0, NULL); + parser->regex_cms_error_str = g_regex_new ("\\r\\n\\+CMS ERROR:\\s*([^\\n\\r]+)\\r\\n", flags, 0, NULL); + parser->regex_ezx_error = g_regex_new ("\\r\\n\\MODEM ERROR:\\s*(\\d+)\\r\\n", flags, 0, NULL); + parser->regex_unknown_error = g_regex_new ("\\r\\n(ERROR)|(COMMAND NOT SUPPORT)\\r\\n", flags, 0, NULL); + parser->regex_connect_failed = g_regex_new ("\\r\\n(NO CARRIER)|(BUSY)|(NO ANSWER)|(NO DIALTONE)\\r\\n", flags, 0, NULL); /* Samsung Z810 may reply "NA" to report a not-available error */ parser->regex_na = g_regex_new ("\\r\\nNA\\r\\n", flags, 0, NULL); diff -Nru modemmanager-1.14.10/src/mm-shared-qmi.c modemmanager-1.16.6/src/mm-shared-qmi.c --- modemmanager-1.14.10/src/mm-shared-qmi.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-shared-qmi.c 2021-06-06 21:40:59.000000000 +0800 @@ -29,6 +29,7 @@ #include "mm-iface-modem.h" #include "mm-iface-modem-3gpp.h" #include "mm-iface-modem-location.h" +#include "mm-sim-qmi.h" #include "mm-shared-qmi.h" #include "mm-modem-helpers-qmi.h" @@ -70,9 +71,11 @@ /* Capabilities & modes helpers */ MMModemCapability current_capabilities; GArray *supported_radio_interfaces; - Feature feature_nas_technology_preference; - Feature feature_nas_system_selection_preference; - Feature feature_extended_lte_band_preference; + Feature feature_nas_tp; + Feature feature_nas_ssp; + Feature feature_nas_ssp_extended_lte_band_preference; + Feature feature_nas_ssp_acquisition_order_preference; + GArray *feature_nas_ssp_acquisition_order_preference_array; gboolean disable_4g_only_mode; GArray *supported_bands; @@ -91,6 +94,12 @@ gboolean config_active_default; GArray *config_list; gint config_active_i; + + /* Slot status monitoring */ + QmiClient *uim_client; + gulong uim_slot_status_indication_id; + gulong uim_refresh_indication_id; + guint uim_refresh_start_timeout_id; } Private; static void @@ -110,6 +119,16 @@ g_signal_handler_disconnect (priv->loc_client, priv->loc_location_nmea_indication_id); if (priv->loc_client) g_object_unref (priv->loc_client); + if (priv->uim_slot_status_indication_id) + g_signal_handler_disconnect (priv->uim_client, priv->uim_slot_status_indication_id); + if (priv->uim_refresh_indication_id) + g_signal_handler_disconnect (priv->uim_client, priv->uim_refresh_indication_id); + if (priv->uim_client) + g_object_unref (priv->uim_client); + if (priv->uim_refresh_start_timeout_id) + g_source_remove (priv->uim_refresh_start_timeout_id); + if (priv->feature_nas_ssp_acquisition_order_preference_array) + g_array_unref (priv->feature_nas_ssp_acquisition_order_preference_array); g_strfreev (priv->loc_assistance_data_servers); g_slice_free (Private, priv); } @@ -126,8 +145,10 @@ if (!priv) { priv = g_slice_new0 (Private); - priv->feature_nas_technology_preference = FEATURE_UNKNOWN; - priv->feature_nas_system_selection_preference = FEATURE_UNKNOWN; + priv->feature_nas_tp = FEATURE_UNKNOWN; + priv->feature_nas_ssp = FEATURE_UNKNOWN; + priv->feature_nas_ssp_extended_lte_band_preference = FEATURE_UNKNOWN; + priv->feature_nas_ssp_acquisition_order_preference = FEATURE_UNKNOWN; priv->config_active_i = -1; /* Setup parent class' MMIfaceModemLocation */ @@ -197,7 +218,7 @@ g_signal_handler_disconnect (ctx->client, ctx->serving_system_indication_id); ctx->serving_system_indication_id = 0; - g_assert (g_task_return_error_if_cancelled (task)); + g_task_return_error_if_cancelled (task); g_object_unref (task); } @@ -461,7 +482,7 @@ } priv = get_private (MM_SHARED_QMI (self)); - if (priv->feature_nas_system_selection_preference == FEATURE_SUPPORTED) + if (priv->feature_nas_ssp == FEATURE_SUPPORTED) register_in_network_sssp (task, client, cancellable, mcc, mnc); else register_in_network_inr (task, client, cancellable, mcc, mnc); @@ -673,8 +694,8 @@ switch (ctx->step) { case SET_CURRENT_CAPABILITIES_STEP_FIRST: /* Error out early if both unsupported */ - if ((priv->feature_nas_system_selection_preference != FEATURE_SUPPORTED) && - (priv->feature_nas_technology_preference != FEATURE_SUPPORTED)) { + if ((priv->feature_nas_ssp != FEATURE_SUPPORTED) && + (priv->feature_nas_tp != FEATURE_SUPPORTED)) { g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_UNSUPPORTED, "Setting capabilities is not supported by this device"); g_object_unref (task); @@ -684,7 +705,7 @@ /* fall-through */ case SET_CURRENT_CAPABILITIES_STEP_NAS_SYSTEM_SELECTION_PREFERENCE: - if (priv->feature_nas_system_selection_preference == FEATURE_SUPPORTED) { + if (priv->feature_nas_ssp == FEATURE_SUPPORTED) { set_current_capabilities_system_selection_preference (task); return; } @@ -692,7 +713,7 @@ /* fall-through */ case SET_CURRENT_CAPABILITIES_STEP_NAS_TECHNOLOGY_PREFERENCE: - if (priv->feature_nas_technology_preference == FEATURE_SUPPORTED) { + if (priv->feature_nas_tp == FEATURE_SUPPORTED) { set_current_capabilities_technology_preference (task); return; } @@ -732,8 +753,8 @@ return; priv = get_private (MM_SHARED_QMI (self)); - g_assert (priv->feature_nas_technology_preference != FEATURE_UNKNOWN); - g_assert (priv->feature_nas_system_selection_preference != FEATURE_UNKNOWN); + g_assert (priv->feature_nas_tp != FEATURE_UNKNOWN); + g_assert (priv->feature_nas_ssp != FEATURE_UNKNOWN); ctx = g_slice_new0 (SetCurrentCapabilitiesContext); ctx->client = g_object_ref (client); @@ -869,18 +890,18 @@ if (!output) { mm_obj_dbg (self, "QMI operation failed: %s", error->message); g_error_free (error); - priv->feature_nas_technology_preference = FEATURE_UNSUPPORTED; + priv->feature_nas_tp = FEATURE_UNSUPPORTED; } else if (!qmi_message_nas_get_technology_preference_output_get_result (output, &error)) { mm_obj_dbg (self, "couldn't get technology preference: %s", error->message); g_error_free (error); - priv->feature_nas_technology_preference = FEATURE_SUPPORTED; + priv->feature_nas_tp = FEATURE_UNSUPPORTED; } else { qmi_message_nas_get_technology_preference_output_get_active ( output, &ctx->capabilities_context.nas_tp_mask, NULL, /* duration */ NULL); - priv->feature_nas_technology_preference = FEATURE_SUPPORTED; + priv->feature_nas_tp = FEATURE_SUPPORTED; } if (output) @@ -905,21 +926,35 @@ ctx = g_task_get_task_data (task); priv = get_private (MM_SHARED_QMI (self)); + priv->feature_nas_ssp = FEATURE_UNSUPPORTED; + priv->feature_nas_ssp_extended_lte_band_preference = FEATURE_UNSUPPORTED; + priv->feature_nas_ssp_acquisition_order_preference = FEATURE_UNSUPPORTED; + output = qmi_client_nas_get_system_selection_preference_finish (client, res, &error); if (!output) { mm_obj_dbg (self, "QMI operation failed: %s", error->message); g_error_free (error); - priv->feature_nas_system_selection_preference = FEATURE_UNSUPPORTED; } else if (!qmi_message_nas_get_system_selection_preference_output_get_result (output, &error)) { mm_obj_dbg (self, "couldn't get system selection preference: %s", error->message); g_error_free (error); - priv->feature_nas_system_selection_preference = FEATURE_SUPPORTED; } else { + GArray *acquisition_order_preference_array = NULL; + + /* SSP is supported, perform feature checks */ + priv->feature_nas_ssp = FEATURE_SUPPORTED; + if (qmi_message_nas_get_system_selection_preference_output_get_extended_lte_band_preference (output, NULL, NULL, NULL, NULL, NULL)) + priv->feature_nas_ssp_extended_lte_band_preference = FEATURE_SUPPORTED; + if (qmi_message_nas_get_system_selection_preference_output_get_acquisition_order_preference (output, &acquisition_order_preference_array, NULL) && + acquisition_order_preference_array && + acquisition_order_preference_array->len) { + priv->feature_nas_ssp_acquisition_order_preference = FEATURE_SUPPORTED; + priv->feature_nas_ssp_acquisition_order_preference_array = g_array_ref (acquisition_order_preference_array); + } + qmi_message_nas_get_system_selection_preference_output_get_mode_preference ( output, &ctx->capabilities_context.nas_ssp_mode_preference_mask, NULL); - priv->feature_nas_system_selection_preference = FEATURE_SUPPORTED; } if (output) @@ -967,8 +1002,8 @@ return; case LOAD_CURRENT_CAPABILITIES_STEP_LAST: - g_assert (priv->feature_nas_technology_preference != FEATURE_UNKNOWN); - g_assert (priv->feature_nas_system_selection_preference != FEATURE_UNKNOWN); + g_assert (priv->feature_nas_tp != FEATURE_UNKNOWN); + g_assert (priv->feature_nas_ssp != FEATURE_UNKNOWN); priv->current_capabilities = mm_modem_capability_from_qmi_capabilities_context (&ctx->capabilities_context, self); g_task_return_int (task, priv->current_capabilities); g_object_unref (task); @@ -1018,8 +1053,8 @@ /* Current capabilities is the first thing run, and will only be run once per modem, * so we should here check support for the optional features. */ priv = get_private (MM_SHARED_QMI (self)); - g_assert (priv->feature_nas_technology_preference == FEATURE_UNKNOWN); - g_assert (priv->feature_nas_system_selection_preference == FEATURE_UNKNOWN); + g_assert (priv->feature_nas_tp == FEATURE_UNKNOWN); + g_assert (priv->feature_nas_ssp == FEATURE_UNKNOWN); ctx = g_slice_new0 (LoadCurrentCapabilitiesContext); ctx->nas_client = g_object_ref (nas_client); @@ -1078,7 +1113,7 @@ * switching only when switching GSM/UMTS+CDMA/EVDO multimode devices, and only if * we have support for the commands doing it. */ - if (priv->feature_nas_technology_preference == FEATURE_SUPPORTED || priv->feature_nas_system_selection_preference == FEATURE_SUPPORTED) { + if (priv->feature_nas_tp == FEATURE_SUPPORTED || priv->feature_nas_ssp == FEATURE_SUPPORTED) { if (mask == (MM_MODEM_CAPABILITY_GSM_UMTS | MM_MODEM_CAPABILITY_CDMA_EVDO)) { /* Multimode GSM/UMTS+CDMA/EVDO device switched to GSM/UMTS only */ single = MM_MODEM_CAPABILITY_GSM_UMTS; @@ -1236,11 +1271,13 @@ set_current_modes_system_selection_preference (GTask *task) { MMIfaceModem *self; + Private *priv; SetCurrentModesContext *ctx; QmiMessageNasSetSystemSelectionPreferenceInput *input; QmiNasRatModePreference pref; self = g_task_get_source_object (task); + priv = get_private (MM_SHARED_QMI (self)); ctx = g_task_get_task_data (task); input = qmi_message_nas_set_system_selection_preference_input_new (); @@ -1249,16 +1286,17 @@ /* Preferred modes */ if (ctx->preferred != MM_MODEM_MODE_NONE) { - GArray *array; + if (priv->feature_nas_ssp_acquisition_order_preference == FEATURE_SUPPORTED) { + GArray *array; - /* Acquisition order array */ - array = mm_modem_mode_to_qmi_acquisition_order_preference (ctx->allowed, - ctx->preferred, - mm_iface_modem_is_cdma (self), - mm_iface_modem_is_3gpp (self)); - g_assert (array); - qmi_message_nas_set_system_selection_preference_input_set_acquisition_order_preference (input, array, NULL); - g_array_unref (array); + /* Acquisition order array */ + array = mm_modem_mode_to_qmi_acquisition_order_preference (ctx->allowed, + ctx->preferred, + priv->feature_nas_ssp_acquisition_order_preference_array); + g_assert (array); + qmi_message_nas_set_system_selection_preference_input_set_acquisition_order_preference (input, array, NULL); + g_array_unref (array); + } /* Only set GSM/WCDMA acquisition order preference if both 2G and 3G given as allowed */ if (mm_iface_modem_is_3gpp (self) && ((ctx->allowed & (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G)) == (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G))) { @@ -1324,12 +1362,12 @@ priv = get_private (MM_SHARED_QMI (self)); - if (priv->feature_nas_system_selection_preference == FEATURE_SUPPORTED) { + if (priv->feature_nas_ssp == FEATURE_SUPPORTED) { set_current_modes_system_selection_preference (task); return; } - if (priv->feature_nas_technology_preference == FEATURE_SUPPORTED) { + if (priv->feature_nas_tp == FEATURE_SUPPORTED) { set_current_modes_technology_preference (task); return; } @@ -1444,6 +1482,7 @@ GTask *task) { MMSharedQmi *self; + Private *priv; LoadCurrentModesResult *result = NULL; QmiMessageNasGetSystemSelectionPreferenceOutput *output = NULL; GError *error = NULL; @@ -1451,6 +1490,7 @@ MMModemMode allowed; self = g_task_get_source_object (task); + priv = get_private (self); output = qmi_client_nas_get_system_selection_preference_finish (client, res, &error); if (!output || !qmi_message_nas_get_system_selection_preference_output_get_result (output, &error)) { @@ -1483,24 +1523,11 @@ result->allowed = allowed; result->preferred = MM_MODEM_MODE_NONE; - /* For 2G+3G only rely on the GSM/WCDMA acquisition order preference TLV */ - if (mode_preference_mask == (QMI_NAS_RAT_MODE_PREFERENCE_GSM | QMI_NAS_RAT_MODE_PREFERENCE_UMTS)) { - QmiNasGsmWcdmaAcquisitionOrderPreference gsm_or_wcdma; - - if (qmi_message_nas_get_system_selection_preference_output_get_gsm_wcdma_acquisition_order_preference ( - output, - &gsm_or_wcdma, - NULL)) - result->preferred = mm_modem_mode_from_qmi_gsm_wcdma_acquisition_order_preference (gsm_or_wcdma, self); - } - /* Otherwise, rely on the acquisition order array TLV */ - else { + /* If acquisition order preference is available, always use that first */ + if (priv->feature_nas_ssp_acquisition_order_preference == FEATURE_SUPPORTED) { GArray *array; - if (qmi_message_nas_get_system_selection_preference_output_get_acquisition_order_preference ( - output, - &array, - NULL) && + if (qmi_message_nas_get_system_selection_preference_output_get_acquisition_order_preference (output, &array, NULL) && array->len > 0) { guint i; @@ -1521,6 +1548,16 @@ } } } + /* For 2G+3G only rely on the GSM/WCDMA acquisition order preference TLV */ + else if (mode_preference_mask == (QMI_NAS_RAT_MODE_PREFERENCE_GSM | QMI_NAS_RAT_MODE_PREFERENCE_UMTS)) { + QmiNasGsmWcdmaAcquisitionOrderPreference gsm_or_wcdma; + + if (qmi_message_nas_get_system_selection_preference_output_get_gsm_wcdma_acquisition_order_preference ( + output, + &gsm_or_wcdma, + NULL)) + result->preferred = mm_modem_mode_from_qmi_gsm_wcdma_acquisition_order_preference (gsm_or_wcdma, self); + } g_task_return_pointer (task, result, g_free); @@ -1567,12 +1604,12 @@ priv = get_private (MM_SHARED_QMI (self)); - if (priv->feature_nas_system_selection_preference != FEATURE_UNSUPPORTED) { + if (priv->feature_nas_ssp != FEATURE_UNSUPPORTED) { load_current_modes_system_selection_preference (task); return; } - if (priv->feature_nas_technology_preference != FEATURE_UNSUPPORTED) { + if (priv->feature_nas_tp != FEATURE_UNSUPPORTED) { load_current_modes_technology_preference (task); return; } @@ -1623,7 +1660,7 @@ g_array_append_val (all, mode); /* If SSP and TP are not supported, ignore supported mode management */ - if (priv->feature_nas_system_selection_preference == FEATURE_UNSUPPORTED && priv->feature_nas_technology_preference == FEATURE_UNSUPPORTED) { + if (priv->feature_nas_ssp == FEATURE_UNSUPPORTED && priv->feature_nas_tp == FEATURE_UNSUPPORTED) { g_task_return_pointer (task, all, (GDestroyNotify) g_array_unref); g_object_unref (task); return; @@ -1640,7 +1677,7 @@ if (MODE4 != MM_MODEM_MODE_NONE) \ mode.allowed |= MODE4; \ } \ - if (priv->feature_nas_system_selection_preference != FEATURE_UNSUPPORTED) { \ + if (priv->feature_nas_ssp != FEATURE_UNSUPPORTED) { \ if (MODE3 != MM_MODEM_MODE_NONE) { \ if (MODE4 != MM_MODEM_MODE_NONE) { \ mode.preferred = MODE4; \ @@ -1682,7 +1719,7 @@ /* 5G related mode combinations are only supported when NAS SSP is supported, * as there is no 5G support in NAS TP. */ - if (priv->feature_nas_system_selection_preference != FEATURE_UNSUPPORTED) { + if (priv->feature_nas_ssp != FEATURE_UNSUPPORTED) { ADD_MODE_PREFERENCE (MM_MODEM_MODE_5G, MM_MODEM_MODE_NONE, MM_MODEM_MODE_NONE, MM_MODEM_MODE_NONE); ADD_MODE_PREFERENCE (MM_MODEM_MODE_2G, MM_MODEM_MODE_5G, MM_MODEM_MODE_NONE, MM_MODEM_MODE_NONE); ADD_MODE_PREFERENCE (MM_MODEM_MODE_3G, MM_MODEM_MODE_5G, MM_MODEM_MODE_NONE, MM_MODEM_MODE_NONE); @@ -1842,7 +1879,8 @@ <e_band_preference_mask, NULL); - if (qmi_message_nas_get_system_selection_preference_output_get_extended_lte_band_preference ( + if ((priv->feature_nas_ssp_extended_lte_band_preference == FEATURE_SUPPORTED) && + qmi_message_nas_get_system_selection_preference_output_get_extended_lte_band_preference ( output, &extended_lte_band_preference[0], &extended_lte_band_preference[1], @@ -1851,9 +1889,6 @@ NULL)) extended_lte_band_preference_size = G_N_ELEMENTS (extended_lte_band_preference); - if (G_UNLIKELY (priv->feature_extended_lte_band_preference == FEATURE_UNKNOWN)) - priv->feature_extended_lte_band_preference = extended_lte_band_preference_size ? FEATURE_SUPPORTED : FEATURE_UNSUPPORTED; - mm_bands = mm_modem_bands_from_qmi_band_preference (band_preference_mask, lte_band_preference_mask, extended_lte_band_preference_size ? extended_lte_band_preference : NULL, @@ -1972,14 +2007,14 @@ mm_modem_bands_to_qmi_band_preference (bands_array, &qmi_bands, &qmi_lte_bands, - priv->feature_extended_lte_band_preference == FEATURE_SUPPORTED ? extended_qmi_lte_bands : NULL, + priv->feature_nas_ssp_extended_lte_band_preference == FEATURE_SUPPORTED ? extended_qmi_lte_bands : NULL, G_N_ELEMENTS (extended_qmi_lte_bands), self); input = qmi_message_nas_set_system_selection_preference_input_new (); qmi_message_nas_set_system_selection_preference_input_set_band_preference (input, qmi_bands, NULL); if (mm_iface_modem_is_3gpp_lte (self)) { - if (priv->feature_extended_lte_band_preference == FEATURE_SUPPORTED) + if (priv->feature_nas_ssp_extended_lte_band_preference == FEATURE_SUPPORTED) qmi_message_nas_set_system_selection_preference_input_set_extended_lte_band_preference ( input, extended_qmi_lte_bands[0], @@ -3163,6 +3198,973 @@ } /*****************************************************************************/ +/* Load SIM slots (modem interface) */ + +typedef struct { + QmiClientUim *client_uim; + GPtrArray *sim_slots; + GList *sorted_sims; + MMBaseSim *current_sim; + guint current_slot_number; + guint active_slot_number; + guint active_logical_id; +} LoadSimSlotsContext; + +static void +load_sim_slots_context_free (LoadSimSlotsContext *ctx) +{ + g_clear_object (&ctx->current_sim); + g_list_free_full (ctx->sorted_sims, (GDestroyNotify)g_object_unref); + g_clear_pointer (&ctx->sim_slots, g_ptr_array_unref); + g_clear_object (&ctx->client_uim); + g_slice_free (LoadSimSlotsContext, ctx); +} + +static void +sim_slot_free (MMBaseSim *sim) +{ + if (sim) + g_object_unref (sim); +} + +gboolean +mm_shared_qmi_load_sim_slots_finish (MMIfaceModem *self, + GAsyncResult *res, + GPtrArray **sim_slots, + guint *primary_sim_slot, + GError **error) +{ + LoadSimSlotsContext *ctx; + + if (!g_task_propagate_boolean (G_TASK (res), error)) + return FALSE; + + ctx = g_task_get_task_data (G_TASK (res)); + if (sim_slots) + *sim_slots = g_steal_pointer (&ctx->sim_slots); + if (primary_sim_slot) + *primary_sim_slot = ctx->active_slot_number; + return TRUE; +} + +static void +active_slot_switch_ready (QmiClientUim *client, + GAsyncResult *res, + GTask *task) +{ + g_autoptr(QmiMessageUimSwitchSlotOutput) output = NULL; + g_autoptr(GError) error = NULL; + MMIfaceModem *self; + LoadSimSlotsContext *ctx; + + self = g_task_get_source_object (task); + ctx = g_task_get_task_data (task); + + output = qmi_client_uim_switch_slot_finish (client, res, &error); + if ((!output || !qmi_message_uim_switch_slot_output_get_result (output, &error)) && + !g_error_matches (error, QMI_PROTOCOL_ERROR, QMI_PROTOCOL_ERROR_NO_EFFECT)) { + mm_obj_err (self, "couldn't switch to original slot %u", ctx->active_slot_number); + g_task_return_error (task, g_steal_pointer (&error)); + } else + g_task_return_boolean (task, TRUE); + g_object_unref (task); +} + +static void +reload_active_slot (GTask *task) +{ + g_autoptr(QmiMessageUimSwitchSlotInput) input = NULL; + LoadSimSlotsContext *ctx; + MMIfaceModem *self; + + self = g_task_get_source_object (task); + ctx = g_task_get_task_data (task); + + /* If we're already in the original active SIM slot, nothing else to do */ + if (ctx->current_slot_number == ctx->active_slot_number) { + g_task_return_boolean (task, TRUE); + g_object_unref (task); + return; + } + + mm_obj_dbg (self, "switching to original active SIM at slot %u", ctx->active_slot_number); + + /* Switch to the original active slot */ + input = qmi_message_uim_switch_slot_input_new (); + qmi_message_uim_switch_slot_input_set_logical_slot (input, (guint8) ctx->active_logical_id, NULL); + qmi_message_uim_switch_slot_input_set_physical_slot (input, ctx->active_slot_number, NULL); + qmi_client_uim_switch_slot (ctx->client_uim, + input, + 10, + NULL, + (GAsyncReadyCallback) active_slot_switch_ready, + task); +} + +static void load_next_sim_info (GTask *task); + +static void +next_sim_initialize_ready (MMBaseSim *sim, + GAsyncResult *res, + GTask *task) +{ + g_autoptr(GError) error = NULL; + MMIfaceModem *self; + LoadSimSlotsContext *ctx; + + self = g_task_get_source_object (task); + ctx = g_task_get_task_data (task); + + if (!mm_base_sim_initialize_finish (sim, res, &error)) + mm_obj_dbg (self, "couldn't initialize SIM at slot %u: won't load additional info", + ctx->current_slot_number); + else + mm_obj_dbg (self, "initialized SIM at slot %u", + ctx->current_slot_number); + + /* Iterate to next SIM */ + load_next_sim_info (task); +} + +static void +next_sim_switch_ready (QmiClientUim *client, + GAsyncResult *res, + GTask *task) +{ + g_autoptr(QmiMessageUimSwitchSlotOutput) output = NULL; + g_autoptr(GError) error = NULL; + MMIfaceModem *self; + LoadSimSlotsContext *ctx; + + self = g_task_get_source_object (task); + ctx = g_task_get_task_data (task); + + output = qmi_client_uim_switch_slot_finish (client, res, &error); + if (!output || !qmi_message_uim_switch_slot_output_get_result (output, &error)) { + /* ignore NoEffect errors on slot switch, because that indicates we're + * already in the desired slot */ + if (!g_error_matches (error, QMI_PROTOCOL_ERROR, QMI_PROTOCOL_ERROR_NO_EFFECT)) { + mm_obj_dbg (self, "couldn't switch to SIM at slot %u: won't load additional info", + ctx->current_slot_number); + load_next_sim_info (task); + return; + } + } + + mm_obj_dbg (self, "switched to SIM at slot %u: initializing...", + ctx->current_slot_number); + + mm_base_sim_initialize (ctx->current_sim, + NULL, + (GAsyncReadyCallback) next_sim_initialize_ready, + task); +} + +static void +load_next_sim_info (GTask *task) +{ + g_autoptr(QmiMessageUimSwitchSlotInput) input = NULL; + LoadSimSlotsContext *ctx; + MMIfaceModem *self; + + self = g_task_get_source_object (task); + ctx = g_task_get_task_data (task); + + /* All done? */ + if (!ctx->sorted_sims) { + mm_obj_dbg (self, "no more SIMs to load info from"); + reload_active_slot (task); + return; + } + + /* Steal SIM from list */ + g_clear_object (&ctx->current_sim); + ctx->current_sim = MM_BASE_SIM (ctx->sorted_sims->data); + ctx->sorted_sims = g_list_delete_link (ctx->sorted_sims, ctx->sorted_sims); + ctx->current_slot_number = mm_base_sim_get_slot_number (ctx->current_sim); + + mm_obj_dbg (self, "switching to SIM at slot %u: %s", + ctx->current_slot_number, mm_base_sim_get_path (ctx->current_sim)); + + /* Switch to the next slot */ + input = qmi_message_uim_switch_slot_input_new (); + qmi_message_uim_switch_slot_input_set_logical_slot (input, (guint8) ctx->active_logical_id, NULL); + qmi_message_uim_switch_slot_input_set_physical_slot (input, ctx->current_slot_number, NULL); + qmi_client_uim_switch_slot (ctx->client_uim, + input, + 10, + NULL, + (GAsyncReadyCallback) next_sim_switch_ready, + task); +} + +static void +uim_get_slot_status_ready (QmiClientUim *client, + GAsyncResult *res, + GTask *task) +{ + g_autoptr(QmiMessageUimGetSlotStatusOutput) output = NULL; + LoadSimSlotsContext *ctx; + MMIfaceModem *self; + GError *error = NULL; + GArray *physical_slots = NULL; + GArray *ext_information = NULL; + GArray *slot_eids = NULL; + guint i; + + self = g_task_get_source_object (task); + ctx = g_task_get_task_data (task); + + output = qmi_client_uim_get_slot_status_finish (client, res, &error); + if (!output || + !qmi_message_uim_get_slot_status_output_get_result (output, &error) || + !qmi_message_uim_get_slot_status_output_get_physical_slot_status (output, &physical_slots, &error)) { + g_task_return_error (task, error); + g_object_unref (task); + return; + } + + /* It's fine if we don't have EID information, but it should be well-formed if present. If it's malformed, + * there is probably a modem firmware bug. */ + if (qmi_message_uim_get_slot_status_output_get_physical_slot_information (output, &ext_information, NULL) && + qmi_message_uim_get_slot_status_output_get_slot_eid_information (output, &slot_eids, NULL) && + (ext_information->len != physical_slots->len || slot_eids->len != physical_slots->len)) { + g_task_return_new_error (task, + MM_CORE_ERROR, + MM_CORE_ERROR_FAILED, + "UIM Get Slot Status returned malformed response"); + g_object_unref (task); + return; + } + + ctx->sim_slots = g_ptr_array_new_full (physical_slots->len, (GDestroyNotify) sim_slot_free); + + for (i = 0; i < physical_slots->len; i++) { + QmiPhysicalSlotStatusSlot *slot_status; + QmiPhysicalSlotInformationSlot *slot_info; + MMBaseSim *sim; + g_autofree gchar *raw_iccid = NULL; + g_autofree gchar *iccid = NULL; + g_autofree gchar *eid = NULL; + g_autoptr(GError) inner_error = NULL; + gboolean sim_active = FALSE; + + /* Store active slot info */ + slot_status = &g_array_index (physical_slots, QmiPhysicalSlotStatusSlot, i); + if (slot_status->physical_slot_status == QMI_UIM_SLOT_STATE_ACTIVE) { + sim_active = TRUE; + ctx->active_logical_id = slot_status->logical_slot; + ctx->active_slot_number = i + 1; + ctx->current_slot_number = ctx->active_slot_number; + } + + if (!slot_status->iccid->len) { + mm_obj_dbg (self, "not creating SIM object: no SIM in slot %u", i + 1); + g_ptr_array_add (ctx->sim_slots, NULL); + continue; + } + + raw_iccid = mm_bcd_to_string ((const guint8 *)slot_status->iccid->data, slot_status->iccid->len, + TRUE /* low_nybble_first */); + if (!raw_iccid) { + mm_obj_warn (self, "not creating SIM object: failed to convert ICCID from BCD"); + g_ptr_array_add (ctx->sim_slots, NULL); + continue; + } + + iccid = mm_3gpp_parse_iccid (raw_iccid, &inner_error); + if (!iccid) { + mm_obj_warn (self, "not creating SIM object: couldn't parse SIM iccid: %s", inner_error->message); + g_ptr_array_add (ctx->sim_slots, NULL); + continue; + } + + if (ext_information && slot_eids) { + slot_info = &g_array_index (ext_information, QmiPhysicalSlotInformationSlot, i); + if (slot_info->is_euicc) { + GArray *slot_eid; + + slot_eid = g_array_index (slot_eids, GArray *, i); + if (slot_eid->len) + eid = mm_qmi_uim_decode_eid (slot_eid->data, slot_eid->len); + if (!eid) + mm_obj_dbg (self, "SIM in slot %d is marked as eUICC, but has malformed EID", i + 1); + } + } + + sim = mm_sim_qmi_new_initialized (MM_BASE_MODEM (self), + TRUE, /* consider DMS UIM deprecated if we're creating SIM slots */ + i + 1, /* slot number is the array index starting at 1 */ + sim_active, + iccid, + NULL, /* imsi unknown */ + eid, /* may be NULL, which is fine */ + NULL, /* operator id unknown */ + NULL, /* operator name unknown */ + NULL); /* emergency numbers unknown */ + g_ptr_array_add (ctx->sim_slots, sim); + + if (sim_active) + ctx->sorted_sims = g_list_append (ctx->sorted_sims, g_object_ref (sim)); + else + ctx->sorted_sims = g_list_prepend (ctx->sorted_sims, g_object_ref (sim)); + } + g_assert_cmpuint (ctx->sim_slots->len, ==, physical_slots->len); + + /* Now, iterate over all the SIMs, we'll attempt to load info from them by + * quickly switching over to them, leaving the active SIM to the end */ + load_next_sim_info (task); +} + +void +mm_shared_qmi_load_sim_slots (MMIfaceModem *self, + GAsyncReadyCallback callback, + gpointer user_data) +{ + LoadSimSlotsContext *ctx; + GTask *task; + QmiClient *client = NULL; + + if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self), + QMI_SERVICE_UIM, &client, + callback, user_data)) + return; + + task = g_task_new (self, NULL, callback, user_data); + + ctx = g_slice_new0 (LoadSimSlotsContext); + ctx->client_uim = g_object_ref (client); + g_task_set_task_data (task, ctx, (GDestroyNotify) load_sim_slots_context_free); + + qmi_client_uim_get_slot_status (ctx->client_uim, + NULL, + 10, + NULL, + (GAsyncReadyCallback) uim_get_slot_status_ready, + task); +} + +/*****************************************************************************/ +/* Set Primary SIM slot (modem interface) */ + +gboolean +mm_shared_qmi_set_primary_sim_slot_finish (MMIfaceModem *self, + GAsyncResult *res, + GError **error) +{ + return g_task_propagate_boolean (G_TASK (res), error); +} + +static void +uim_switch_slot_ready (QmiClientUim *client, + GAsyncResult *res, + GTask *task) +{ + g_autoptr(QmiMessageUimSwitchSlotOutput) output = NULL; + g_autoptr(GError) error = NULL; + MMIfaceModem *self; + + self = g_task_get_source_object (task); + + output = qmi_client_uim_switch_slot_finish (client, res, &error); + if (!output || !qmi_message_uim_switch_slot_output_get_result (output, &error)) { + if (g_error_matches (error, QMI_PROTOCOL_ERROR, QMI_PROTOCOL_ERROR_NO_EFFECT)) + g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_EXISTS, + "SIM slot switch operation not needed"); + else + g_task_return_error (task, g_steal_pointer (&error)); + } else { + mm_obj_info (self, "SIM slot switch operation request successful"); + g_task_return_boolean (task, TRUE); + } + g_object_unref (task); +} + +static void +uim_switch_get_slot_status_ready (QmiClientUim *client, + GAsyncResult *res, + GTask *task) +{ + g_autoptr(QmiMessageUimGetSlotStatusOutput) output = NULL; + g_autoptr(QmiMessageUimSwitchSlotInput) input = NULL; + MMIfaceModem *self; + GError *error = NULL; + GArray *physical_slots = NULL; + guint i; + guint active_logical_id = 0; + guint active_slot_number; + guint slot_number; + + self = g_task_get_source_object (task); + slot_number = GPOINTER_TO_UINT (g_task_get_task_data (task)); + + output = qmi_client_uim_get_slot_status_finish (client, res, &error); + if (!output || + !qmi_message_uim_get_slot_status_output_get_result (output, &error) || + !qmi_message_uim_get_slot_status_output_get_physical_slot_status (output, &physical_slots, &error)) { + g_task_return_error (task, error); + g_object_unref (task); + return; + } + + for (i = 0; i < physical_slots->len; i++) { + QmiPhysicalSlotStatusSlot *slot_status; + + /* We look for the currently ACTIVE SIM card only! */ + slot_status = &g_array_index (physical_slots, QmiPhysicalSlotStatusSlot, i); + if (slot_status->physical_slot_status != QMI_UIM_SLOT_STATE_ACTIVE) + continue; + + active_logical_id = slot_status->logical_slot; + active_slot_number = i + 1; + } + + if (!active_logical_id) { + g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, + "couldn't find active slot logical ID"); + g_object_unref (task); + return; + } + + if (active_slot_number == slot_number) { + g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_EXISTS, + "SIM slot switch operation not needed"); + g_object_unref (task); + return; + } + + mm_obj_dbg (self, "requesting active logical id %d switch to SIM slot %u", active_logical_id, slot_number); + + input = qmi_message_uim_switch_slot_input_new (); + qmi_message_uim_switch_slot_input_set_logical_slot (input, (guint8) active_logical_id, NULL); + qmi_message_uim_switch_slot_input_set_physical_slot (input, slot_number, NULL); + qmi_client_uim_switch_slot (client, + input, + 10, + NULL, + (GAsyncReadyCallback) uim_switch_slot_ready, + task); +} + +void +mm_shared_qmi_set_primary_sim_slot (MMIfaceModem *self, + guint sim_slot, + GAsyncReadyCallback callback, + gpointer user_data) +{ + GTask *task; + QmiClient *client = NULL; + + if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self), + QMI_SERVICE_UIM, &client, + callback, user_data)) + return; + + task = g_task_new (self, NULL, callback, user_data); + g_task_set_task_data (task, GUINT_TO_POINTER (sim_slot), NULL); + + qmi_client_uim_get_slot_status (QMI_CLIENT_UIM (client), + NULL, + 10, + NULL, + (GAsyncReadyCallback) uim_switch_get_slot_status_ready, + task); +} + +/*****************************************************************************/ +/* SIM hot swap detection */ + +#define REFRESH_START_TIMEOUT_SECS 3 + +gboolean +mm_shared_qmi_setup_sim_hot_swap_finish (MMIfaceModem *self, + GAsyncResult *res, + GError **error) +{ + return g_task_propagate_boolean (G_TASK (res), error); +} + +static void +uim_refresh_complete (QmiClientUim *client, + QmiUimSessionType session_type) +{ + g_autoptr(QmiMessageUimRefreshCompleteInput) refresh_complete_input = NULL; + GArray *dummy_aid; + + dummy_aid = g_array_new (FALSE, FALSE, sizeof (guint8)); + + refresh_complete_input = qmi_message_uim_refresh_complete_input_new (); + qmi_message_uim_refresh_complete_input_set_session ( + refresh_complete_input, + session_type, + dummy_aid, /* ignored */ + NULL); + qmi_message_uim_refresh_complete_input_set_info ( + refresh_complete_input, + TRUE, + NULL); + + qmi_client_uim_refresh_complete ( + client, + refresh_complete_input, + 10, + NULL, + NULL, + NULL); + g_array_unref (dummy_aid); +} + +static gboolean +uim_start_refresh_timeout (MMSharedQmi *self) +{ + Private *priv; + + priv = get_private (self); + priv->uim_refresh_start_timeout_id = 0; + + mm_obj_dbg (self, "refresh start timed out; trigger SIM change check"); + + mm_iface_modem_check_for_sim_swap (MM_IFACE_MODEM (self), 0, NULL, NULL, NULL); + + return G_SOURCE_REMOVE; +} + +static void +uim_refresh_indication_cb (QmiClientUim *client, + QmiIndicationUimRefreshOutput *output, + MMSharedQmi *self) +{ + QmiUimRefreshStage stage; + QmiUimRefreshMode mode; + QmiUimSessionType session_type; + Private *priv; + g_autoptr(GError) error = NULL; + + priv = get_private (self); + + if (!qmi_indication_uim_refresh_output_get_event (output, + &stage, + &mode, + &session_type, + NULL, + NULL, + &error)) { + mm_obj_warn (self, "couldn't process UIM refresh indication: %s", error->message); + return; + } + + mm_obj_dbg (self, "refresh indication received: session type '%s', stage '%s', mode '%s'", + qmi_uim_session_type_get_string (session_type), + qmi_uim_refresh_stage_get_string (stage), + qmi_uim_refresh_mode_get_string (mode)); + + /* Support only the first slot for now. Primary GW provisioning is used in old modems. */ + if (session_type != QMI_UIM_SESSION_TYPE_CARD_SLOT_1 && + session_type != QMI_UIM_SESSION_TYPE_PRIMARY_GW_PROVISIONING) { + mm_obj_warn (self, "refresh session type not supported: %s", qmi_uim_session_type_get_string (session_type)); + return; + } + + /* Currently we handle only UICC Reset type refresh, which can be used + * in profile switch scenarios. In other cases we just trigger 'refresh + * complete' during start phase. Signal to notify about potential SIM + * profile switch is triggered when the refresh is ending. If it were + * triggered in start phase, reading SIM files seems to fail with + * an internal error. + * + * It's possible that 'end-with-success' stage never appears. For that, + * we start a timer at 'start' stage and if it expires, the SIM change + * check is triggered anyway. */ + if (stage == QMI_UIM_REFRESH_STAGE_START) { + if (mode == QMI_UIM_REFRESH_MODE_RESET) { + if (!priv->uim_refresh_start_timeout_id) + priv->uim_refresh_start_timeout_id = g_timeout_add_seconds (REFRESH_START_TIMEOUT_SECS, + (GSourceFunc)uim_start_refresh_timeout, + self); + } else + uim_refresh_complete (client, session_type); + } else if (stage == QMI_UIM_REFRESH_STAGE_END_WITH_SUCCESS) { + if (mode == QMI_UIM_REFRESH_MODE_RESET) { + if (priv->uim_refresh_start_timeout_id) { + g_source_remove (priv->uim_refresh_start_timeout_id); + priv->uim_refresh_start_timeout_id = 0; + } + mm_iface_modem_check_for_sim_swap (MM_IFACE_MODEM (self), 0, NULL, NULL, NULL); + } + } +} + +static void +uim_slot_status_indication_cb (QmiClientUim *client, + QmiIndicationUimSlotStatusOutput *output, + MMSharedQmi *self) +{ + GArray *physical_slots = NULL; + guint i; + g_autoptr(GError) error = NULL; + + mm_obj_dbg (self, "received slot status indication"); + + if (!qmi_indication_uim_slot_status_output_get_physical_slot_status (output, + &physical_slots, + &error)) { + mm_obj_warn (self, "could not process slot status indication: %s", error->message); + return; + } + + for (i = 0; i < physical_slots->len; i++) { + QmiPhysicalSlotStatusSlot *slot_status; + + slot_status = &g_array_index (physical_slots, QmiPhysicalSlotStatusSlot, i); + + /* We only care about active slot changes */ + if (slot_status->physical_slot_status == QMI_UIM_SLOT_STATE_ACTIVE) { + g_autofree gchar *iccid = NULL; + + if (slot_status->iccid && slot_status->iccid->len > 0) { + iccid = mm_bcd_to_string ((const guint8 *) slot_status->iccid->data, slot_status->iccid->len, + TRUE /* low_nybble_first */); + } + + mm_iface_modem_check_for_sim_swap (MM_IFACE_MODEM (self), + i + 1, /* Slot index */ + iccid, + NULL, + NULL); + } + } +} + +static void +uim_refresh_register_iccid_change_ready (QmiClientUim *client, + GAsyncResult *res, + GTask *task) +{ + MMSharedQmi *self; + Private *priv; + g_autoptr(QmiMessageUimRefreshRegisterOutput) output = NULL; + g_autoptr(GError) error = NULL; + + self = g_task_get_source_object (task); + priv = get_private (self); + + output = qmi_client_uim_refresh_register_finish (client, res, &error); + if (!output || !qmi_message_uim_refresh_register_output_get_result (output, &error)) { + mm_obj_dbg (self, "refresh registration using 'refresh register' failed: %s", error->message); + g_clear_object (&priv->uim_client); + g_task_return_new_error (task, MM_MOBILE_EQUIPMENT_ERROR, MM_MOBILE_EQUIPMENT_ERROR_NOT_SUPPORTED, + "SIM hot swap detection not supported by modem"); + } else { + mm_obj_dbg (self, "registered for SIM refresh events using 'refresh register'"); + priv->uim_refresh_indication_id = + g_signal_connect (client, + "refresh", + G_CALLBACK (uim_refresh_indication_cb), + self); + g_task_return_boolean (task, TRUE); + } + g_object_unref (task); +} + +/* This is the last resort if 'refresh register all' does not work. It works + * on some older modems. Those modems may not also support QMI_UIM_SESSION_TYPE_CARD_SLOT_1 + * so we'll use QMI_UIM_SESSION_TYPE_PRIMARY_GW_PROVISIONING */ +static void +uim_refresh_register_iccid_change (GTask *task) +{ + MMSharedQmi *self; + Private *priv; + QmiMessageUimRefreshRegisterInputInfoFilesElement file_element; + guint8 val; + g_autoptr(QmiMessageUimRefreshRegisterInput) refresh_register_input = NULL; + g_autoptr(GArray) dummy_aid = NULL; + g_autoptr(GArray) file = NULL; + g_autoptr(GArray) file_element_path = NULL; + + self = g_task_get_source_object (task); + priv = get_private (MM_SHARED_QMI (self)); + + mm_obj_dbg (self, "register for refresh file indication"); + + dummy_aid = g_array_new (FALSE, FALSE, sizeof (guint8)); + + file = g_array_sized_new (FALSE, FALSE, sizeof (QmiMessageUimRefreshRegisterInputInfoFilesElement), 1); + + file_element_path = g_array_sized_new (FALSE, FALSE, sizeof (guint8), 2); + val = 0x00; + g_array_append_val (file_element_path, val); + val = 0x3F; + g_array_append_val (file_element_path, val); + + + memset (&file_element, 0, sizeof (file_element)); + file_element.file_id = 0x2FE2; /* ICCID */ + file_element.path = file_element_path; + g_array_append_val (file, file_element); + + refresh_register_input = qmi_message_uim_refresh_register_input_new (); + qmi_message_uim_refresh_register_input_set_info (refresh_register_input, + TRUE, + FALSE, + file, + NULL); + qmi_message_uim_refresh_register_input_set_session (refresh_register_input, + QMI_UIM_SESSION_TYPE_PRIMARY_GW_PROVISIONING, + dummy_aid, + NULL); + + qmi_client_uim_refresh_register (QMI_CLIENT_UIM (priv->uim_client), + refresh_register_input, + 10, + NULL, + (GAsyncReadyCallback) uim_refresh_register_iccid_change_ready, + task); +} + +/* Refresh registration and event handling. + * This is used only as fallback in case slot status indications do not work + * in the particular modem (determined by UIM Get Slot Status failing) for + * detecting ICCID changing due to a profile switch. + * + * We assume that devices not supporting UIM Get Slot Status only have a + * single slot, for which we register refresh events. + */ + +static void +uim_refresh_register_all_ready (QmiClientUim *client, + GAsyncResult *res, + GTask *task) +{ + g_autoptr(QmiMessageUimRefreshRegisterAllOutput) output = NULL; + g_autoptr(GError) error = NULL; + MMIfaceModem *self; + Private *priv; + + self = g_task_get_source_object (task); + priv = get_private (MM_SHARED_QMI (self)); + + output = qmi_client_uim_refresh_register_all_finish (client, res, &error); + if (!output || !qmi_message_uim_refresh_register_all_output_get_result (output, &error)) { + if (g_error_matches (error, QMI_PROTOCOL_ERROR, QMI_PROTOCOL_ERROR_NOT_SUPPORTED) || + g_error_matches (error, QMI_PROTOCOL_ERROR, QMI_PROTOCOL_ERROR_INVALID_QMI_COMMAND)) { + /* As last resort, if 'refresh register all' fails, try a plain 'refresh register'. + * Some older modems may not support 'refresh register all'. */ + uim_refresh_register_iccid_change (task); + return; + } + + mm_obj_dbg (self, "refresh register all operation failed: %s", error->message); + g_clear_object (&priv->uim_client); + g_task_return_error (task, g_steal_pointer (&error)); + } else { + mm_obj_dbg (self, "registered for all SIM refresh events"); + priv->uim_refresh_indication_id = + g_signal_connect (client, + "refresh", + G_CALLBACK (uim_refresh_indication_cb), + self); + g_task_return_boolean (task, TRUE); + } + g_object_unref (task); +} + +static void +uim_slot_status_not_supported (GTask *task) +{ + MMIfaceModem *self; + Private *priv; + g_autoptr(QmiMessageUimRefreshRegisterAllInput) refresh_register_all_input = NULL; + g_autoptr(GArray) dummy_aid = NULL; + + self = g_task_get_source_object (task); + priv = get_private (MM_SHARED_QMI (self)); + + g_assert (!priv->uim_refresh_indication_id); + + mm_obj_dbg (self, "slot status not supported by modem: register for refresh indications"); + + dummy_aid = g_array_new (FALSE, FALSE, sizeof (guint8)); + refresh_register_all_input = qmi_message_uim_refresh_register_all_input_new (); + + qmi_message_uim_refresh_register_all_input_set_info (refresh_register_all_input, + TRUE, + NULL); + qmi_message_uim_refresh_register_all_input_set_session (refresh_register_all_input, + QMI_UIM_SESSION_TYPE_CARD_SLOT_1, + dummy_aid, + NULL); + + qmi_client_uim_refresh_register_all (QMI_CLIENT_UIM (priv->uim_client), + refresh_register_all_input, + 10, + NULL, + (GAsyncReadyCallback) uim_refresh_register_all_ready, + task); +} + +static void +uim_check_get_slot_status_ready (QmiClientUim *client, + GAsyncResult *res, + GTask *task) +{ + g_autoptr(QmiMessageUimGetSlotStatusOutput) output = NULL; + g_autoptr(GError) error = NULL; + MMIfaceModem *self; + Private *priv; + + self = g_task_get_source_object (task); + priv = get_private (MM_SHARED_QMI (self)); + + output = qmi_client_uim_get_slot_status_finish (client, res, &error); + if (!output || !qmi_message_uim_get_slot_status_output_get_result (output, &error)) { + if (priv->uim_slot_status_indication_id) { + g_signal_handler_disconnect (client, priv->uim_slot_status_indication_id); + priv->uim_slot_status_indication_id = 0; + } + + if (g_error_matches (error, QMI_PROTOCOL_ERROR, QMI_PROTOCOL_ERROR_NOT_SUPPORTED) || + g_error_matches (error, QMI_PROTOCOL_ERROR, QMI_PROTOCOL_ERROR_INVALID_QMI_COMMAND)) { + uim_slot_status_not_supported (task); + return; + } + + mm_obj_dbg (self, "slot status retrieval failed: %s", error->message); + g_clear_object (&priv->uim_client); + g_task_return_error (task, g_steal_pointer (&error)); + g_object_unref (task); + return; + } + + mm_obj_dbg (self, "slot status retrieval succeeded: monitoring slot status indications"); + g_task_return_boolean (task, TRUE); + g_object_unref (task); +} + +static void +uim_register_events_ready (QmiClientUim *client, + GAsyncResult *res, + GTask *task) +{ + g_autoptr(QmiMessageUimRegisterEventsOutput) output = NULL; + g_autoptr(GError) error = NULL; + MMIfaceModem *self; + Private *priv; + + self = g_task_get_source_object (task); + priv = get_private (MM_SHARED_QMI (self)); + + /* If event registration fails, go on with initialization. In that case + * we cannot use slot status indications to detect eUICC profile switches. */ + output = qmi_client_uim_register_events_finish (client, res, &error); + if (output && qmi_message_uim_register_events_output_get_result (output, &error)) { + g_assert (!priv->uim_slot_status_indication_id); + priv->uim_slot_status_indication_id = g_signal_connect (priv->uim_client, + "slot-status", + G_CALLBACK (uim_slot_status_indication_cb), + self); + mm_obj_dbg (self, "registered for slot status indications"); + + /* Successful registration does not mean that the modem actually sends + * physical slot status indications; invoke Get Slot Status to find out if + * the modem really supports slot status. */ + qmi_client_uim_get_slot_status (client, + NULL, + 10, + NULL, + (GAsyncReadyCallback) uim_check_get_slot_status_ready, + task); + return; + } + + mm_obj_dbg (self, "not registered for slot status indications: %s", error->message); + uim_slot_status_not_supported (task); +} + +void +mm_shared_qmi_setup_sim_hot_swap (MMIfaceModem *self, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_autoptr(QmiMessageUimRegisterEventsInput) register_events_input = NULL; + GTask *task; + QmiClient *client = NULL; + Private *priv; + + if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self), + QMI_SERVICE_UIM, &client, + callback, user_data)) + return; + + task = g_task_new (self, NULL, callback, user_data); + priv = get_private (MM_SHARED_QMI (self)); + + g_assert (!priv->uim_slot_status_indication_id); + g_assert (!priv->uim_client); + priv->uim_client = g_object_ref (client); + + register_events_input = qmi_message_uim_register_events_input_new (); + qmi_message_uim_register_events_input_set_event_registration_mask (register_events_input, + QMI_UIM_EVENT_REGISTRATION_FLAG_PHYSICAL_SLOT_STATUS, + NULL); + qmi_client_uim_register_events (QMI_CLIENT_UIM (priv->uim_client), + register_events_input, + 10, + NULL, + (GAsyncReadyCallback) uim_register_events_ready, + task); +} + +/*****************************************************************************/ +/* FCC unlock (Modem interface) */ + +gboolean +mm_shared_qmi_fcc_unlock_finish (MMIfaceModem *self, + GAsyncResult *res, + GError **error) +{ + return g_task_propagate_boolean (G_TASK (res), error); +} + +static void +dms_set_fcc_authentication_ready (QmiClientDms *client, + GAsyncResult *res, + GTask *task) +{ + GError *error = NULL; + g_autoptr(QmiMessageDmsSetFccAuthenticationOutput) output = NULL; + + output = qmi_client_dms_set_fcc_authentication_finish (client, res, &error); + if (!output || !qmi_message_dms_set_fcc_authentication_output_get_result (output, &error)) + g_task_return_error (task, error); + else + g_task_return_boolean (task, TRUE); + g_object_unref (task); +} + +void +mm_shared_qmi_fcc_unlock (MMIfaceModem *self, + GAsyncReadyCallback callback, + gpointer user_data) +{ + GTask *task; + QmiClient *client = NULL; + + if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self), + QMI_SERVICE_DMS, &client, + callback, user_data)) + return; + + task = g_task_new (self, NULL, callback, user_data); + + qmi_client_dms_set_fcc_authentication (QMI_CLIENT_DMS (client), + NULL, + 5, + NULL, + (GAsyncReadyCallback)dms_set_fcc_authentication_ready, + task); +} + +/*****************************************************************************/ /* Location: Set SUPL server */ typedef struct { diff -Nru modemmanager-1.14.10/src/mm-shared-qmi.h modemmanager-1.16.6/src/mm-shared-qmi.h --- modemmanager-1.14.10/src/mm-shared-qmi.h 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-shared-qmi.h 2021-06-06 21:40:59.000000000 +0800 @@ -164,6 +164,33 @@ gboolean mm_shared_qmi_setup_carrier_config_finish (MMIfaceModem *self, GAsyncResult *res, GError **error); +void mm_shared_qmi_load_sim_slots (MMIfaceModem *self, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean mm_shared_qmi_load_sim_slots_finish (MMIfaceModem *self, + GAsyncResult *res, + GPtrArray **sim_slots, + guint *primary_sim_slot, + GError **error); +void mm_shared_qmi_set_primary_sim_slot (MMIfaceModem *self, + guint sim_slot, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean mm_shared_qmi_set_primary_sim_slot_finish (MMIfaceModem *self, + GAsyncResult *res, + GError **error); +void mm_shared_qmi_setup_sim_hot_swap (MMIfaceModem *self, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean mm_shared_qmi_setup_sim_hot_swap_finish (MMIfaceModem *self, + GAsyncResult *res, + GError **error); +void mm_shared_qmi_fcc_unlock (MMIfaceModem *self, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean mm_shared_qmi_fcc_unlock_finish (MMIfaceModem *self, + GAsyncResult *res, + GError **error); /* Shared QMI location support */ diff -Nru modemmanager-1.14.10/src/mm-sim-mbim.c modemmanager-1.16.6/src/mm-sim-mbim.c --- modemmanager-1.14.10/src/mm-sim-mbim.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-sim-mbim.c 2021-06-06 21:40:59.000000000 +0800 @@ -24,6 +24,7 @@ #define _LIBMM_INSIDE_MM #include +#include "mm-broadband-modem-mbim.h" #include "mm-error-helpers.h" #include "mm-iface-modem.h" #include "mm-log-object.h" @@ -48,7 +49,7 @@ NULL); g_assert (MM_IS_BASE_MODEM (modem)); - port = mm_base_modem_peek_port_mbim (modem); + port = mm_broadband_modem_mbim_peek_port_mbim (MM_BROADBAND_MODEM_MBIM (modem)); g_object_unref (modem); if (!port) { @@ -752,6 +753,7 @@ callback, user_data, MM_BASE_SIM_MODEM, modem, + "active", TRUE, /* by default always active */ NULL); } diff -Nru modemmanager-1.14.10/src/mm-sim-qmi.c modemmanager-1.16.6/src/mm-sim-qmi.c --- modemmanager-1.14.10/src/mm-sim-qmi.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-sim-qmi.c 2021-06-06 21:40:59.000000000 +0800 @@ -25,8 +25,10 @@ #define _LIBMM_INSIDE_MM #include +#include "mm-broadband-modem-qmi.h" #include "mm-log-object.h" #include "mm-sim-qmi.h" +#include "mm-modem-helpers-qmi.h" G_DEFINE_TYPE (MMSimQmi, mm_sim_qmi, MM_TYPE_BASE_SIM) @@ -59,7 +61,7 @@ NULL); g_assert (MM_IS_BASE_MODEM (modem)); - port = mm_base_modem_peek_port_qmi (modem); + port = mm_broadband_modem_qmi_peek_port_qmi (MM_BROADBAND_MODEM_QMI (modem)); g_object_unref (modem); if (!port) { @@ -89,6 +91,131 @@ } /*****************************************************************************/ +/* Wait for SIM ready */ + +#define SIM_READY_CHECKS_MAX 5 +#define SIM_READY_CHECKS_TIMEOUT_SECS 1 + +typedef struct { + QmiClient *client_uim; + guint ready_checks_n; +} WaitSimReadyContext; + +static void +wait_sim_ready_context_free (WaitSimReadyContext *ctx) +{ + g_clear_object (&ctx->client_uim); + g_slice_free (WaitSimReadyContext, ctx); +} + +static gboolean +wait_sim_ready_finish (MMBaseSim *self, + GAsyncResult *res, + GError **error) +{ + return g_task_propagate_boolean (G_TASK (res), error); +} + +static void sim_ready_check (GTask *task); + +static gboolean +sim_ready_retry_cb (GTask *task) +{ + sim_ready_check (task); + return G_SOURCE_REMOVE; +} + +static void +sim_ready_retry (GTask *task) +{ + g_timeout_add_seconds (SIM_READY_CHECKS_TIMEOUT_SECS, (GSourceFunc) sim_ready_retry_cb, task); +} + +static void +uim_get_card_status_ready (QmiClientUim *client, + GAsyncResult *res, + GTask *task) +{ + g_autoptr(QmiMessageUimGetCardStatusOutput) output = NULL; + g_autoptr(GError) error = NULL; + MMSimQmi *self; + + self = g_task_get_source_object (task); + + output = qmi_client_uim_get_card_status_finish (client, res, &error); + if (!output || + !qmi_message_uim_get_card_status_output_get_result (output, &error) || + (!mm_qmi_uim_get_card_status_output_parse (self, output, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &error) && + (g_error_matches (error, MM_MOBILE_EQUIPMENT_ERROR, MM_MOBILE_EQUIPMENT_ERROR_SIM_NOT_INSERTED) || + g_error_matches (error, MM_CORE_ERROR, MM_CORE_ERROR_RETRY)))) { + mm_obj_dbg (self, "sim not yet considered ready... retrying"); + sim_ready_retry (task); + return; + } + + /* SIM is considered ready now */ + mm_obj_dbg (self, "sim is ready"); + g_task_return_boolean (task, TRUE); + g_object_unref (task); +} + +static void +sim_ready_check (GTask *task) +{ + WaitSimReadyContext *ctx; + MMSimQmi *self; + + self = g_task_get_source_object (task); + ctx = g_task_get_task_data (task); + + ctx->ready_checks_n++; + if (ctx->ready_checks_n == SIM_READY_CHECKS_MAX) { + g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, + "failed waiting for SIM readiness"); + g_object_unref (task); + return; + } + + mm_obj_dbg (self, "checking SIM readiness"); + qmi_client_uim_get_card_status (QMI_CLIENT_UIM (ctx->client_uim), + NULL, + 5, + NULL, + (GAsyncReadyCallback) uim_get_card_status_ready, + task); +} + +static void +wait_sim_ready (MMBaseSim *_self, + GAsyncReadyCallback callback, + gpointer user_data) +{ + QmiClient *client; + MMSimQmi *self; + GTask *task; + WaitSimReadyContext *ctx; + + self = MM_SIM_QMI (_self); + task = g_task_new (self, NULL, callback, user_data); + + mm_obj_dbg (self, "waiting for SIM to be ready..."); + if (!self->priv->dms_uim_deprecated) { + g_task_return_boolean (task, TRUE); + g_object_unref (task); + return; + } + + if (!ensure_qmi_client (task, self, QMI_SERVICE_UIM, &client)) + return; + + ctx = g_slice_new0 (WaitSimReadyContext); + ctx->client_uim = g_object_ref (client); + g_task_set_task_data (task, ctx, (GDestroyNotify) wait_sim_ready_context_free); + + sim_ready_check (task); +} + +/*****************************************************************************/ /* Load SIM ID (ICCID) */ static GArray * @@ -218,7 +345,8 @@ return; } - iccid = mm_bcd_to_string ((const guint8 *) read_result->data, read_result->len); + iccid = mm_bcd_to_string ((const guint8 *) read_result->data, read_result->len, + TRUE /* low_nybble_first */); g_assert (iccid); g_task_return_pointer (task, iccid, g_free); g_object_unref (task); @@ -332,7 +460,8 @@ return; } - imsi = mm_bcd_to_string ((const guint8 *) read_result->data, read_result->len); + imsi = mm_bcd_to_string ((const guint8 *) read_result->data, read_result->len, + TRUE /* low_nybble_first */); g_assert (imsi); if (strlen (imsi) < 3) g_task_return_new_error (task, @@ -1315,9 +1444,43 @@ user_data, MM_BASE_SIM_MODEM, modem, MM_SIM_QMI_DMS_UIM_DEPRECATED, dms_uim_deprecated, + "active", TRUE, /* by default always active */ NULL); } +MMBaseSim * +mm_sim_qmi_new_initialized (MMBaseModem *modem, + gboolean dms_uim_deprecated, + guint slot_number, + gboolean active, + const gchar *sim_identifier, + const gchar *imsi, + const gchar *eid, + const gchar *operator_identifier, + const gchar *operator_name, + const GStrv emergency_numbers) +{ + MMBaseSim *sim; + + sim = MM_BASE_SIM (g_object_new (MM_TYPE_SIM_QMI, + MM_BASE_SIM_MODEM, modem, + MM_SIM_QMI_DMS_UIM_DEPRECATED, dms_uim_deprecated, + MM_BASE_SIM_SLOT_NUMBER, slot_number, + "active", active, + "sim-identifier", sim_identifier, + "imsi", imsi, + "eid", eid, + "operator-identifier", operator_identifier, + "operator-name", operator_name, + "emergency-numbers", emergency_numbers, + NULL)); + + mm_base_sim_export (sim); + return sim; +} + +/*****************************************************************************/ + static void mm_sim_qmi_init (MMSimQmi *self) { @@ -1374,6 +1537,8 @@ object_class->get_property = get_property; object_class->set_property = set_property; + base_sim_class->wait_sim_ready = wait_sim_ready; + base_sim_class->wait_sim_ready_finish = wait_sim_ready_finish; base_sim_class->load_sim_identifier = load_sim_identifier; base_sim_class->load_sim_identifier_finish = load_sim_identifier_finish; base_sim_class->load_imsi = load_imsi; diff -Nru modemmanager-1.14.10/src/mm-sim-qmi.h modemmanager-1.16.6/src/mm-sim-qmi.h --- modemmanager-1.14.10/src/mm-sim-qmi.h 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-sim-qmi.h 2021-06-06 21:40:59.000000000 +0800 @@ -54,4 +54,15 @@ MMBaseSim *mm_sim_qmi_new_finish (GAsyncResult *res, GError **error); +MMBaseSim *mm_sim_qmi_new_initialized (MMBaseModem *modem, + gboolean dms_uim_deprecated, + guint slot_number, + gboolean active, + const gchar *sim_identifier, + const gchar *imsi, + const gchar *eid, + const gchar *operator_identifier, + const gchar *operator_name, + const GStrv emergency_numbers); + #endif /* MM_SIM_QMI_H */ diff -Nru modemmanager-1.14.10/src/mm-sms-mbim.c modemmanager-1.16.6/src/mm-sms-mbim.c --- modemmanager-1.14.10/src/mm-sms-mbim.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-sms-mbim.c 2021-06-06 21:40:59.000000000 +0800 @@ -24,6 +24,7 @@ #define _LIBMM_INSIDE_MM #include +#include "mm-broadband-modem-mbim.h" #include "mm-modem-helpers-mbim.h" #include "mm-iface-modem-messaging.h" #include "mm-sms-mbim.h" @@ -51,7 +52,7 @@ if (o_device) { MMPortMbim *port; - port = mm_base_modem_peek_port_mbim (modem); + port = mm_broadband_modem_mbim_peek_port_mbim (MM_BROADBAND_MODEM_MBIM (modem)); if (!port) { g_task_report_new_error (self, callback, diff -Nru modemmanager-1.14.10/src/mm-sms-part-3gpp.c modemmanager-1.16.6/src/mm-sms-part-3gpp.c --- modemmanager-1.14.10/src/mm-sms-part-3gpp.c 2021-01-08 23:22:00.000000000 +0800 +++ modemmanager-1.16.6/src/mm-sms-part-3gpp.c 2021-06-06 21:40:59.000000000 +0800 @@ -120,23 +120,26 @@ } /* len is in semi-octets */ -static char * -sms_decode_address (const guint8 *address, int len) +static gchar * +sms_decode_address (const guint8 *address, + gint len, + GError **error) { guint8 addrtype, addrplan; - char *utf8; + gchar *utf8; addrtype = address[0] & SMS_NUMBER_TYPE_MASK; addrplan = address[0] & SMS_NUMBER_PLAN_MASK; address++; if (addrtype == SMS_NUMBER_TYPE_ALPHA) { - guint8 *unpacked; - guint32 unpacked_len; + g_autoptr(GByteArray) unpacked_array = NULL; + guint8 *unpacked = NULL; + guint32 unpacked_len; + unpacked = mm_charset_gsm_unpack (address, (len * 4) / 7, 0, &unpacked_len); - utf8 = (char *)mm_charset_gsm_unpacked_to_utf8 (unpacked, - unpacked_len); - g_free (unpacked); + unpacked_array = g_byte_array_new_take (unpacked, unpacked_len); + utf8 = mm_modem_charset_bytearray_to_utf8 (unpacked_array, MM_MODEM_CHARSET_GSM, FALSE, error); } else if (addrtype == SMS_NUMBER_TYPE_INTL && addrplan == SMS_NUMBER_PLAN_TELEPHONE) { /* International telphone number, format as "+1234567890" */ @@ -239,41 +242,44 @@ return scheme; } -static char * -sms_decode_text (const guint8 *text, - int len, - MMSmsEncoding encoding, - int bit_offset, - gpointer log_object) +static gchar * +sms_decode_text (const guint8 *text, + int len, + MMSmsEncoding encoding, + int bit_offset, + gpointer log_object, + GError **error) { - gchar *utf8; - if (encoding == MM_SMS_ENCODING_GSM7) { - g_autofree guint8 *unpacked = NULL; - guint32 unpacked_len; + g_autoptr(GByteArray) unpacked_array = NULL; + guint8 *unpacked = NULL; + guint32 unpacked_len; + gchar *utf8; - mm_obj_dbg (log_object, "converting SMS part text from GSM-7 to UTF-8..."); unpacked = mm_charset_gsm_unpack ((const guint8 *) text, len, bit_offset, &unpacked_len); - utf8 = (char *) mm_charset_gsm_unpacked_to_utf8 (unpacked, unpacked_len); - mm_obj_dbg (log_object, " got UTF-8 text: '%s'", utf8); - } else if (encoding == MM_SMS_ENCODING_UCS2) { - g_autoptr(GByteArray) bytearray = NULL; + unpacked_array = g_byte_array_new_take (unpacked, unpacked_len); + utf8 = mm_modem_charset_bytearray_to_utf8 (unpacked_array, MM_MODEM_CHARSET_GSM, FALSE, error); + if (utf8) + mm_obj_dbg (log_object, "converted SMS part text from GSM-7 to UTF-8: %s", utf8); + return utf8; + } + + /* Always assume UTF-16 instead of UCS-2! */ + if (encoding == MM_SMS_ENCODING_UCS2) { + g_autoptr(GByteArray) bytearray = NULL; + gchar *utf8; - mm_obj_dbg (log_object, "converting SMS part text from UTF-16BE to UTF-8..."); bytearray = g_byte_array_append (g_byte_array_sized_new (len), (const guint8 *)text, len); - /* Always assume UTF-16 instead of UCS-2! */ - utf8 = mm_modem_charset_byte_array_to_utf8 (bytearray, MM_MODEM_CHARSET_UTF16); - if (!utf8) { - mm_obj_warn (log_object, "couldn't convert SMS part contents from UTF-16BE to UTF-8: not decoding any text"); - utf8 = g_strdup (""); - } else - mm_obj_dbg (log_object, " got UTF-8 text: '%s'", utf8); - } else { - mm_obj_warn (log_object, "unexpected encoding: %s; not decoding any text", mm_sms_encoding_get_string (encoding)); - utf8 = g_strdup (""); + utf8 = mm_modem_charset_bytearray_to_utf8 (bytearray, MM_MODEM_CHARSET_UTF16, FALSE, error); + if (utf8) + mm_obj_dbg (log_object, "converted SMS part text from UTF-16BE to UTF-8: %s", utf8); + return utf8; } - return utf8; + g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, + "Couldn't convert SMS part contents from %s to UTF-8", + mm_sms_encoding_get_string (encoding)); + return NULL; } static guint @@ -339,24 +345,17 @@ gpointer log_object, GError **error) { - gsize pdu_len; - guint8 *pdu; - MMSmsPart *part; + g_autofree guint8 *pdu = NULL; + gsize pdu_len; /* Convert PDU from hex to binary */ - pdu = (guint8 *) mm_utils_hexstr2bin (hexpdu, &pdu_len); + pdu = mm_utils_hexstr2bin (hexpdu, -1, &pdu_len, error); if (!pdu) { - g_set_error_literal (error, - MM_CORE_ERROR, - MM_CORE_ERROR_FAILED, - "Couldn't convert 3GPP PDU from hex to binary"); + g_prefix_error (error, "Couldn't convert 3GPP PDU from hex to binary: "); return NULL; } - part = mm_sms_part_3gpp_new_from_binary_pdu (index, pdu, pdu_len, log_object, error); - g_free (pdu); - - return part; + return mm_sms_part_3gpp_new_from_binary_pdu (index, pdu, pdu_len, log_object, FALSE, error); } MMSmsPart * @@ -364,6 +363,7 @@ const guint8 *pdu, gsize pdu_len, gpointer log_object, + gboolean transfer_route, GError **error) { MMSmsPart *sms_part; @@ -380,6 +380,7 @@ guint tp_dcs_offset = 0; guint tp_user_data_len_offset = 0; MMSmsEncoding user_data_encoding = MM_SMS_ENCODING_UNKNOWN; + gchar *address; /* Create the new MMSmsPart */ sms_part = mm_sms_part_new (index, MM_SMS_PDU_TYPE_UNKNOWN); @@ -404,20 +405,28 @@ offset = 0; - /* ---------------------------------------------------------------------- */ - /* SMSC, in address format, precedes the TPDU - * First byte represents the number of BYTES for the address value */ - PDU_SIZE_CHECK (1, "cannot read SMSC address length"); - smsc_addr_size_bytes = pdu[offset++]; - if (smsc_addr_size_bytes > 0) { - PDU_SIZE_CHECK (offset + smsc_addr_size_bytes, "cannot read SMSC address"); - /* SMSC may not be given in DELIVER PDUs */ - mm_sms_part_take_smsc (sms_part, - sms_decode_address (&pdu[1], 2 * (smsc_addr_size_bytes - 1))); - mm_obj_dbg (log_object, " SMSC address parsed: '%s'", mm_sms_part_get_smsc (sms_part)); - offset += smsc_addr_size_bytes; + if (!transfer_route) { + /* ---------------------------------------------------------------------- */ + /* SMSC, in address format, precedes the TPDU + * First byte represents the number of BYTES for the address value */ + PDU_SIZE_CHECK (1, "cannot read SMSC address length"); + smsc_addr_size_bytes = pdu[offset++]; + if (smsc_addr_size_bytes > 0) { + PDU_SIZE_CHECK (offset + smsc_addr_size_bytes, "cannot read SMSC address"); + /* SMSC may not be given in DELIVER PDUs */ + address = sms_decode_address (&pdu[1], 2 * (smsc_addr_size_bytes - 1), error); + if (!address) { + g_prefix_error (error, "Couldn't read SMSC address: "); + mm_sms_part_free (sms_part); + return NULL; + } + mm_sms_part_take_smsc (sms_part, g_steal_pointer (&address)); + mm_obj_dbg (log_object, " SMSC address parsed: '%s'", mm_sms_part_get_smsc (sms_part)); + offset += smsc_addr_size_bytes; + } else + mm_obj_dbg (log_object, " no SMSC address given"); } else - mm_obj_dbg (log_object, " no SMSC address given"); + mm_obj_dbg (log_object, " This is a transfer-route message"); /* ---------------------------------------------------------------------- */ @@ -485,9 +494,13 @@ tp_addr_size_bytes = (tp_addr_size_digits + 1) >> 1; PDU_SIZE_CHECK (offset + tp_addr_size_bytes, "cannot read number"); - mm_sms_part_take_number (sms_part, - sms_decode_address (&pdu[offset], - tp_addr_size_digits)); + address = sms_decode_address (&pdu[offset], tp_addr_size_digits, error); + if (!address) { + g_prefix_error (error, "Couldn't read address: "); + mm_sms_part_free (sms_part); + return NULL; + } + mm_sms_part_take_number (sms_part, g_steal_pointer (&address)); mm_obj_dbg (log_object, " number parsed: %s", mm_sms_part_get_number (sms_part)); offset += (1 + tp_addr_size_bytes); /* +1 due to the Type of Address byte */ @@ -716,17 +729,24 @@ switch (user_data_encoding) { case MM_SMS_ENCODING_GSM7: case MM_SMS_ENCODING_UCS2: - /* Otherwise if it's 7-bit or UCS2 we can decode it */ - mm_obj_dbg (log_object, "decoding SMS text with %u elements", tp_user_data_size_elements); - mm_sms_part_take_text (sms_part, - sms_decode_text (&pdu[tp_user_data_offset], - tp_user_data_size_elements, - user_data_encoding, - bit_offset, - log_object)); - g_warn_if_fail (mm_sms_part_get_text (sms_part) != NULL); - break; + { + gchar *text; + /* Otherwise if it's 7-bit or UCS2 we can decode it */ + mm_obj_dbg (log_object, "decoding SMS text with %u elements", tp_user_data_size_elements); + text = sms_decode_text (&pdu[tp_user_data_offset], + tp_user_data_size_elements, + user_data_encoding, + bit_offset, + log_object, + error); + if (!text) { + mm_sms_part_free (sms_part); + return NULL; + } + mm_sms_part_take_text (sms_part, text); + break; + } case MM_SMS_ENCODING_8BIT: case MM_SMS_ENCODING_UNKNOWN: default: @@ -969,12 +989,15 @@ } if (encoding == MM_SMS_ENCODING_GSM7) { - guint8 *unpacked, *packed; - guint32 unlen = 0, packlen = 0; + g_autoptr(GByteArray) unpacked = NULL; + g_autofree guint8 *packed = NULL; + guint32 packlen = 0; + + unpacked = mm_modem_charset_bytearray_from_utf8 (mm_sms_part_get_text (part), MM_MODEM_CHARSET_GSM, FALSE, error); + if (!unpacked) + goto error; - unpacked = mm_charset_utf8_to_unpacked_gsm (mm_sms_part_get_text (part), &unlen); - if (!unpacked || unlen == 0) { - g_free (unpacked); + if (unpacked->len == 0) { g_set_error_literal (error, MM_MESSAGE_ERROR, MM_MESSAGE_ERROR_INVALID_PDU_PARAMETER, @@ -985,15 +1008,13 @@ /* Set real data length, in septets * If we had UDH, add 7 septets */ - *udl_ptr = mm_sms_part_get_concat_sequence (part) ? (7 + unlen) : unlen; + *udl_ptr = mm_sms_part_get_concat_sequence (part) ? (7 + unpacked->len) : unpacked->len; mm_obj_dbg (log_object, " user data length is %u septets (%s UDH)", *udl_ptr, mm_sms_part_get_concat_sequence (part) ? "with" : "without"); - packed = mm_charset_gsm_pack (unpacked, unlen, shift, &packlen); - g_free (unpacked); + packed = mm_charset_gsm_pack (unpacked->data, unpacked->len, shift, &packlen); if (!packed || packlen == 0) { - g_free (packed); g_set_error_literal (error, MM_MESSAGE_ERROR, MM_MESSAGE_ERROR_INVALID_PDU_PARAMETER, @@ -1002,16 +1023,14 @@ } memcpy (&pdu[offset], packed, packlen); - g_free (packed); offset += packlen; } else if (encoding == MM_SMS_ENCODING_UCS2) { g_autoptr(GByteArray) array = NULL; g_autoptr(GError) inner_error = NULL; - /* Try to guess a good value for the array */ - array = g_byte_array_sized_new (strlen (mm_sms_part_get_text (part)) * 2); /* Always assume UTF-16 instead of UCS-2! */ - if (!mm_modem_charset_byte_array_append (array, mm_sms_part_get_text (part), FALSE, MM_MODEM_CHARSET_UTF16, &inner_error)) { + array = mm_modem_charset_bytearray_from_utf8 (mm_sms_part_get_text (part), MM_MODEM_CHARSET_UTF16, FALSE, &inner_error); + if (!array) { g_set_error (error, MM_MESSAGE_ERROR, MM_MESSAGE_ERROR_INVALID_PDU_PARAMETER, diff -Nru modemmanager-1.14.10/src/mm-sms-part-3gpp.h modemmanager-1.16.6/src/mm-sms-part-3gpp.h --- modemmanager-1.14.10/src/mm-sms-part-3gpp.h 2020-09-28 16:25:21.000000000 +0800 +++ modemmanager-1.16.6/src/mm-sms-part-3gpp.h 2021-06-06 21:40:59.000000000 +0800 @@ -30,6 +30,7 @@ const guint8 *pdu, gsize pdu_len, gpointer log_object, + gboolean transfer_route, GError **error); guint8 *mm_sms_part_3gpp_get_submit_pdu (MMSmsPart *part, guint *out_pdulen, diff -Nru modemmanager-1.14.10/src/mm-sms-part-cdma.c modemmanager-1.16.6/src/mm-sms-part-cdma.c --- modemmanager-1.14.10/src/mm-sms-part-cdma.c 2021-01-08 23:22:00.000000000 +0800 +++ modemmanager-1.16.6/src/mm-sms-part-cdma.c 2021-06-06 21:40:59.000000000 +0800 @@ -317,24 +317,17 @@ gpointer log_object, GError **error) { - gsize pdu_len; - guint8 *pdu; - MMSmsPart *part; + g_autofree guint8 *pdu = NULL; + gsize pdu_len; /* Convert PDU from hex to binary */ - pdu = (guint8 *) mm_utils_hexstr2bin (hexpdu, &pdu_len); + pdu = mm_utils_hexstr2bin (hexpdu, -1, &pdu_len, error); if (!pdu) { - g_set_error_literal (error, - MM_CORE_ERROR, - MM_CORE_ERROR_FAILED, - "Couldn't convert CDMA PDU from hex to binary"); + g_prefix_error (error, "Couldn't convert CDMA PDU from hex to binary: "); return NULL; } - part = mm_sms_part_cdma_new_from_binary_pdu (index, pdu, pdu_len, log_object, error); - g_free (pdu); - - return part; + return mm_sms_part_cdma_new_from_binary_pdu (index, pdu, pdu_len, log_object, error); } struct Parameter { @@ -1375,65 +1368,49 @@ return TRUE; } -static void +static GByteArray * decide_best_encoding (const gchar *text, gpointer log_object, - GByteArray **out, guint *num_fields, guint *num_bits_per_field, - Encoding *encoding) + Encoding *encoding, + GError **error) { - guint ascii_unsupported = 0; - guint i; - guint len; - g_autoptr(GError) error = NULL; + g_autoptr(GByteArray) barray = NULL; + MMModemCharset target_charset = MM_MODEM_CHARSET_UNKNOWN; + guint len; len = strlen (text); - /* Check if we can do ASCII-7 */ - for (i = 0; i < len; i++) { - if (text[i] & 0x80) { - ascii_unsupported++; - break; - } + if (mm_charset_can_convert_to (text, MM_MODEM_CHARSET_IRA)) + target_charset = MM_MODEM_CHARSET_IRA; + else if (mm_charset_can_convert_to (text, MM_MODEM_CHARSET_8859_1)) + target_charset = MM_MODEM_CHARSET_8859_1; + else + target_charset = MM_MODEM_CHARSET_UCS2; + + barray = mm_modem_charset_bytearray_from_utf8 (text, target_charset, FALSE, error); + if (!barray) { + g_prefix_error (error, "Couldn't decide best encoding: "); + return NULL; } - /* If ASCII-7 already supported, done we are */ - if (!ascii_unsupported) { - *out = g_byte_array_sized_new (len); - g_byte_array_append (*out, (const guint8 *)text, len); + if (target_charset == MM_MODEM_CHARSET_IRA) { *num_fields = len; *num_bits_per_field = 7; *encoding = ENCODING_ASCII_7BIT; - return; - } - - /* Check if we can do Latin encoding */ - if (mm_charset_can_convert_to (text, MM_MODEM_CHARSET_8859_1)) { - *out = g_byte_array_sized_new (len); - if (!mm_modem_charset_byte_array_append (*out, - text, - FALSE, - MM_MODEM_CHARSET_8859_1, - &error)) - mm_obj_warn (log_object, "failed to convert to latin encoding: %s", error->message); - *num_fields = (*out)->len; + } else if (target_charset == MM_MODEM_CHARSET_8859_1) { + *num_fields = barray->len; *num_bits_per_field = 8; *encoding = ENCODING_LATIN; - return; - } + } else if (target_charset == MM_MODEM_CHARSET_UCS2) { + *num_fields = barray->len / 2; + *num_bits_per_field = 16; + *encoding = ENCODING_UNICODE; + } else + g_assert_not_reached (); - /* If no Latin and no ASCII, default to UTF-16 */ - *out = g_byte_array_sized_new (len * 2); - if (!mm_modem_charset_byte_array_append (*out, - text, - FALSE, - MM_MODEM_CHARSET_UCS2, - &error)) - mm_obj_warn (log_object, "failed to convert to UTF-16 encoding: %s", error->message); - *num_fields = (*out)->len / 2; - *num_bits_per_field = 16; - *encoding = ENCODING_UNICODE; + return g_steal_pointer (&barray); } static gboolean @@ -1477,12 +1454,14 @@ /* Text or Data */ if (text) { - decide_best_encoding (text, - log_object, - &converted, - &num_fields, - &num_bits_per_field, - &encoding); + converted = decide_best_encoding (text, + log_object, + &num_fields, + &num_bits_per_field, + &encoding, + error); + if (!converted) + return FALSE; aux = (const GByteArray *)converted; } else { aux = data; diff -Nru modemmanager-1.14.10/src/mm-sms-qmi.c modemmanager-1.16.6/src/mm-sms-qmi.c --- modemmanager-1.14.10/src/mm-sms-qmi.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/mm-sms-qmi.c 2021-06-06 21:40:59.000000000 +0800 @@ -24,6 +24,7 @@ #define _LIBMM_INSIDE_MM #include +#include "mm-broadband-modem-qmi.h" #include "mm-modem-helpers-qmi.h" #include "mm-iface-modem.h" #include "mm-iface-modem-messaging.h" @@ -53,7 +54,7 @@ NULL); g_assert (MM_IS_BASE_MODEM (modem)); - port = mm_base_modem_peek_port_qmi (modem); + port = mm_broadband_modem_qmi_peek_port_qmi (MM_BROADBAND_MODEM_QMI (modem)); g_object_unref (modem); if (!port) { diff -Nru modemmanager-1.14.10/src/mm-utils.c modemmanager-1.16.6/src/mm-utils.c --- modemmanager-1.14.10/src/mm-utils.c 1970-01-01 08:00:00.000000000 +0800 +++ modemmanager-1.16.6/src/mm-utils.c 2021-06-06 21:40:59.000000000 +0800 @@ -0,0 +1,47 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details: + * + * Singleton support imported from NetworkManager. + * (C) Copyright 2014 Red Hat, Inc. + * + * GPtrArray lookup with GEqualFunc imported from GLib 2.48 + */ + +#include "mm-utils.h" + +#if !GLIB_CHECK_VERSION(2,54,0) + +gboolean +mm_ptr_array_find_with_equal_func (GPtrArray *haystack, + gconstpointer needle, + GEqualFunc equal_func, + guint *index_) +{ + guint i; + + g_return_val_if_fail (haystack != NULL, FALSE); + + if (equal_func == NULL) + equal_func = g_direct_equal; + + for (i = 0; i < haystack->len; i++) { + if (equal_func (g_ptr_array_index (haystack, i), needle)) { + if (index_ != NULL) + *index_ = i; + return TRUE; + } + } + + return FALSE; +} + +#endif diff -Nru modemmanager-1.14.10/src/mm-utils.h modemmanager-1.16.6/src/mm-utils.h --- modemmanager-1.14.10/src/mm-utils.h 2020-09-28 16:25:21.000000000 +0800 +++ modemmanager-1.16.6/src/mm-utils.h 2021-06-06 21:40:59.000000000 +0800 @@ -12,6 +12,8 @@ * * Singleton support imported from NetworkManager. * (C) Copyright 2014 Red Hat, Inc. + * + * GPtrArray lookup with GEqualFunc imported from GLib 2.48 */ #ifndef MM_UTILS_H @@ -78,4 +80,16 @@ } \ MM_DEFINE_SINGLETON_DESTRUCTOR(TYPE) + +#if !GLIB_CHECK_VERSION(2,54,0) + +/* Pointer Array lookup with a GEqualFunc, imported from GLib 2.54 */ +#define g_ptr_array_find_with_equal_func mm_ptr_array_find_with_equal_func +gboolean mm_ptr_array_find_with_equal_func (GPtrArray *haystack, + gconstpointer needle, + GEqualFunc equal_func, + guint *index_); + +#endif + #endif /* MM_UTILS_H */ diff -Nru modemmanager-1.14.10/src/tests/Makefile.in modemmanager-1.16.6/src/tests/Makefile.in --- modemmanager-1.14.10/src/tests/Makefile.in 2021-01-16 21:19:56.000000000 +0800 +++ modemmanager-1.16.6/src/tests/Makefile.in 2021-06-06 21:43:43.000000000 +0800 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 Free Software Foundation, Inc. @@ -322,6 +322,8 @@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBELOGIND_CFLAGS = @LIBELOGIND_CFLAGS@ +LIBELOGIND_LIBS = @LIBELOGIND_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBMM_GLIB_CFLAGS = @LIBMM_GLIB_CFLAGS@ @@ -446,6 +448,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff -Nru modemmanager-1.14.10/src/tests/test-at-serial-port.c modemmanager-1.16.6/src/tests/test-at-serial-port.c --- modemmanager-1.14.10/src/tests/test-at-serial-port.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/tests/test-at-serial-port.c 2021-06-06 21:40:59.000000000 +0800 @@ -18,6 +18,7 @@ #include #include "mm-port-serial-at.h" +#include "mm-serial-parsers.h" #include "mm-log-test.h" typedef struct { @@ -25,6 +26,12 @@ const gchar *without_echo; } EchoRemovalTest; +typedef struct { + const gchar *response; + const gboolean found; + const gboolean expected_error; +} ParseResponseTest; + static const EchoRemovalTest echo_removal_tests[] = { { "\r\n", "\r\n" }, { "\r", "\r" }, @@ -41,6 +48,41 @@ { "\r\nthis is valid\r\nand so is this\r\n", "\r\nthis is valid\r\nand so is this\r\n" }, }; +static const ParseResponseTest parse_ok_tests[] = { + { "\r\nOK\r\n", TRUE, FALSE}, + { "\r\nOK\r\n\r\n+CMTI: \"ME\",1\r\n", TRUE, FALSE}, + { "\r\nOK\r\n\r\n+CIEV: 7,1\r\n\r\n+CRING: VOICE\r\n\r\n+CLIP: \"+0123456789\",145,,,,0\r\n", TRUE, FALSE}, + { "\r\nUNKNOWN COMMAND\r\n", FALSE, FALSE} +}; + +static const ParseResponseTest parse_error_tests[] = { + { "\r\nUNKNOWN COMMAND\r\n", FALSE, FALSE}, + { "\r\nERROR\r\n", TRUE, TRUE}, + { "\r\nERROR\r\n\r\noooops\r\n", TRUE, TRUE}, + { "\r\n+CME ERROR: raspberry\r\n", TRUE, TRUE}, + { "\r\n+CME ERROR: 123\r\n", TRUE, TRUE}, + { "\r\n+CME ERROR: \r\n", TRUE, TRUE}, + { "\r\n+CME ERROR:\r\n", FALSE, FALSE}, + { "\r\n+CMS ERROR: bananas\r\n", TRUE, TRUE}, + { "\r\n+CMS ERROR: 456\r\n", TRUE, TRUE}, + { "\r\n+CMS ERROR: \r\n", TRUE, TRUE}, + { "\r\n+CMS ERROR:\r\n", FALSE, FALSE}, + { "\r\nMODEM ERROR: 5\r\n", TRUE, TRUE}, + { "\r\nMODEM ERROR: apple\r\n", FALSE, FALSE}, + { "\r\nMODEM ERROR: \r\n", FALSE, FALSE}, + { "\r\nMODEM ERROR:\r\n", FALSE, FALSE}, + { "\r\nCOMMAND NOT SUPPORT\r\n", TRUE, TRUE}, + { "\r\nCOMMAND NOT SUPPORT\r\n\r\nSomething extra\r\n", TRUE, TRUE}, + { "\r\nNO CARRIER\r\n", TRUE, TRUE}, + { "\r\nNO CARRIER\r\n\r\nSomething extra\r\n", TRUE, TRUE}, + { "\r\nBUSY\r\n", TRUE, TRUE}, + { "\r\nBUSY\r\n\r\nSomething extra\r\n", TRUE, TRUE}, + { "\r\nNO ANSWER\r\n", TRUE, TRUE}, + { "\r\nNO ANSWER\r\n\r\nSomething extra\r\n", TRUE, TRUE}, + { "\r\nNO DIALTONE\r\n", TRUE, TRUE}, + { "\r\nNO DIALTONE\r\n\r\nSomething extra\r\n", TRUE, TRUE} +}; + static void at_serial_echo_removal (void) { @@ -64,11 +106,56 @@ } } +static void +_run_parse_test (const ParseResponseTest tests[], guint number_of_tests) +{ + guint i; + gpointer parser; + GError *error = NULL; + gboolean found = FALSE; + GString *response; + + for (i = 0; i < number_of_tests; i++) { + parser = mm_serial_parser_v1_new (); + response = g_string_new (tests[i].response); + found = mm_serial_parser_v1_parse (parser, response, NULL, &error); + + /* Verify if we expect a match or not */ + g_assert_cmpint (found, ==, tests[i].found); + + /* Error expected */ + if (tests[i].expected_error) { + g_assert (error != NULL); + } + /* No error expected */ + else { + g_assert_no_error (error); + } + + g_string_free (response, TRUE); + error = NULL ; + } +} + +static void +at_serial_parse_ok (void) +{ + _run_parse_test (parse_ok_tests, G_N_ELEMENTS(parse_ok_tests)); +} + +static void +at_serial_parse_error (void) +{ + _run_parse_test (parse_error_tests, G_N_ELEMENTS(parse_error_tests)); +} + int main (int argc, char **argv) { g_test_init (&argc, &argv, NULL); g_test_add_func ("/ModemManager/AT-serial/echo-removal", at_serial_echo_removal); + g_test_add_func ("/ModemManager/AT-serial/parse-ok", at_serial_parse_ok); + g_test_add_func ("/ModemManager/AT-serial/parse-error", at_serial_parse_error); return g_test_run (); } diff -Nru modemmanager-1.14.10/src/tests/test-charsets.c modemmanager-1.16.6/src/tests/test-charsets.c --- modemmanager-1.14.10/src/tests/test-charsets.c 2021-01-08 23:22:00.000000000 +0800 +++ modemmanager-1.16.6/src/tests/test-charsets.c 2021-06-06 21:40:59.000000000 +0800 @@ -23,23 +23,24 @@ static void common_test_gsm7 (const gchar *in_utf8) { - guint32 unpacked_gsm_len = 0; guint32 packed_gsm_len = 0; guint32 unpacked_gsm_len_2 = 0; - g_autofree guint8 *unpacked_gsm = NULL; + g_autoptr(GByteArray) unpacked_gsm = NULL; g_autofree guint8 *packed_gsm = NULL; - g_autofree guint8 *unpacked_gsm_2 = NULL; + guint8 *unpacked_gsm_2 = NULL; + g_autoptr(GByteArray) unpacked_gsm_2_array = NULL; g_autofree gchar *built_utf8 = NULL; + g_autoptr(GError) error = NULL; /* Convert to GSM */ - unpacked_gsm = mm_charset_utf8_to_unpacked_gsm (in_utf8, &unpacked_gsm_len); + unpacked_gsm = mm_modem_charset_bytearray_from_utf8 (in_utf8, MM_MODEM_CHARSET_GSM, FALSE, &error); g_assert_nonnull (unpacked_gsm); - g_assert_cmpuint (unpacked_gsm_len, >, 0); + g_assert_no_error (error); /* Pack */ - packed_gsm = mm_charset_gsm_pack (unpacked_gsm, unpacked_gsm_len, 0, &packed_gsm_len); + packed_gsm = mm_charset_gsm_pack (unpacked_gsm->data, unpacked_gsm->len, 0, &packed_gsm_len); g_assert_nonnull (packed_gsm); - g_assert_cmpuint (packed_gsm_len, <=, unpacked_gsm_len); + g_assert_cmpuint (packed_gsm_len, <=, unpacked_gsm->len); #if 0 { @@ -56,10 +57,12 @@ /* Unpack */ unpacked_gsm_2 = mm_charset_gsm_unpack (packed_gsm, packed_gsm_len * 8 / 7, 0, &unpacked_gsm_len_2); g_assert_nonnull (unpacked_gsm_2); + unpacked_gsm_2_array = g_byte_array_new_take (unpacked_gsm_2, unpacked_gsm_len_2); /* And back to UTF-8 */ - built_utf8 = (gchar *) mm_charset_gsm_unpacked_to_utf8 (unpacked_gsm_2, unpacked_gsm_len_2); + built_utf8 = mm_modem_charset_bytearray_to_utf8 (unpacked_gsm_2_array, MM_MODEM_CHARSET_GSM, FALSE, &error); g_assert_nonnull (built_utf8); + g_assert_no_error (error); g_assert_cmpstr (built_utf8, ==, in_utf8); } @@ -314,53 +317,71 @@ } static void -test_take_convert_ucs2_hex_utf8 (void) +test_str_ucs2_to_from_utf8 (void) { - gchar *src, *converted, *utf8; + const gchar *src = "0054002D004D006F00620069006C0065"; + g_autofree gchar *utf8 = NULL; + g_autofree gchar *dst = NULL; + g_autoptr(GError) error = NULL; - /* Ensure hex-encoded UCS-2 works */ - src = g_strdup ("0054002d004d006f00620069006c0065"); - converted = mm_charset_take_and_convert_to_utf8 (src, MM_MODEM_CHARSET_UCS2); - g_assert_cmpstr (converted, ==, "T-Mobile"); - utf8 = mm_utf8_take_and_convert_to_charset (converted, MM_MODEM_CHARSET_UCS2); - g_assert_cmpstr (utf8, ==, "0054002D004D006F00620069006C0065"); - g_free (utf8); + utf8 = mm_modem_charset_str_to_utf8 (src, -1, MM_MODEM_CHARSET_UCS2, FALSE, &error); + g_assert_no_error (error); + g_assert_cmpstr (utf8, ==, "T-Mobile"); + + dst = mm_modem_charset_str_from_utf8 (utf8, MM_MODEM_CHARSET_UCS2, FALSE, &error); + g_assert_no_error (error); + g_assert_cmpstr (dst, ==, src); } static void -test_take_convert_ucs2_bad_ascii (void) +test_str_gsm_to_from_utf8 (void) { - gchar *src, *converted; + const gchar *src = "T-Mobile"; + g_autofree gchar *utf8 = NULL; + g_autofree gchar *dst = NULL; + g_autoptr(GError) error = NULL; - /* Test that something mostly ASCII returns most of the original string */ - src = g_strdup ("Orange\241"); - converted = mm_charset_take_and_convert_to_utf8 (src, MM_MODEM_CHARSET_UCS2); - g_assert_cmpstr (converted, ==, "Orange"); - g_free (converted); -} + /* Note: as long as the GSM string doesn't contain the '@' character, str_to_utf8() + * and str_from_utf8() can safely be used */ -static void -test_take_convert_ucs2_bad_ascii2 (void) -{ - gchar *src, *converted; + utf8 = mm_modem_charset_str_to_utf8 (src, -1, MM_MODEM_CHARSET_GSM, FALSE, &error); + g_assert_no_error (error); + g_assert_cmpstr (utf8, ==, src); - /* Ensure something completely screwed up doesn't crash */ - src = g_strdup ("\241\255\254\250\244\234"); - converted = mm_charset_take_and_convert_to_utf8 (src, MM_MODEM_CHARSET_UCS2); - g_assert (converted == NULL); + dst = mm_modem_charset_str_from_utf8 (utf8, MM_MODEM_CHARSET_GSM, FALSE, &error); + g_assert_no_error (error); + g_assert_cmpstr (dst, ==, src); } static void -test_take_convert_gsm_utf8 (void) +test_str_gsm_to_from_utf8_with_at (void) { - gchar *src, *converted, *utf8; + /* The NULs are '@' chars, except for the trailing one which is always taken as end-of-string */ + const gchar src[] = { 'T', '-', 'M', 0x00, 'o', 'b', 'i', 0x00, 'l', 'e', 0x00 }; + const gchar *utf8_expected = "T-M@obi@le"; + const gchar *src_translit = "T-M?obi?le"; + g_autofree gchar *utf8 = NULL; + g_autofree gchar *dst = NULL; + g_autoptr(GError) error = NULL; - src = g_strdup ("T-Mobile"); - converted = mm_charset_take_and_convert_to_utf8 (src, MM_MODEM_CHARSET_GSM); - g_assert_cmpstr (converted, ==, "T-Mobile"); - utf8 = mm_utf8_take_and_convert_to_charset (converted, MM_MODEM_CHARSET_GSM); - g_assert_cmpstr (utf8, ==, "T-Mobile"); - g_free (utf8); + /* Note: as long as the GSM string doesn't contain the '@' character, str_to_utf8() + * and str_from_utf8() can safely be used */ + + utf8 = mm_modem_charset_str_to_utf8 (src, G_N_ELEMENTS (src), MM_MODEM_CHARSET_GSM, FALSE, &error); + g_assert_no_error (error); + g_assert_cmpstr (utf8, ==, utf8_expected); + + /* if charset conversion from UTF-8 contains '@' chars, running without transliteration + * will return an error */ + dst = mm_modem_charset_str_from_utf8 (utf8, MM_MODEM_CHARSET_GSM, FALSE, &error); + g_assert_nonnull (error); + g_assert_null (dst); + g_clear_error (&error); + + /* with transliteration, '@'->'?' */ + dst = mm_modem_charset_str_from_utf8 (utf8, MM_MODEM_CHARSET_GSM, TRUE, &error); + g_assert_no_error (error); + g_assert_cmpstr (dst, ==, src_translit); } struct charset_can_convert_to_test_s { @@ -444,10 +465,9 @@ g_test_add_func ("/MM/charsets/gsm7/pack/last-septet-alone", test_gsm7_pack_last_septet_alone); g_test_add_func ("/MM/charsets/gsm7/pack/7-chars-offset", test_gsm7_pack_7_chars_offset); - g_test_add_func ("/MM/charsets/take-convert/ucs2/hex", test_take_convert_ucs2_hex_utf8); - g_test_add_func ("/MM/charsets/take-convert/ucs2/bad-ascii", test_take_convert_ucs2_bad_ascii); - g_test_add_func ("/MM/charsets/take-convert/ucs2/bad-ascii-2", test_take_convert_ucs2_bad_ascii2); - g_test_add_func ("/MM/charsets/take-convert/gsm", test_take_convert_gsm_utf8); + g_test_add_func ("/MM/charsets/str-from-to/ucs2", test_str_ucs2_to_from_utf8); + g_test_add_func ("/MM/charsets/str-from-to/gsm", test_str_gsm_to_from_utf8); + g_test_add_func ("/MM/charsets/str-from-to/gsm-with-at", test_str_gsm_to_from_utf8_with_at); g_test_add_func ("/MM/charsets/can-convert-to", test_charset_can_covert_to); diff -Nru modemmanager-1.14.10/src/tests/test-modem-helpers.c modemmanager-1.16.6/src/tests/test-modem-helpers.c --- modemmanager-1.14.10/src/tests/test-modem-helpers.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/tests/test-modem-helpers.c 2021-06-06 21:40:59.000000000 +0800 @@ -626,9 +626,10 @@ static void test_cops_response_mf627a (void *f, gpointer d) { + /* The '@' in this string is ASCII 0x40, and 0x40 is a valid GSM-7 char: 'ยก' (which is 0xc2,0xa1 in UTF-8) */ const char *reply = "+COPS: (2,\"AT&T@\",\"AT&TD\",\"310410\",0),(3,\"Vstream Wireless\",\"VSTREAM\",\"31026\",0),"; static MM3gppNetworkInfo expected[] = { - { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, (gchar *) "AT&T@", (gchar *) "AT&TD", (gchar *) "310410", MM_MODEM_ACCESS_TECHNOLOGY_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, (gchar *) "AT&Tยก", (gchar *) "AT&TD", (gchar *) "310410", MM_MODEM_ACCESS_TECHNOLOGY_GSM }, { MM_MODEM_3GPP_NETWORK_AVAILABILITY_FORBIDDEN, (gchar *) "Vstream Wireless", (gchar *) "VSTREAM", (gchar *) "31026", MM_MODEM_ACCESS_TECHNOLOGY_GSM }, }; @@ -638,9 +639,10 @@ static void test_cops_response_mf627b (void *f, gpointer d) { + /* The '@' in this string is ASCII 0x40, and 0x40 is a valid GSM-7 char: 'ยก' (which is 0xc2,0xa1 in UTF-8) */ const char *reply = "+COPS: (2,\"AT&Tp\",\"AT&T@\",\"310410\",0),(3,\"\",\"\",\"31026\",0),"; static MM3gppNetworkInfo expected[] = { - { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, (gchar *) "AT&Tp", (gchar *) "AT&T@", (gchar *) "310410", MM_MODEM_ACCESS_TECHNOLOGY_GSM }, + { MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT, (gchar *) "AT&Tp", (gchar *) "AT&Tยก", (gchar *) "310410", MM_MODEM_ACCESS_TECHNOLOGY_GSM }, { MM_MODEM_3GPP_NETWORK_AVAILABILITY_FORBIDDEN, NULL, NULL, (gchar *) "31026", MM_MODEM_ACCESS_TECHNOLOGY_GSM }, }; @@ -1041,7 +1043,7 @@ gchar *str; str = g_strdup (t->input); - mm_3gpp_normalize_operator (&str, t->charset); + mm_3gpp_normalize_operator (&str, t->charset, NULL); if (!t->normalized) g_assert (!str); else @@ -4429,20 +4431,22 @@ typedef struct { const guint8 bcd[10]; gsize bcd_len; - const gchar *str; + const gchar *low_nybble_first_str; + const gchar *high_nybble_first_str; } BcdToStringTest; static const BcdToStringTest bcd_to_string_tests[] = { - { { }, 0, "" }, - { { 0x01 }, 1, "10" }, - { { 0x1F }, 1, "" }, - { { 0xE2 }, 1, "2" }, - { { 0xD3 }, 1, "3" }, - { { 0xC4 }, 1, "4" }, - { { 0xB1, 0x23 }, 2, "1" }, - { { 0x01, 0x23, 0x45, 0x67 }, 4, "10325476" }, - { { 0x01, 0x23, 0x45, 0xA7 }, 4, "1032547" }, - { { 0x01, 0x23, 0x45, 0x67 }, 2, "1032" }, + { { }, 0, "", "" }, + { { 0x01 }, 1, "10", "01" }, + { { 0x1F }, 1, "", "1" }, + { { 0xE2 }, 1, "2", "" }, + { { 0xD3 }, 1, "3", "" }, + { { 0xC4 }, 1, "4", "" }, + { { 0xB1, 0x23 }, 2, "1", "" }, + { { 0x01, 0x2A }, 2, "10", "012" }, + { { 0x01, 0x23, 0x45, 0x67 }, 4, "10325476", "01234567" }, + { { 0x01, 0x23, 0x45, 0xA7 }, 4, "1032547", "012345" }, + { { 0x01, 0x23, 0x45, 0x67 }, 2, "1032", "0123" }, }; static void @@ -4454,8 +4458,15 @@ gchar *str; str = mm_bcd_to_string (bcd_to_string_tests[i].bcd, - bcd_to_string_tests[i].bcd_len); - g_assert_cmpstr (str, ==, bcd_to_string_tests[i].str); + bcd_to_string_tests[i].bcd_len, + TRUE /* low_nybble_first */); + g_assert_cmpstr (str, ==, bcd_to_string_tests[i].low_nybble_first_str); + g_free (str); + + str = mm_bcd_to_string (bcd_to_string_tests[i].bcd, + bcd_to_string_tests[i].bcd_len, + FALSE /* low_nybble_first */); + g_assert_cmpstr (str, ==, bcd_to_string_tests[i].high_nybble_first_str); g_free (str); } } diff -Nru modemmanager-1.14.10/src/tests/test-sms-part-cdma.c modemmanager-1.16.6/src/tests/test-sms-part-cdma.c --- modemmanager-1.14.10/src/tests/test-sms-part-cdma.c 2021-01-16 18:58:50.000000000 +0800 +++ modemmanager-1.16.6/src/tests/test-sms-part-cdma.c 2021-06-06 21:40:59.000000000 +0800 @@ -500,6 +500,44 @@ expected, sizeof (expected)); } +static void +test_create_parse_pdu_text_ascii_encoding (void) +{ +#define MAX_TEXT_LEN 100 + guint i; + gchar text[MAX_TEXT_LEN + 1]; + + memset (text, 0, sizeof (text)); + + for (i = 0; i < MAX_TEXT_LEN; i++) { + MMSmsPart *part; + guint8 *pdu; + guint len = 0; + GError *error = NULL; + + text[i]='A'; + + part = mm_sms_part_new (0, MM_SMS_PDU_TYPE_CDMA_SUBMIT); + mm_sms_part_set_cdma_teleservice_id (part, MM_SMS_CDMA_TELESERVICE_ID_WMT); + mm_sms_part_set_number (part, "123456789"); + mm_sms_part_set_text (part, text); + pdu = mm_sms_part_cdma_get_submit_pdu (part, &len, NULL, &error); + g_assert_no_error (error); + g_assert (pdu != NULL); + mm_sms_part_free (part); + + part = mm_sms_part_cdma_new_from_binary_pdu (0, pdu, len, NULL, &error); + g_assert_no_error (error); + g_assert (part != NULL); + g_assert_cmpuint (MM_SMS_CDMA_TELESERVICE_ID_WMT, ==, mm_sms_part_get_cdma_teleservice_id (part)); + g_assert_cmpstr ("123456789", ==, mm_sms_part_get_number (part)); + g_assert_cmpstr (text, ==, mm_sms_part_get_text (part)); + mm_sms_part_free (part); + + g_free (pdu); + } +} + /************************************************************/ int main (int argc, char **argv) @@ -520,5 +558,7 @@ g_test_add_func ("/MM/SMS/CDMA/PDU-Creator/latin-encoding", test_create_pdu_text_latin_encoding); g_test_add_func ("/MM/SMS/CDMA/PDU-Creator/unicode-encoding", test_create_pdu_text_unicode_encoding); + g_test_add_func ("/MM/SMS/CDMA/PDU-Creator-Parser/ascii-encoding", test_create_parse_pdu_text_ascii_encoding); + return g_test_run (); } diff -Nru modemmanager-1.14.10/test/Makefile.in modemmanager-1.16.6/test/Makefile.in --- modemmanager-1.14.10/test/Makefile.in 2021-01-16 21:19:56.000000000 +0800 +++ modemmanager-1.16.6/test/Makefile.in 2021-06-06 21:43:43.000000000 +0800 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 Free Software Foundation, Inc. @@ -277,6 +277,8 @@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBELOGIND_CFLAGS = @LIBELOGIND_CFLAGS@ +LIBELOGIND_LIBS = @LIBELOGIND_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBMM_GLIB_CFLAGS = @LIBMM_GLIB_CFLAGS@ @@ -401,6 +403,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ diff -Nru modemmanager-1.14.10/tools/Makefile.am modemmanager-1.16.6/tools/Makefile.am --- modemmanager-1.14.10/tools/Makefile.am 1970-01-01 08:00:00.000000000 +0800 +++ modemmanager-1.16.6/tools/Makefile.am 2021-06-06 21:40:59.000000000 +0800 @@ -0,0 +1,3 @@ +SUBDIRS = . tests + +EXTRA_DIST = test-modemmanager-service.py diff -Nru modemmanager-1.14.10/tools/Makefile.in modemmanager-1.16.6/tools/Makefile.in --- modemmanager-1.14.10/tools/Makefile.in 1970-01-01 08:00:00.000000000 +0800 +++ modemmanager-1.16.6/tools/Makefile.in 2021-06-06 21:43:43.000000000 +0800 @@ -0,0 +1,711 @@ +# Makefile.in generated by automake 1.16.3 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2020 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = tools +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_code_coverage.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/mm-enable-plugin.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir distdir-am +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ +CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ +CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DBUS_SYS_DIR = @DBUS_SYS_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCOV = @GCOV@ +GDBUS_CODEGEN = @GDBUS_CODEGEN@ +GENHTML = @GENHTML@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +GUDEV_CFLAGS = @GUDEV_CFLAGS@ +GUDEV_LIBS = @GUDEV_LIBS@ +HTML_DIR = @HTML_DIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ +INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ +INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ +INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ +INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ +INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ +INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ +INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ +LCOV = @LCOV@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELOGIND_CFLAGS = @LIBELOGIND_CFLAGS@ +LIBELOGIND_LIBS = @LIBELOGIND_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMM_GLIB_CFLAGS = @LIBMM_GLIB_CFLAGS@ +LIBMM_GLIB_LIBS = @LIBMM_GLIB_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSYSTEMD_CFLAGS = @LIBSYSTEMD_CFLAGS@ +LIBSYSTEMD_LIBS = @LIBSYSTEMD_LIBS@ +LIBSYSTEMD_LOGIN_CFLAGS = @LIBSYSTEMD_LOGIN_CFLAGS@ +LIBSYSTEMD_LOGIN_LIBS = @LIBSYSTEMD_LOGIN_LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MBIM_CFLAGS = @MBIM_CFLAGS@ +MBIM_LIBS = @MBIM_LIBS@ +MKDIR_P = @MKDIR_P@ +MMCLI_CFLAGS = @MMCLI_CFLAGS@ +MMCLI_LIBS = @MMCLI_LIBS@ +MM_CFLAGS = @MM_CFLAGS@ +MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@ +MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@ +MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@ +MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@ +MM_LIBS = @MM_LIBS@ +MM_MAJOR_VERSION = @MM_MAJOR_VERSION@ +MM_MICRO_VERSION = @MM_MICRO_VERSION@ +MM_MINOR_VERSION = @MM_MINOR_VERSION@ +MM_POLKIT_SERVICE = @MM_POLKIT_SERVICE@ +MM_VERSION = @MM_VERSION@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POLKIT_CFLAGS = @POLKIT_CFLAGS@ +POLKIT_LIBS = @POLKIT_LIBS@ +POSUB = @POSUB@ +QMI_CFLAGS = @QMI_CFLAGS@ +QMI_LIBS = @QMI_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SYSTEMD_UNIT_DIR = @SYSTEMD_UNIT_DIR@ +UDEV_BASE_DIR = @UDEV_BASE_DIR@ +USE_NLS = @USE_NLS@ +VAPIGEN = @VAPIGEN@ +VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ +VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WARN_LDFLAGS = @WARN_LDFLAGS@ +WARN_SCANNERFLAGS = @WARN_SCANNERFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XSLTPROC_CHECK = @XSLTPROC_CHECK@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = . tests +EXTRA_DIST = test-modemmanager-service.py +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu tools/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff -Nru modemmanager-1.14.10/tools/test-modemmanager-service.py modemmanager-1.16.6/tools/test-modemmanager-service.py --- modemmanager-1.14.10/tools/test-modemmanager-service.py 1970-01-01 08:00:00.000000000 +0800 +++ modemmanager-1.16.6/tools/test-modemmanager-service.py 2021-06-06 21:40:59.000000000 +0800 @@ -0,0 +1,490 @@ +#!/usr/bin/env python3 +# -*- Mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + +from __future__ import print_function + +import gi +gi.require_version('ModemManager', '1.0') +from gi.repository import GLib, ModemManager +import argparse +import sys +import dbus +import dbus.service +import dbus.mainloop.glib +import random +import collections + +mainloop = GLib.MainLoop() + +######################################################### +IFACE_DBUS = 'org.freedesktop.DBus' + +class UnknownInterfaceException(dbus.DBusException): + def __init__(self, *args, **kwargs): + self._dbus_error_name = '{}.UnknownInterface'.format(IFACE_DBUS) + super().__init__(*args, **kwargs) + +class UnknownPropertyException(dbus.DBusException): + def __init__(self, *args, **kwargs): + self._dbus_error_name = '{}.UnknownProperty'.format(IFACE_DBUS) + super().__init__(*args, **kwargs) + +class MobileEquipmentException(dbus.DBusException): + _dbus_error_name = '{}.Error.MobileEquipment'.format(IFACE_DBUS) + def __init__(self, *args, **kwargs): + equipment_error_num = kwargs.pop('equipment_error', None) + if equipment_error_num is not None: + equipment_error_except = ModemManager.MobileEquipmentError(equipment_error_num) + self._dbus_error_name = '{}.Error.MobileEquipment.{}'.format(IFACE_DBUS, equipment_error_except.value_nick) + super().__init__(*args, **kwargs) + +def log(msg): + if log_file: + try: + log_file.write(msg + "\n") + log_file.flush() + except Exception: + pass + else: + print(msg) + +def to_path_array(src): + array = dbus.Array([], signature=dbus.Signature('o')) + for o in src: + array.append(to_path(o)) + return array + +def to_path(src): + if src: + return dbus.ObjectPath(src.path) + return dbus.ObjectPath("/") + +class ExportedObj(dbus.service.Object): + + DBusInterface = collections.namedtuple('DBusInterface', ['dbus_iface', 'get_props_func', 'set_props_func', 'prop_changed_func']) + + def __init__(self, bus, object_path): + super(ExportedObj, self).__init__(bus, object_path) + self._bus = bus + self.path = object_path + self.__ensure_dbus_ifaces() + log("Will add object with path '%s' to object manager" % object_path) + object_manager.add_object(self) + + def __ensure_dbus_ifaces(self): + if not hasattr(self, '_ExportedObj__dbus_ifaces'): + self.__dbus_ifaces = {} + + def add_dbus_interface(self, dbus_iface, get_props_func, set_props_func, prop_changed_func): + self.__ensure_dbus_ifaces() + self.__dbus_ifaces[dbus_iface] = ExportedObj.DBusInterface(dbus_iface, get_props_func, set_props_func, prop_changed_func) + + def __dbus_interface_get(self, dbus_iface): + if dbus_iface not in self.__dbus_ifaces: + raise UnknownInterfaceException() + return self.__dbus_ifaces[dbus_iface] + + def _dbus_property_get(self, dbus_iface, propname=None): + props = self.__dbus_interface_get(dbus_iface).get_props_func() + if propname is None: + return props + if propname not in props: + raise UnknownPropertyException() + return props[propname] + + def _dbus_property_set(self, dbus_iface, propname, value): + props = self.__dbus_interface_get(dbus_iface).get_props_func() + + try: + if props[propname] == value: + return + except KeyError: + raise UnknownPropertyException() + + if self.__dbus_interface_get(dbus_iface).set_props_func is not None: + self.__dbus_interface_get(dbus_iface).set_props_func(propname, value) + self._dbus_property_notify(dbus_iface, propname) + + def _dbus_property_notify(self, dbus_iface, propname): + prop = self._dbus_property_get(dbus_iface, propname) + self.__dbus_interface_get(dbus_iface).prop_changed_func(self, {propname: prop}) + ExportedObj.PropertiesChanged(self, dbus_iface, {propname: prop}, []) + + @dbus.service.signal(dbus.PROPERTIES_IFACE, signature='sa{sv}as') + def PropertiesChanged(self, iface, changed, invalidated): + pass + + @dbus.service.method(dbus_interface=dbus.PROPERTIES_IFACE, in_signature='s', out_signature='a{sv}') + def GetAll(self, dbus_iface): + return self._dbus_property_get(dbus_iface) + + @dbus.service.method(dbus_interface=dbus.PROPERTIES_IFACE, in_signature='ss', out_signature='v') + def Get(self, dbus_iface, name): + return self._dbus_property_get(dbus_iface, name) + + @dbus.service.method(dbus_interface=dbus.PROPERTIES_IFACE, in_signature='ssv', out_signature='') + def Set(self, dbus_iface, name, value): + return self._dbus_property_set(dbus_iface, name, value) + + def get_managed_ifaces(self): + my_ifaces = {} + for iface in self.__dbus_ifaces: + my_ifaces[iface] = self.__dbus_ifaces[iface].get_props_func() + return self.path, my_ifaces + + +################################################################### +IFACE_SIM = 'org.freedesktop.ModemManager1.Sim' + +PS_IMSI = "Imsi" +PS_OPERATOR_IDENTIFIER = "OperatorIdentifier" +PS_OPERATOR_NAME = "OperatorName" +PS_SIM_IDENTIFIER = "SimIdentifier" + +class Sim(ExportedObj): + def __init__(self, bus, counter, iccid, modem): + object_path = "/org/freedesktop/ModemManager1/SIM/%d" % counter + self.iccid = iccid + self.modem = modem + + self.add_dbus_interface(IFACE_SIM, self.__get_props, None, Sim.PropertiesChanged) + super(Sim, self).__init__(bus, object_path) + + # Properties interface + def __get_props(self): + props = {} + props[PS_IMSI] = "Imsi_1" + props[PS_OPERATOR_IDENTIFIER] = "OperatorIdentifier_1" + props[PS_OPERATOR_NAME] = "OperatorName_1" + props[PS_SIM_IDENTIFIER] = self.iccid + return props + + # methods + @dbus.service.method(dbus_interface=IFACE_SIM, in_signature='ss', out_signature='') + def ChangePin(self, old_pin, new_pin): + pass + + @dbus.service.method(dbus_interface=IFACE_SIM, in_signature='sb', out_signature='ao') + def EnablePin(self, pin, enabled): + pass + + @dbus.service.method(dbus_interface=IFACE_SIM, in_signature='s', out_signature='') + def SendPin(self, pin): + if self.modem.equipmentError is not None: + raise MobileEquipmentException(equipment_error=self.modem.equipmentError) + self.modem.unlock() + + @dbus.service.method(dbus_interface=IFACE_SIM, in_signature='ss', out_signature='') + def SendPuk(self, puk, pin): + self.modem.unlock() + + # signals + @dbus.service.signal(IFACE_SIM, signature='a{sv}') + def PropertiesChanged(self, changed): + pass + + +################################################################### +IFACE_MODEM = 'org.freedesktop.ModemManager1.Modem' + +PM_SIM = "Sim" +PM_BEARERS = "Bearers" +PM_SUPPORTED_CAPABILITIES = "SupportedCapabilities" +PM_CURRENT_CAPABILITIES = "CurrentCapabilities" +PM_MAX_BEARERS = "MaxBearers" +PM_MAX_ACTIVE_BEARERS = "MaxActiveBearers" +PM_MANUFACTURER = "Manufacturer" +PM_MODEL = "Model" +PM_REVISION = "Revision" +PM_DEVICE_IDENTIFIER = "DeviceIdentifier" +PM_DEVICE = "Device" +PM_DRIVERS = "Drivers" +PM_PLUGIN = "Plugin" +PM_PRIMARY_PORT = "PrimaryPort" +PM_PORTS = "Ports" +PM_EQUIPMENT_IDENTIFIER = "EquipmentIdentifier" +PM_UNLOCK_REQUIRED = "UnlockRequired" +PM_UNLOCK_RETRIES = "UnlockRetries" +PM_STATE = "State" +PM_STATE_FAILED_REASON = "StateFailedReason" +PM_ACCESS_TECHNOLOGIES = "AccessTechnologies" +PM_SIGNAL_QUALITY = "SignalQuality" +PM_OWN_NUMBERS = "OwnNumbers" +PM_POWER_STATE = "PowerState" +PM_SUPPORTED_MODES = "SupportedModes" +PM_CURRENT_MODES = "CurrentModes" +PM_SUPPORTED_BANDS = "SupportedBands" +PM_CURRENT_BANDS = "CurrentBands" +PM_SUPPORTED_IP_FAMILIES = "SupportedIpFamilies" + +class Modem(ExportedObj): + counter = 0 + + def __init__(self, bus, add_sim, iccid): + object_path = "/org/freedesktop/ModemManager1/Modem/%d" % Modem.counter + self.sim_object = None + if add_sim: + self.sim_object = Sim(bus, Modem.counter, iccid, self) + self.sim_path = to_path(self.sim_object) + self.equipmentError = None + self.reset_status = True + self.reset_status_clear = False + + self.__props = self.__init_default_props() + + Modem.counter = Modem.counter + 1 + + self.add_dbus_interface(IFACE_MODEM, self.__get_props, self.__set_prop, Modem.PropertiesChanged) + super(Modem, self).__init__(bus, object_path) + + # Properties interface + def __init_default_props(self): + props = {} + props[PM_SIM] = dbus.ObjectPath(self.sim_path) + props[PM_DEVICE] = dbus.String("/fake/path") + props[PM_UNLOCK_REQUIRED] = dbus.UInt32(ModemManager.ModemLock.NONE) + props[PM_STATE] = dbus.Int32(ModemManager.ModemState.UNKNOWN) + props[PM_STATE_FAILED_REASON] = dbus.UInt32(ModemManager.ModemStateFailedReason.UNKNOWN) + # Not already used properties + #props[PM_BEARERS] = None + #props[PM_SUPPORTED_CAPABILITIES] = None + #props[PM_CURRENT_CAPABILITIES] = None + #props[PM_MAX_BEARERS] = None + #props[PM_MAX_ACTIVE_BEARERS] = None + #props[PM_MANUFACTURER] = None + #props[PM_MODEL] = None + #props[PM_REVISION] = None + #props[PM_DEVICE_IDENTIFIER] = None + #props[PM_DRIVERS] = None + #props[PM_PLUGIN] = None + #props[PM_PRIMARY_PORT] = None + #props[PM_PORTS] = None + #props[PM_EQUIPMENT_IDENTIFIER] = None + #props[PM_UNLOCK_RETRIES] = dbus.UInt32(0) + #props[PM_ACCESS_TECHNOLOGIES] = None + #props[PM_SIGNAL_QUALITY] = None + #props[PM_OWN_NUMBERS] = None + #props[PM_POWER_STATE] = None + #props[PM_SUPPORTED_MODES] = None + #props[PM_CURRENT_MODES] = None + #props[PM_SUPPORTED_BANDS] = None + #props[PM_CURRENT_BANDS] = None + #props[PM_SUPPORTED_IP_FAMILIES] = None + return props + + def __get_props(self): + return self.__props + + def __set_prop(self, name, value): + try: + self.__props[name] = value + except KeyError: + pass + + def unlock(self): + self._dbus_property_set(IFACE_MODEM, PM_UNLOCK_REQUIRED , dbus.UInt32(ModemManager.ModemLock.NONE)) + + # methods + @dbus.service.method(dbus_interface=IFACE_MODEM, in_signature='b', out_signature='') + def Enable(self, enable): + pass + + @dbus.service.method(dbus_interface=IFACE_MODEM, in_signature='', out_signature='ao') + def ListBearers(self): + return None + + @dbus.service.method(dbus_interface=IFACE_MODEM, in_signature='a{sv}', out_signature='o') + def CreateBearer(self, properties): + return None + + @dbus.service.method(dbus_interface=IFACE_MODEM, in_signature='o', out_signature='') + def DeleteBearer(self, bearer): + pass + + @dbus.service.method(dbus_interface=IFACE_MODEM, in_signature='', out_signature='') + def Reset(self): + if not self.reset_status: + if self.reset_status_clear: + self.reset_status = True + self.reset_status_clear = False + + raise Exception("Fake reset exception") + + @dbus.service.method(dbus_interface=IFACE_MODEM, in_signature='s', out_signature='') + def FactoryReset(self, code): + pass + + @dbus.service.method(dbus_interface=IFACE_MODEM, in_signature='u', out_signature='') + def SetPowerState(self, state): + pass + + @dbus.service.method(dbus_interface=IFACE_MODEM, in_signature='u', out_signature='') + def SetCurrentCapabilities(self, capabilites): + pass + + @dbus.service.method(dbus_interface=IFACE_MODEM, in_signature='(uu)', out_signature='') + def SetCurrentModes(self, modes): + pass + + @dbus.service.method(dbus_interface=IFACE_MODEM, in_signature='au', out_signature='') + def SetCurrentBands(self, bands): + pass + + @dbus.service.method(dbus_interface=IFACE_MODEM, in_signature='su', out_signature='s') + def Command(self, cmd, timeout): + return None + + # signals + @dbus.service.signal(IFACE_MODEM, signature='a{sv}') + def PropertiesChanged(self, changed): + pass + + @dbus.service.signal(IFACE_MODEM, signature='uuu') + def StateChanged(self, old_state, new_state, reason): + pass + + +################################################################### +IFACE_OBJECT_MANAGER = 'org.freedesktop.DBus.ObjectManager' + +PATH_OBJECT_MANAGER = '/org/freedesktop/ModemManager1' + +IFACE_TEST = 'org.freedesktop.ModemManager1.LibmmGlibTest' +IFACE_MM = 'org.freedesktop.ModemManager1' + +class ObjectManager(dbus.service.Object): + def __init__(self, bus, object_path): + super(ObjectManager, self).__init__(bus, object_path) + self.objs = [] + self.bus = bus + self.modem = None + + @dbus.service.method(dbus_interface=IFACE_OBJECT_MANAGER, + in_signature='', out_signature='a{oa{sa{sv}}}', + sender_keyword='sender') + def GetManagedObjects(self, sender=None): + managed_objects = {} + for obj in self.objs: + name, ifaces = obj.get_managed_ifaces() + managed_objects[name] = ifaces + return managed_objects + + def add_object(self, obj): + self.objs.append(obj) + name, ifaces = obj.get_managed_ifaces() + self.InterfacesAdded(name, ifaces) + + def remove_object(self, obj): + self.objs.remove(obj) + name, ifaces = obj.get_managed_ifaces() + self.InterfacesRemoved(name, ifaces.keys()) + + @dbus.service.signal(IFACE_OBJECT_MANAGER, signature='oa{sa{sv}}') + def InterfacesAdded(self, name, ifaces): + pass + + @dbus.service.signal(IFACE_OBJECT_MANAGER, signature='oas') + def InterfacesRemoved(self, name, ifaces): + pass + + # ModemManager methods + @dbus.service.method(dbus_interface=IFACE_MM, in_signature='', out_signature='') + def ScanDevices(self): + pass + + @dbus.service.method(dbus_interface=IFACE_MM, in_signature='s', out_signature='') + def SetLogging(self, logging): + pass + + # Testing methods + @dbus.service.method(IFACE_TEST, in_signature='', out_signature='') + def Quit(self): + mainloop.quit() + + @dbus.service.method(IFACE_TEST, in_signature='bs', out_signature='o') + def AddModem(self, add_sim, iccid): + self.modem = Modem(self.bus, add_sim, iccid) + return dbus.ObjectPath(self.modem.path) + + @dbus.service.method(IFACE_TEST, in_signature='uuu', out_signature='') + def EmitStateChanged(self, old_state, new_state, reason): + if self.modem is not None: + self.modem.StateChanged(old_state, new_state, reason) + + @dbus.service.method(IFACE_TEST, in_signature='ub', out_signature='') + def SetMobileEquipmentError(self, error, clear): + if self.modem is not None: + if clear: + self.modem.equipmentError = None + else: + self.modem.equipmentError = error + + @dbus.service.method(IFACE_TEST, in_signature='bb', out_signature='') + def SetResetStatus(self, status, clear): + if self.modem is not None: + self.modem.reset_status = status + self.modem.reset_status_clear = clear + + @dbus.service.method(dbus_interface=IFACE_TEST, in_signature='', out_signature='') + def Restart(self): + bus.release_name("org.freedesktop.ModemManager1") + bus.request_name("org.freedesktop.ModemManager1") + +################################################################### +def stdin_cb(io, condition): + mainloop.quit() + +def quit_cb(user_data): + mainloop.quit() + +def main(): + parser = argparse.ArgumentParser(description="ModemManager dbus interface stub utility") + parser.add_argument("-f", "--log-file", help="Path of a file to log things into") + + cfg = parser.parse_args() + + global log_file + + if cfg.log_file: + try: + log_file = open(cfg.log_file, "w") + except Exception: + log_file = None + else: + log_file = None + + log("Starting mainloop") + dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) + + random.seed() + + global object_manager, bus + + bus = dbus.SessionBus() + log("Creating object manager for /org/freedesktop/ModemManager1") + object_manager = ObjectManager(bus, "/org/freedesktop/ModemManager1") + + log("Requesting name org.freedesktop.ModemManager1") + if not bus.request_name("org.freedesktop.ModemManager1"): + log("Unable to acquire the DBus name") + sys.exit(1) + + # Watch stdin; if it closes, assume our parent has crashed, and exit + id1 = GLib.io_add_watch(0, GLib.IOCondition.HUP, stdin_cb) + + log("Starting the main loop") + try: + mainloop.run() + except (Exception, KeyboardInterrupt): + pass + + GLib.source_remove(id1) + + log("Ending the stub") + if log_file: + log_file.close() + sys.exit(0) + + +if __name__ == '__main__': + main() diff -Nru modemmanager-1.14.10/tools/tests/Makefile.am modemmanager-1.16.6/tools/tests/Makefile.am --- modemmanager-1.14.10/tools/tests/Makefile.am 1970-01-01 08:00:00.000000000 +0800 +++ modemmanager-1.16.6/tools/tests/Makefile.am 2021-06-06 21:40:59.000000000 +0800 @@ -0,0 +1,49 @@ +include $(top_srcdir)/gtester.make + +################################################################################ +# common +################################################################################ + +AM_CFLAGS = \ + $(WARN_CFLAGS) \ + $(MM_CFLAGS) \ + -I$(top_srcdir) \ + -I$(top_srcdir)/src \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/include \ + -I$(top_srcdir)/libmm-glib \ + -I${top_srcdir}/libmm-glib/generated \ + -I${top_builddir}/libmm-glib/generated \ + $(NULL) + +LDADD = \ + $(top_builddir)/libmm-glib/libmm-glib.la \ + $(NULL) + +AM_LDFLAGS = \ + $(WARN_LDFLAGS) \ + $(MM_LIBS) \ + $(MM_LDFLAGS) \ + $(NULL) + +noinst_PROGRAMS = test-stub +test_stub_CPPFLAGS = \ + -DTEST_SERVICES=\""$(abs_top_builddir)/tools/tests/services"\" \ + $(NULL) + +# only run the test if introspection was enabled +if HAVE_INTROSPECTION +TEST_PROGS += $(noinst_PROGRAMS) +endif + +test-wrapper.sh: test-wrapper.sh.in + @sed \ + -e 's|@abs_top_builddir[@]|$(abs_top_builddir)|g' \ + -e 's|@abs_top_srcdir[@]|$(abs_top_srcdir)|g' \ + $< >$@ + @chmod +x $@ + +BUILT_SOURCES = test-wrapper.sh +CLEANFILES = test-wrapper.sh + +EXTRA_DIST += test-wrapper.sh.in services/org.freedesktop.ModemManager1.service.in diff -Nru modemmanager-1.14.10/tools/tests/Makefile.in modemmanager-1.16.6/tools/tests/Makefile.in --- modemmanager-1.14.10/tools/tests/Makefile.in 1970-01-01 08:00:00.000000000 +0800 +++ modemmanager-1.16.6/tools/tests/Makefile.in 2021-06-06 21:43:43.000000000 +0800 @@ -0,0 +1,823 @@ +# Makefile.in generated by automake 1.16.3 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2020 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +noinst_PROGRAMS = test-stub$(EXEEXT) + +# only run the test if introspection was enabled +@HAVE_INTROSPECTION_TRUE@am__append_1 = $(noinst_PROGRAMS) +subdir = tools/tests +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_code_coverage.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/mm-enable-plugin.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/vapigen.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +PROGRAMS = $(noinst_PROGRAMS) +test_stub_SOURCES = test-stub.c +test_stub_OBJECTS = test_stub-test-stub.$(OBJEXT) +test_stub_LDADD = $(LDADD) +test_stub_DEPENDENCIES = $(top_builddir)/libmm-glib/libmm-glib.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/test_stub-test-stub.Po +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = test-stub.c +DIST_SOURCES = test-stub.c +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ + $(top_srcdir)/gtester.make +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ +CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ +CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DBUS_SYS_DIR = @DBUS_SYS_DIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GCOV = @GCOV@ +GDBUS_CODEGEN = @GDBUS_CODEGEN@ +GENHTML = @GENHTML@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +GUDEV_CFLAGS = @GUDEV_CFLAGS@ +GUDEV_LIBS = @GUDEV_LIBS@ +HTML_DIR = @HTML_DIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ +INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ +INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ +INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ +INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ +INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ +INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ +INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ +LCOV = @LCOV@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELOGIND_CFLAGS = @LIBELOGIND_CFLAGS@ +LIBELOGIND_LIBS = @LIBELOGIND_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMM_GLIB_CFLAGS = @LIBMM_GLIB_CFLAGS@ +LIBMM_GLIB_LIBS = @LIBMM_GLIB_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSYSTEMD_CFLAGS = @LIBSYSTEMD_CFLAGS@ +LIBSYSTEMD_LIBS = @LIBSYSTEMD_LIBS@ +LIBSYSTEMD_LOGIN_CFLAGS = @LIBSYSTEMD_LOGIN_CFLAGS@ +LIBSYSTEMD_LOGIN_LIBS = @LIBSYSTEMD_LOGIN_LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MBIM_CFLAGS = @MBIM_CFLAGS@ +MBIM_LIBS = @MBIM_LIBS@ +MKDIR_P = @MKDIR_P@ +MMCLI_CFLAGS = @MMCLI_CFLAGS@ +MMCLI_LIBS = @MMCLI_LIBS@ +MM_CFLAGS = @MM_CFLAGS@ +MM_DEFAULT_USER_POLICY = @MM_DEFAULT_USER_POLICY@ +MM_GLIB_LT_AGE = @MM_GLIB_LT_AGE@ +MM_GLIB_LT_CURRENT = @MM_GLIB_LT_CURRENT@ +MM_GLIB_LT_REVISION = @MM_GLIB_LT_REVISION@ +MM_LIBS = @MM_LIBS@ +MM_MAJOR_VERSION = @MM_MAJOR_VERSION@ +MM_MICRO_VERSION = @MM_MICRO_VERSION@ +MM_MINOR_VERSION = @MM_MINOR_VERSION@ +MM_POLKIT_SERVICE = @MM_POLKIT_SERVICE@ +MM_VERSION = @MM_VERSION@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POLKIT_CFLAGS = @POLKIT_CFLAGS@ +POLKIT_LIBS = @POLKIT_LIBS@ +POSUB = @POSUB@ +QMI_CFLAGS = @QMI_CFLAGS@ +QMI_LIBS = @QMI_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SYSTEMD_UNIT_DIR = @SYSTEMD_UNIT_DIR@ +UDEV_BASE_DIR = @UDEV_BASE_DIR@ +USE_NLS = @USE_NLS@ +VAPIGEN = @VAPIGEN@ +VAPIGEN_MAKEFILE = @VAPIGEN_MAKEFILE@ +VAPIGEN_VAPIDIR = @VAPIGEN_VAPIDIR@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WARN_LDFLAGS = @WARN_LDFLAGS@ +WARN_SCANNERFLAGS = @WARN_SCANNERFLAGS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XSLTPROC_CHECK = @XSLTPROC_CHECK@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +GTESTER = gtester +GTESTER_REPORT = gtester-report + +# initialize variables for unconditional += appending +EXTRA_DIST = test-wrapper.sh.in \ + services/org.freedesktop.ModemManager1.service.in +TEST_PROGS = $(am__append_1) + +################################################################################ +# common +################################################################################ +AM_CFLAGS = \ + $(WARN_CFLAGS) \ + $(MM_CFLAGS) \ + -I$(top_srcdir) \ + -I$(top_srcdir)/src \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/include \ + -I$(top_srcdir)/libmm-glib \ + -I${top_srcdir}/libmm-glib/generated \ + -I${top_builddir}/libmm-glib/generated \ + $(NULL) + +LDADD = \ + $(top_builddir)/libmm-glib/libmm-glib.la \ + $(NULL) + +AM_LDFLAGS = \ + $(WARN_LDFLAGS) \ + $(MM_LIBS) \ + $(MM_LDFLAGS) \ + $(NULL) + +test_stub_CPPFLAGS = \ + -DTEST_SERVICES=\""$(abs_top_builddir)/tools/tests/services"\" \ + $(NULL) + +BUILT_SOURCES = test-wrapper.sh +CLEANFILES = test-wrapper.sh +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/gtester.make $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu tools/tests/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; +$(top_srcdir)/gtester.make $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test-stub$(EXEEXT): $(test_stub_OBJECTS) $(test_stub_DEPENDENCIES) $(EXTRA_test_stub_DEPENDENCIES) + @rm -f test-stub$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_stub_OBJECTS) $(test_stub_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_stub-test-stub.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +test_stub-test-stub.o: test-stub.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_stub_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_stub-test-stub.o -MD -MP -MF $(DEPDIR)/test_stub-test-stub.Tpo -c -o test_stub-test-stub.o `test -f 'test-stub.c' || echo '$(srcdir)/'`test-stub.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_stub-test-stub.Tpo $(DEPDIR)/test_stub-test-stub.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-stub.c' object='test_stub-test-stub.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_stub_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_stub-test-stub.o `test -f 'test-stub.c' || echo '$(srcdir)/'`test-stub.c + +test_stub-test-stub.obj: test-stub.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_stub_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_stub-test-stub.obj -MD -MP -MF $(DEPDIR)/test_stub-test-stub.Tpo -c -o test_stub-test-stub.obj `if test -f 'test-stub.c'; then $(CYGPATH_W) 'test-stub.c'; else $(CYGPATH_W) '$(srcdir)/test-stub.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_stub-test-stub.Tpo $(DEPDIR)/test_stub-test-stub.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-stub.c' object='test_stub-test-stub.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_stub_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_stub-test-stub.obj `if test -f 'test-stub.c'; then $(CYGPATH_W) 'test-stub.c'; else $(CYGPATH_W) '$(srcdir)/test-stub.c'; fi` + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) check-local +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(PROGRAMS) +installdirs: +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -f ./$(DEPDIR)/test_stub-test-stub.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f ./$(DEPDIR)/test_stub-test-stub.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: all check check-am install install-am install-exec \ + install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am \ + check-local clean clean-generic clean-libtool \ + clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +### testing rules + +# test: run all tests in cwd and subdirs +test: test-nonrecursive + @ for subdir in $(SUBDIRS) . ; do \ + test "$$subdir" = "." -o "$$subdir" = "po" || \ + ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \ + done + +# test-nonrecursive: run tests only in cwd +test-nonrecursive: ${TEST_PROGS} + @test -z "${TEST_PROGS}" || G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS} + +# test-report: run tests in subdirs and generate report +# perf-report: run tests in subdirs with -m perf and generate report +# full-report: like test-report: with -m perf and -m slow +test-report perf-report full-report: ${TEST_PROGS} + @test -z "${TEST_PROGS}" || { \ + case $@ in \ + test-report) test_options="-k";; \ + perf-report) test_options="-k -m=perf";; \ + full-report) test_options="-k -m=perf -m=slow";; \ + esac ; \ + if test -z "$$GTESTER_LOGDIR" ; then \ + ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \ + elif test -n "${TEST_PROGS}" ; then \ + ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \ + fi ; \ + } + @ ignore_logdir=true ; \ + if test -z "$$GTESTER_LOGDIR" ; then \ + GTESTER_LOGDIR=`mktemp -d "\`pwd\`/.testlogs-XXXXXX"`; export GTESTER_LOGDIR ; \ + ignore_logdir=false ; \ + fi ; \ + if test -d "$(top_srcdir)/.git" ; then \ + REVISION=`git describe` ; \ + else \ + REVISION=$(VERSION) ; \ + fi ; \ + for subdir in $(SUBDIRS) . ; do \ + test "$$subdir" = "." -o "$$subdir" = "po" || \ + ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \ + done ; \ + $$ignore_logdir || { \ + echo '' > $@.xml ; \ + echo '' >> $@.xml ; \ + echo '' >> $@.xml ; \ + echo ' $(PACKAGE)' >> $@.xml ; \ + echo ' $(VERSION)' >> $@.xml ; \ + echo " $$REVISION" >> $@.xml ; \ + echo '' >> $@.xml ; \ + for lf in `ls -L "$$GTESTER_LOGDIR"/.` ; do \ + sed '1,1s/^?]*?>//' <"$$GTESTER_LOGDIR"/"$$lf" >> $@.xml ; \ + done ; \ + echo >> $@.xml ; \ + echo '' >> $@.xml ; \ + rm -rf "$$GTESTER_LOGDIR"/ ; \ + ${GTESTER_REPORT} --version 2>/dev/null 1>&2 ; test "$$?" != 0 || ${GTESTER_REPORT} $@.xml >$@.html ; \ + } +.PHONY: test test-report perf-report full-report test-nonrecursive + +# run tests in cwd as part of make check +check-local: test-nonrecursive + +test-wrapper.sh: test-wrapper.sh.in + @sed \ + -e 's|@abs_top_builddir[@]|$(abs_top_builddir)|g' \ + -e 's|@abs_top_srcdir[@]|$(abs_top_srcdir)|g' \ + $< >$@ + @chmod +x $@ + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff -Nru modemmanager-1.14.10/tools/tests/services/org.freedesktop.ModemManager1.service.in modemmanager-1.16.6/tools/tests/services/org.freedesktop.ModemManager1.service.in --- modemmanager-1.14.10/tools/tests/services/org.freedesktop.ModemManager1.service.in 1970-01-01 08:00:00.000000000 +0800 +++ modemmanager-1.16.6/tools/tests/services/org.freedesktop.ModemManager1.service.in 2021-06-06 21:40:59.000000000 +0800 @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=org.freedesktop.ModemManager1 +Exec=@abs_top_builddir@/tools/tests/test-wrapper.sh diff -Nru modemmanager-1.14.10/tools/tests/test-stub.c modemmanager-1.16.6/tools/tests/test-stub.c --- modemmanager-1.14.10/tools/tests/test-stub.c 1970-01-01 08:00:00.000000000 +0800 +++ modemmanager-1.16.6/tools/tests/test-stub.c 2021-06-06 21:40:59.000000000 +0800 @@ -0,0 +1,459 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details: + * + * Copyright (C) 2020 Frederic Martinsons + */ + +#include +#include +#include +#include +#include +#define MM_LOG_NO_OBJECT +#include + +#define MM_TEST_IFACE_NAME "org.freedesktop.ModemManager1.LibmmGlibTest" + +typedef struct { + GMainLoop *loop; + MMManager *mm_manager; + GDBusConnection *gdbus_connection; + GDBusProxy *mm_proxy; + GDBusProxy *mm_modem_prop_proxy; + GTestDBus *test_bus; + gchar *modem_object_path; + guint timeout_id; + MMSim *sim; + gboolean pin_error; +} TestData; + +static void +setup (TestData **ptdata, + gconstpointer data) +{ + GError *error = NULL; + TestData *tdata = NULL; + + tdata = (TestData *)g_malloc0 (sizeof(TestData)); + *ptdata = tdata; + + tdata->loop = g_main_loop_new (NULL, FALSE); + g_assert_nonnull (tdata->loop); + + tdata->test_bus = g_test_dbus_new (G_TEST_DBUS_NONE); + g_assert_nonnull (tdata->test_bus); + + g_test_dbus_add_service_dir (tdata->test_bus, TEST_SERVICES); + g_test_dbus_up (tdata->test_bus); + + /* Grab a proxy to the fake NM service to trigger tests */ + tdata->mm_proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION, + G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES, + NULL, + MM_DBUS_SERVICE, + MM_DBUS_PATH, + MM_TEST_IFACE_NAME, + NULL, &error); + g_assert_no_error (error); + + tdata->gdbus_connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error); + g_assert_no_error (error); + + tdata->mm_manager = mm_manager_new_sync (tdata->gdbus_connection, + G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE, + NULL, + &error); + g_assert_no_error (error); + g_assert_nonnull (tdata->mm_manager); +} + +static void +teardown (TestData **ptdata, + gconstpointer data) +{ + TestData *tdata = NULL; + + tdata = *ptdata; + g_clear_object (&tdata->mm_modem_prop_proxy); + g_clear_object (&tdata->mm_proxy); + g_clear_object (&tdata->mm_manager); + g_clear_object (&tdata->gdbus_connection); + g_test_dbus_down (tdata->test_bus); + g_clear_object (&tdata->test_bus); + g_main_loop_unref (tdata->loop); + g_free (tdata); +} + +static gboolean +loop_timeout_cb (gpointer user_data) +{ + mm_err ("Timeout has elapsed"); + g_assert_not_reached (); + return G_SOURCE_REMOVE; +} + +static void +run_loop_for_ms (TestData *tdata, + guint32 timeout) +{ + mm_info ("Run loop for %u ms", timeout); + tdata->timeout_id = g_timeout_add (timeout, loop_timeout_cb, tdata); + g_main_loop_run (tdata->loop); +} + +static void +stop_loop (TestData *tdata) +{ + if (tdata->timeout_id) { + g_source_remove (tdata->timeout_id); + tdata->timeout_id = 0; + } + mm_info ("Stop the loop"); + g_main_loop_quit (tdata->loop); +} + +static void +add_modem_completion_cb (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + GError *error = NULL; + GVariant *dbus_return = NULL; + GVariant *obj_path_variant = NULL; + TestData *tdata = NULL; + + tdata = (TestData*)user_data; + + mm_info ("AddModem DBus call completed"); + dbus_return = g_dbus_proxy_call_finish (tdata->mm_proxy, res, &error); + g_assert_no_error (error); + g_assert_nonnull (dbus_return); + g_assert_cmpstr (g_variant_get_type_string (dbus_return), == , "(o)"); + + obj_path_variant = g_variant_get_child_value (dbus_return, 0); + tdata->modem_object_path = g_variant_dup_string (obj_path_variant, NULL); + + g_assert_null (tdata->mm_modem_prop_proxy); + tdata->mm_modem_prop_proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION, + G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES, + NULL, + MM_DBUS_SERVICE, + tdata->modem_object_path, + "org.freedesktop.DBus.Properties", + NULL, &error); + + g_assert_no_error (error); + g_assert_nonnull (tdata->mm_modem_prop_proxy); + + g_variant_unref (dbus_return); + g_variant_unref (obj_path_variant); + + stop_loop (tdata); +} + +static gchar* +add_modem (TestData *tdata, + gboolean add_sim, + const gchar *iccid) +{ + g_dbus_proxy_call (tdata->mm_proxy, + "AddModem", + g_variant_new ("(bs)", add_sim, iccid), + G_DBUS_CALL_FLAGS_NO_AUTO_START, + 1000, + NULL, + add_modem_completion_cb, + tdata); + + run_loop_for_ms (tdata, 1000); + return tdata->modem_object_path; +} + +static void +emit_state_changed_completion_cb (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + GError *error = NULL; + GVariant *dbus_return = NULL; + TestData *tdata = NULL; + + tdata = (TestData*)user_data; + + mm_info ("EmitStateChanged DBus call completed"); + dbus_return = g_dbus_proxy_call_finish (tdata->mm_proxy, res, &error); + g_assert_no_error (error); + g_assert_nonnull (dbus_return); + g_variant_unref (dbus_return); + + stop_loop (tdata); +} + +static void +set_modem_state (TestData *tdata, + MMModemState state, + MMModemStateFailedReason reason) +{ + GError *error = NULL; + GVariant *ret = NULL; + GVariant *old_state_variant = NULL; + guint old_state = 0; + + g_assert_nonnull (tdata->mm_modem_prop_proxy); + + /* Get current state */ + ret = g_dbus_proxy_call_sync (tdata->mm_modem_prop_proxy, + "org.freedesktop.DBus.Properties.Get", + g_variant_new ("(ss)", + MM_DBUS_INTERFACE_MODEM, + MM_MODEM_PROPERTY_STATE), + G_DBUS_CALL_FLAGS_NO_AUTO_START, + -1, + NULL, + &error); + g_assert_no_error (error); + g_variant_get (ret, "(v)", &old_state_variant); + old_state = (guint)g_variant_get_int32 (old_state_variant); + g_variant_unref (ret); + g_variant_unref (old_state_variant); + + ret = g_dbus_proxy_call_sync (tdata->mm_modem_prop_proxy, + "org.freedesktop.DBus.Properties.Set", + g_variant_new ("(ssv)", + MM_DBUS_INTERFACE_MODEM, + MM_MODEM_PROPERTY_STATE, + g_variant_new_int32 (state)), + G_DBUS_CALL_FLAGS_NO_AUTO_START, + -1, + NULL, + &error); + g_assert_no_error (error); + g_variant_unref (ret); + + ret = g_dbus_proxy_call_sync (tdata->mm_modem_prop_proxy, + "org.freedesktop.DBus.Properties.Set", + g_variant_new ("(ssv)", + MM_DBUS_INTERFACE_MODEM, + MM_MODEM_PROPERTY_STATEFAILEDREASON, + g_variant_new_uint32 (reason)), + G_DBUS_CALL_FLAGS_NO_AUTO_START, + -1, + NULL, + &error); + + g_assert_no_error (error); + g_variant_unref (ret); + + /* Emit state change signal */ + g_dbus_proxy_call (tdata->mm_proxy, + "EmitStateChanged", + g_variant_new ("(uuu)", old_state, state, reason), + G_DBUS_CALL_FLAGS_NO_AUTO_START, + 1000, + NULL, + emit_state_changed_completion_cb, + tdata); + + run_loop_for_ms (tdata, 1000); +} + +static void +set_modem_unlock_completion_cb (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + GError *error = NULL; + GVariant *dbus_return = NULL; + TestData *tdata = NULL; + + tdata = (TestData*)user_data; + + mm_info ("org.freedesktop.DBus.Properties.Set DBus call completed"); + dbus_return = g_dbus_proxy_call_finish (tdata->mm_modem_prop_proxy, res, &error); + g_assert_no_error (error); + g_assert_nonnull (dbus_return); + g_variant_unref (dbus_return); + + stop_loop (tdata); +} + +static void +set_modem_unlock (TestData *tdata, + MMModemLock lock_state) +{ + g_assert_nonnull (tdata->mm_modem_prop_proxy); + + g_dbus_proxy_call (tdata->mm_modem_prop_proxy, + "org.freedesktop.DBus.Properties.Set", + g_variant_new ("(ssv)", + MM_DBUS_INTERFACE_MODEM, + MM_MODEM_PROPERTY_UNLOCKREQUIRED, + g_variant_new_uint32 (lock_state)), + G_DBUS_CALL_FLAGS_NO_AUTO_START, + 1000, + NULL, + set_modem_unlock_completion_cb, + tdata); + + run_loop_for_ms (tdata, 1000); +} + +static void +set_modem_equipment_error (TestData *tdata, + MMMobileEquipmentError equipmentError, + gboolean clear) +{ + GError *error = NULL; + GVariant *ret = NULL; + + ret = g_dbus_proxy_call_sync (tdata->mm_proxy, + "SetMobileEquipmentError", + g_variant_new ("(ub)", equipmentError, clear), + G_DBUS_CALL_FLAGS_NO_AUTO_START, + 3000, + NULL, + &error); + g_assert_no_error (error); + g_variant_unref (ret); +} + +static void +test_modem_interface (TestData **ptdata, + gconstpointer data) +{ + TestData *tdata = NULL; + GDBusObject *modem_object = NULL; + MMModem *mm_modem = NULL; + g_autofree gchar *modem_path = NULL; + + tdata = *ptdata; + /* Add a modem object (with no sim attached) */ + modem_path = add_modem (tdata, FALSE, ""); + modem_object = g_dbus_object_manager_get_object (G_DBUS_OBJECT_MANAGER (tdata->mm_manager), modem_path); + g_assert_nonnull (modem_object); + + mm_modem = mm_object_get_modem (MM_OBJECT (modem_object)); + g_clear_object (&modem_object); + + /* Check the modem states */ + g_assert_cmpuint (mm_modem_get_state (mm_modem), ==, MM_MODEM_STATE_UNKNOWN); + g_assert_cmpuint (mm_modem_get_state_failed_reason (mm_modem), ==, MM_MODEM_STATE_FAILED_REASON_UNKNOWN); + + /* Set new state and check that it is propagated */ + set_modem_state (tdata, MM_MODEM_STATE_REGISTERED, MM_MODEM_STATE_FAILED_REASON_NONE); + + g_assert_cmpuint (mm_modem_get_state (mm_modem), ==, MM_MODEM_STATE_REGISTERED); + g_assert_cmpuint (mm_modem_get_state_failed_reason (mm_modem), ==, MM_MODEM_STATE_FAILED_REASON_NONE); + + g_clear_object (&mm_modem); +} + +static void +mm_sim_send_pin_completion_cb (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + GError *error = NULL; + gboolean ret = FALSE; + TestData *tdata = NULL; + + tdata = (TestData*)user_data; + + mm_info("SendPin DBus method call completed"); + ret = mm_sim_send_pin_finish (tdata->sim, res, &error); + if (tdata->pin_error) { + g_assert_nonnull (error); + g_assert_false (ret); + g_clear_error (&error); + } else { + g_assert_no_error (error); + g_assert_true (ret); + } + stop_loop (tdata); +} + +static void +test_sim_interface (TestData **ptdata, + gconstpointer data) +{ + TestData *tdata = NULL; + GDBusObject *modem_object = NULL; + MMModem *mm_modem = NULL; + GError *error = NULL; + g_autofree gchar *modem_path = NULL; + + tdata = *ptdata; + /* Add a modem with a sim object */ + modem_path = add_modem (tdata, TRUE, "89330122503000800750"); + modem_object = g_dbus_object_manager_get_object (G_DBUS_OBJECT_MANAGER (tdata->mm_manager), modem_path); + g_assert_nonnull (modem_object); + mm_modem = mm_object_get_modem (MM_OBJECT (modem_object)); + g_clear_object (&modem_object); + + g_assert_cmpuint (mm_modem_get_unlock_required (mm_modem), ==, MM_MODEM_LOCK_NONE); + /* Lock the modem */ + set_modem_unlock (tdata, MM_MODEM_LOCK_SIM_PIN); + g_assert_cmpuint (mm_modem_get_unlock_required (mm_modem), ==, MM_MODEM_LOCK_SIM_PIN); + + tdata->sim = mm_modem_get_sim_sync (mm_modem, NULL, &error); + g_assert_no_error (error); + g_assert_nonnull (tdata->sim); + g_assert_cmpstr (mm_sim_get_identifier(tdata->sim), ==, "89330122503000800750"); + + /* Send a pin code */ + tdata->pin_error = FALSE; + mm_sim_send_pin (tdata->sim, "1234", NULL, mm_sim_send_pin_completion_cb, tdata); + run_loop_for_ms (tdata, 1000); + + /* Check that the modem has been unlocked */ + g_assert_cmpuint (mm_modem_get_unlock_required (mm_modem), ==, MM_MODEM_LOCK_NONE); + + /* Re lock it */ + set_modem_unlock (tdata, MM_MODEM_LOCK_SIM_PIN); + g_assert_cmpuint (mm_modem_get_unlock_required (mm_modem), ==, MM_MODEM_LOCK_SIM_PIN); + + /* Set an error that will simulate wrong pin code */ + set_modem_equipment_error (tdata, MM_MOBILE_EQUIPMENT_ERROR_INCORRECT_PASSWORD, FALSE); + + tdata->pin_error = TRUE; + mm_sim_send_pin (tdata->sim, "0000", NULL, mm_sim_send_pin_completion_cb, tdata); + run_loop_for_ms (tdata, 1000); + + g_assert_cmpuint (mm_modem_get_unlock_required (mm_modem), ==, MM_MODEM_LOCK_SIM_PIN); + + /* Clear the error and retry the pin code */ + set_modem_equipment_error (tdata, 0, TRUE); + tdata->pin_error = FALSE; + mm_sim_send_pin (tdata->sim, "1234", NULL, mm_sim_send_pin_completion_cb, tdata); + run_loop_for_ms (tdata, 1000); + + g_assert_cmpuint (mm_modem_get_unlock_required (mm_modem), ==, MM_MODEM_LOCK_NONE); + + g_clear_object (&tdata->sim); + g_clear_object (&mm_modem); +} + +int main (int argc, + char **argv) +{ + g_test_init (&argc, &argv, NULL); + + g_test_add ("/MM/stub/modem/interface", + TestData *, NULL, setup, + test_modem_interface, + teardown); + g_test_add ("/MM/stub/sim/interface", + TestData *, NULL, setup, + test_sim_interface, + teardown); + return g_test_run (); +} diff -Nru modemmanager-1.14.10/tools/tests/test-wrapper.sh.in modemmanager-1.16.6/tools/tests/test-wrapper.sh.in --- modemmanager-1.14.10/tools/tests/test-wrapper.sh.in 1970-01-01 08:00:00.000000000 +0800 +++ modemmanager-1.16.6/tools/tests/test-wrapper.sh.in 2021-06-06 21:40:59.000000000 +0800 @@ -0,0 +1,5 @@ +#!/bin/bash + +# For debugging behavior of test-modemmanager-service.py, you can modify +# this line to add --log-file option +GI_TYPELIB_PATH=@abs_top_builddir@/libmm-glib @abs_top_srcdir@/tools/test-modemmanager-service.py diff -Nru modemmanager-1.14.10/vapi/Makefile.in modemmanager-1.16.6/vapi/Makefile.in --- modemmanager-1.14.10/vapi/Makefile.in 2021-01-16 21:19:56.000000000 +0800 +++ modemmanager-1.16.6/vapi/Makefile.in 2021-06-06 21:43:43.000000000 +0800 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. +# Makefile.in generated by automake 1.16.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 Free Software Foundation, Inc. @@ -224,6 +224,8 @@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBELOGIND_CFLAGS = @LIBELOGIND_CFLAGS@ +LIBELOGIND_LIBS = @LIBELOGIND_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBMM_GLIB_CFLAGS = @LIBMM_GLIB_CFLAGS@ @@ -348,6 +350,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@