summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Fixed license headersJani Heikkinen2015-02-17204-204/+204
| | | | | Change-Id: Ibebe1318d1c2de97601aa07269705c87737083ee Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* support spaces in build and install dirsOswald Buddenhagen2015-02-179-31/+39
| | | | | | | | spaces in the source dir are not supported for now, as that requires some more profound refactoring of the bootstrap makefiles. Change-Id: Ie0c07a1558b8326f642f2ea144bc1cd85ee761af Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* use relative paths for build dir referencesOswald Buddenhagen2015-02-172-5/+5
| | | | | | | | apart from being more readable, it has the side effect of being resistant to spaces in the build path. Change-Id: Id12603c3a96765913e747fba4070d49de0705315 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* remove nonsensical path strippingOswald Buddenhagen2015-02-171-1/+1
| | | | | | | we strip the path a few lines above already. Change-Id: If7524b8e744d2f1ab2f5a6920097d25671449829 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* untangle handling extra compiler .clean memberOswald Buddenhagen2015-02-171-13/+17
| | | | | | | | | it's easy when it is a simple list of files (or just absent). however, it can also contain expandos, and in this case it's definitely not a good idea to treat it partly (but not really) as a single shell command. Change-Id: I7ef32a56f276b06579fc7094357c5f7612eaf205 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* fix fixPathToTargetOS() nestingOswald Buddenhagen2015-02-171-2/+2
| | | | | | | first replaceExtraCompilerVariables(..., NoShell), then fix the final result. Change-Id: If8cebeaa59f48d91b33b5a74e6a48a0d2d049643 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* remove pointless fixPathToTargetOS() callsOswald Buddenhagen2015-02-175-19/+13
| | | | | | | | | | it makes no sense to call it on paths that are fixified right before or after, as fileFixify() calls it itself. and verifyExtraCompiler() calls normalizePath() on its file argument. Change-Id: I8fb21e129fd29428d1855de73483087842bc1bdd Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* replace incorrect uses of fixPathToLocalOS() (mostly)Oswald Buddenhagen2015-02-1710-67/+68
| | | | | | | | | | | | | | | | | | | | | | | in most cases, it actually means normalizePath() (because the file name is used with qt i/o functions afterwards). this affects QMakeLocalFile::local() as well, so many not immediately obvious places are affected as well. there was also one case of fixPathToTargetOS() falling into this category. this is mostly a no-op, as the qt functions are agnostic to the path separator. in some other cases (in particular in the vcproj generator), it actually means fixPathToTargetOS(). this is mostly a no-op as well, as the two functions are equal except on msys anyway. in the <meta file>FileName() functions, the use of a fixPath*() function is bogus in the first place - fileFixify() already does fixPathToTargetOS(), and this is correct when the file name is used verbatim in a make command (which it is). otherwise it's irrelevant. Change-Id: I26712da8f888c704f8b7f42dbe24c941b6ad031d Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* more autotests for spaces, destdirs and library linkingOswald Buddenhagen2015-02-1712-37/+56
| | | | | Change-Id: Ie106d1151e61a50081bccea0a6d0d70728451a5b Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* remove pointless path trimmingOswald Buddenhagen2015-02-171-1/+1
| | | | | | | | there is no reason why there should be unexpected leading or trailing whitespace in an extra compiler's .depends list. Change-Id: I46be75063180131e135fc6eea0238a482073618a Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* fix quoting issues. all of them. (*)Oswald Buddenhagen2015-02-1715-476/+514
| | | | | | | | | | | | | | | | | | | | | | instead of quoting more or less random variable contents early, consistently quote everything only right before it is needed. this way we can be sure that everything is correctly quoted, but not over-quoted. this removed the need for the insanity that unescapeFilePath() and similar ad-hoc contraptions were. this had the somewhat counter-intuitive effect that it was possible to remove escapeFilePath() calls from PBX::writeSettings() calls - these were actually only unescaping. [ChangeLog][qmake][Important Behavior Changes] A lot of quoting issues have been fixed. As a side effect, qmake has become more sensitive to over-quoted file names in project files. (*) ok, maybe not. close enough. Task-number: fatal: out of memory Change-Id: I8c51cfffb59ccd156b46bd5c56754c480667443a Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* fix filename handling in replaceExtraCompilerVariables()Oswald Buddenhagen2015-02-177-68/+89
| | | | | | | | | | | fixing and escaping is now a tri-state option: - none (this removes the need to unescape the result right afterwards in some cases) - local shell (for system()) - target shell (for Makefile) Change-Id: I5b78d9b70630fe4484dc964eff5f62793da35764 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* Use relative path for QMAKE_BUNDLE_DATAFawzi Mohamed2015-02-171-1/+1
| | | | | | | | | | Use of FileFixifyAbsolute with non-default in_dir and out_dir is not defined (and produces bogus results). Using FileFixifyRelative when handling QMAKE_BUNDLE_DATA as a relative path is fine. Change-Id: I49902dc9f5b8029d092a4419c0cff5483e419c30 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* compose: Rename main.cpp to qcomposeplatforminputcontextmain.cpphjk2015-02-172-2/+2
| | | | | | | | Files with same base name cause extra trouble for debuggers. Similarly to 26cf0f0d5a8, it can be avoided here. Change-Id: Ide47170f417d636aa031b0d84a1951df8bf32316 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
* Android: Fix tst_QFileInfo::isExecutable()Eskil Abrahamsen Blomfeldt2015-02-171-1/+5
| | | | | | | Use correct path for executable file. Change-Id: I50283fc43fe6561cb8eb687f739f21a3d5cbadbd Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
* QPair: add noexcept to ctors and assignment operatorsMarc Mutz2015-02-171-3/+12
| | | | | Change-Id: Id201d1f1e7a087083ca6c13ab31c721e672ef566 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QList: share implementation of operator== with QVector where possibleMarc Mutz2015-02-171-0/+17
| | | | | | | Same change as was already applied for count() and contains(). Change-Id: Ibd62e4b36e03741993ba33e730c9449ef19bff5f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QList: share the implementations of contains()/count() with QVector where ↵Marc Mutz2015-02-171-0/+34
| | | | | | | | | | | | | | | | | | possible If QList data-layout-compatible with QVector and a C array, implement count() via std::count() and contains() via std::find() and use const_pointer instead of const_iterator as the iterators. This essentially makes the QVector and QList implementations identical to each other, at least for important cases such as QString. To switch between the different implementations, use tag dispatching instead of the previously used technique "use 'if' as if it were 'static if'", which imposes accidental requirements on the element types (something that esp. QVector is plagued with). Change-Id: I6caf74442a22059676b5bf115a6089768f3a0952 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QList: prepare for tag dispatching based on memory layoutMarc Mutz2015-02-172-0/+51
| | | | | | | | | | | | | Add one tag class for each of QList's three different memory layouts to QListData, and inherit QList<T>::MemoryLayout from exactly one of them. To simplify overloading, added tag classes that express the negation of the two extreme poles of memory layout (C-compatible and heap), too. The "missing" one could be added when needed, too. Change-Id: I45ea603731499fd3fdfb37d60a0a98fb22ac15ec Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* tst_QList: test all memory layoutsMarc Mutz2015-02-171-93/+226
| | | | | | | | | | | | | | | | | | The Movable type, surprisingly, was as large as sizeof(void*), so on 32-bit platforms, we were not testing the QList memory layout where items are placed directly into the void*-slots, but are too small, leaving gaps. Fixed by making sure that Movable is smaller than void* and adding a variant of Movable, Optimal, that is guaranteed to be the same size as void*, and replacing the int tests with tests of Optimal. Had to demote the State variable to uchar, since MSVC will apparently not make a collection of bit-fields smaller than the largest type used in any of the consituent bitfields, so State s : 8 wouldn't work. Change-Id: I4f0e24bd6928f076b4ce60e8d977d5d98a724161 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDate: optimize QDate::toString()Marc Mutz2015-02-171-3/+1
| | | | | | | | | | | | | Instead of using a QString::arg() cascade, which creates tons of temporaries, use good 'ol sprintf(). Effects on Linux GCC 4.9 stripped release builds: text -216B data +-0B relocs +-0 Change-Id: I6ff551cb9f42e0c05a64f03a8e177fb527915481 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDateTime: optimize toOffsetString()Marc Mutz2015-02-171-10/+6
| | | | | | | | | | | | | | | Instead of using a QString::arg() cascade, which creates tons of temporaries, use good 'ol sprintf(). As a consequence, this function is now inlined into all four callers and the total executable size _still_ goes down: Effects on Linux GCC 4.9 stripped release builds: text -420B data +-0B relocs +-0 Change-Id: I10d6abd94b489db7c2f01dc5424f30a798602522 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDateTimePrivate: make bit manipulation code more readableMarc Mutz2015-02-171-5/+5
| | | | | | | | | ...by using var op= ... instead of var = var op ... No change in executable code size. Change-Id: I1c29ff6700f0f21be07768af8d002f0823c89fbd Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* QDateTimePrivate: remove pointless comparisonsMarc Mutz2015-02-171-6/+6
| | | | | | | | | | | | | | | | | | | | For any 1-bit flag: bool(var & flag) <=> (var & flag) == flag but gcc didn't seem to get it: (Surprising) effects on Linux GCC 4.9 stripped release builds: text -4936B (!!) data +-0B relocs +-0 It seems this enables some dead code detection, but I must confess I don't quite understand how such a small change can have such a dramatic effect on the executable size, even after diffing the assembler output. Change-Id: Ia307fde0de16160ea51bbb3ed6c1ff203d4f9091 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDateTimePrivate: remove pointless copy ctorMarc Mutz2015-02-171-10/+0
| | | | | | | | | | The compiler-generated one is just as fine, more maintainable, and doesn't inhibit moves (which probably doesn't matter here). No change in executable code size. Change-Id: Ideee493a5911808430d3e09e6eb07e91d7a19b12 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDateTime: replace out parameters with return-by-value in rfcDateImpl()Marc Mutz2015-02-171-66/+32
| | | | | | | | | | | | Compilers *really* don't like out parameters. (Impressive) effects on Linux GCC 4.9 stripped release builds: text -2512B data +-0B relocs +-0 Change-Id: I0fe370a438f7b82aaa9cc04ddd56e45a5969e7a9 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDateTime: optimize rfcDateImpl()Marc Mutz2015-02-171-20/+22
| | | | | | | | | | | | | Get the captured texts once and use indexing into the QStringList instead of repeatedly calling QRegExp::cap(n). (Impressive) effects on Linux GCC 4.9 stripped release builds: text -2876B data +-0B relocs +-0 Change-Id: I3a02eab1a691f31c30654cd89a0c030414b40de0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDateTime: change an instance of out parameters to return-by-valueMarc Mutz2015-02-171-52/+48
| | | | | | | | | | | | Compilers don't like out parameters. Effects on Linux GCC 4.9 stripped release builds: text -528B data +-0B relocs +-0 Change-Id: I32ee1a6c4388900bacfc6eb20feb4b81d71cb1f2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Android: Fix tst_QDir::cdBelowRoot()Eskil Abrahamsen Blomfeldt2015-02-171-1/+5
| | | | | | | | | The /tmp directory doesn't exist on Android, and the test needs a directory that it can cd into which is one level above root. So we just use /system which should be available on all devices. Change-Id: I8e6a15f278429491fd871f87af497e5d7184ddf8 Reviewed-by: BogDan Vatra <bogdan@kde.org>
* Fix QTextDocument test when default font is pixel-sizedEskil Abrahamsen Blomfeldt2015-02-171-12/+41
| | | | | | | | | | When the default font has the pixel size set instead of point size, then pointSize() will return -1 and the output from the HTML will include the pixel size instead. This happens e.g. on Android when we extract font information from the system. Change-Id: I26dc49fff215c9887cf0b78dcfff88df0f74450d Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
* QTimeZone: don't use QSet, use sorted QListMarc Mutz2015-02-177-95/+125
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | QSet, as a node-based container, requires one memory allocation per element inserted. QList, as a contiguous-memory container (at least in the case of a QByteArray payload), requires one memory allocation per container. The higher lookup speed might still speak for using QSet, but there are only two uses of the sets: 1. Checking for existence (or lack thereof) of timezone names. For this, first generating a container full of data just to check for existence of one item of data is extremely wasteful. The QTZPrivate API should be extended to allow said lookup to be performed on the native data store instead. That leaves 2. Returning a sorted(!) list(!) from the public QTimeZone API. There is no reason why, during the construction of those sorted lists, the data should be held in a set. Instead, the well-known technique of first cramming everything into a result container, which is subsequently sorted and has its duplicates removed, can be used here. Saves more than 8K of text size on AMD64 stripped release builds. Change-Id: I71c2298e94e02d55b0c9fb6f7ebeaed79a1fe2db Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* xcb: Fix build with -no-xcb-xlib -qt-xcbAndrew Knight2015-02-174-12/+16
| | | | | | | | The EGL integration should not call Xlib functions in this case. Change-Id: I46656b12d603ca1b4b0b41f34c3c0e8410c91db8 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com> Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
* Introduce QT_NO_MIMETYPESérgio Martins2015-02-1728-14/+116
| | | | | | | | | | | | | The mime type stuff generates one of the biggest translation units in QtCore due to the compressed 1.7MB freedesktop.org.xml resource. With QT_NO_MIMETYPE, libQt5Core.so is almost 400Kb smaller (4.8MB->4.4MB gcc 4.9 stripped release build) Change-Id: I5339090994034355724ff4deddb64720e81baeaf Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: David Faure <david.faure@kdab.com> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Fix license headersSergio Ahumada2015-02-165-111/+71
| | | | | Change-Id: I964ca9d3aff1a1cbe39dc53d04a408c754e96a77 Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
* Use C++ <cmath> instead of <math.h>Allan Sandfeld Jensen2015-02-1641-296/+171
| | | | | | | | | | | | | | Including math.h can pollute the default namespace, and break some compilers if cmath versions of the method are declared as using. Switching to C++ math functions also greatly simplifies handling of float qreal as C++ automatically chooses the right method. [ChangeLog][QtCore][QtMath] qmath.h no longer includes math.h, so any sources depending on that indirect inclusion may fail to build. Change-Id: I4d0e331dafba354ec05dc5052e61ef4ff8d387fe Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
* Android: Fix compile on arm64-v8aBogDan Vatra2015-02-161-1/+1
| | | | | | | | Android arm64-v8a redefines _POSIX_C_SOURCE to 199506 if _XOPEN_SOURCE is defined. Change-Id: I04ff616eaac6e08094fc1f58f49bc5a2c31733f0 Reviewed-by: Daniel Teske <daniel.teske@theqtcompany.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
* Add configure option and tests for GStreamer.Yoann Lopes2015-02-163-1/+132
| | | | | | | | | | Qt Multimedia can be compiled with either GStreamer 0.10 or 1.0. 0.10 takes precedence over 1.0 if both are available (1.0 will be used by default in Qt 5.6). Auto-detection can be overridden with -gstreamer <version>. Change-Id: I74d58d2c146c842902375b4d1e5e6e96d32addac Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* LocalSocket: Do not return early in waitForReadyReadKai Koehne2015-02-161-3/+0
| | | | | | | | | | | | | | | Do not return early on Windows if bytes are still in the buffer. This is not in line with the behavior on other platforms, and also breaks apps where the caller knows that the bytes available are insufficient. [ChangeLog][Network][QLocalSocket] On Windows, waitForReadyRead now always waits for more data, even if bytes are still in the buffer. Task-number: QTBUG-16688 Change-Id: I1425a5780c7707295374934a6b5446ff8e148cc8 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Add widget support for requestUpdate() and improve its docs and testsLaszlo Agocs2015-02-164-5/+64
| | | | | | | | | | | We must do something when requestUpdate() is called on a QWidgetWindow. The semantics of UpdateRequest for QWindow and QWidget are unfortunately different: for widgets an UpdateRequest means "sync the backing store". For QWindow it also involves marking as dirty. Change-Id: Idf40b3fc0873652dc081edeb12c96b3007a126ef Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com> Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
* Use d2i_DHparams instead of poking around inside the DH struct.Richard J. Moore2015-02-163-41/+14
| | | | | | | | This change is a step closer to working with openssl 1.2 which makes this struct opaque. Change-Id: I3897142657edc0fa4053142b6ef743c2b00c013e Reviewed-by: Peter Hartmann <peter-qt@hartmann.tk>
* qdoc: Clear the list of output files during generator initTopi Reinio2015-02-161-0/+1
| | | | | | | | | | | | | QDoc keeps a list of files it generates (or copies) to the output directory, for writing it to a .qhp file later on. In single-exec mode, QDoc processes several qdocconf files without deleting the generator in between. Therefore, we need to clear the list of files whenever the generator is initialized, to avoid duplicating the filenames across multiple .qhp files. Change-Id: Ibc2a6b171466aa1db6cfe3da9a820d5ba2845004 Reviewed-by: Martin Smith <martin.smith@digia.com>
* QDateTime: micro-optimize QDebug op<<Marc Mutz2015-02-152-11/+7
| | | | | | | | | | | | | | | | Instead of constructing a QString that describes the QDateTime instance, stream the constituents of the string into QDebug directly, using op<< for Q_ENUM, now that it's available. Adapt test to new format of enums. Effects on Linux GCC 4.9 stripped release builds: text -1068B data +-0B relocs +-0 Change-Id: I1a5ce28904edd7d0f6c8d982fd41c52e3536e036 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add missing QPlainTextEdit::createStandardContextMenu(QPoint)J-P Nurmi2015-02-153-1/+61
| | | | | | | | | [ChangeLog][QtWidgets] Added QPlainTextEdit::createStandardContextMenu(QPoint) overload that takes the position in document coordinates. This method enables the actions that are sensitive to the given position eg. where the user clicked. Change-Id: I47ed7a1afc4fcfb3318c9b7af37867aeb7f2aa35 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* QWidgetTextControl: add object names for standard context menu actionsJ-P Nurmi2015-02-151-0/+8
| | | | | | | Mainly for auto testing purposes. Change-Id: I776f9d7f28f9a04ba3f9a6bbc549d6e86bece876 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* QSsl: teach the SecureTransport backend about TlsV1_0OrLater, TlsV1_1OrLater ↵Mikkel Krautz2015-02-151-0/+21
| | | | | | | and TlsV1_2OrLater Change-Id: I001ffebef30b47b63cae6ea9487d9e96ca85ff92 Reviewed-by: Richard J. Moore <rich@kde.org>
* Remove support for some very old compilersAllan Sandfeld Jensen2015-02-154-47/+0
| | | | | | | Remove code supporting gcc 4.0 and earlier, and MSVC 2005 and earlier. Change-Id: I3304e11bb38c101f113c124e8e533c5578badf34 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QFileDialog: don't warn about directory url prematurlyRichard Moe Gustavsen2015-02-151-1/+1
| | | | | | | | | The app can set a directory url before showing the dialog. Since we don't really know if the dialog is going to be native or not at that point, it is too early to warn. Change-Id: Ie9875ca90a500258841bad702ee864a46775641c Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
* QFileDialog: don't clear directory url upon showRichard Moe Gustavsen2015-02-151-4/+0
| | | | | | | | | | | | | | | | | | | | | If the app sets a directory url that is not a local file, the url would be cleared just before showing the dialog. The reason is that we try to convert the url to a local file when preparing helper options, but fail. Trying to convert the url in the first place is wrong, since the app should be able to point the file dialog to any url, not just local directories. Since QFileDialogPrivate::init() calls QFileDialog::setDirectoryUrl(), and setDirectoryUrl() calls options->setInitialDirectory(), there should be no reason to set initialDirectory once more in QFileDialogPrivate::helperPrepareShow(). The easiest fix is therefore to remove the code in initHelper() that modifies the initial url. Change-Id: Ia6c2113e867b1156cf9d59d347116f7df8c06d93 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* qstandardpaths_ios: add system path for PicturesLocationRichard Moe Gustavsen2015-02-151-2/+10
| | | | | | | | | | | For PicturesLocation we add a second path pointing to system assets. This url is understood by both QFile (using a dedicated file engine), and QFileDialog, such that if you point the dialog to the url, it will show a native image picker dialog. Change-Id: Ic79393440ab399ed4802cc6d84ec7ad36cbb9369 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
* iOS: add native file dialog for selecing photos/assetsRichard Moe Gustavsen2015-02-155-2/+252
| | | | | | | | | | | This will add a file dialog backend on iOS. The implementation will check if a dialogs initial directory points to the system picture location, and if so, present a UIImagePickerController. Otherwise it will return false upon show, which causes QFileDialog to use the widget based version as fallback. Change-Id: I276b630911652b6d28f60763decc7ec38f00c817 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>