aboutsummaryrefslogtreecommitdiffstats
path: root/samsung-ipc/utils.c
Commit message (Collapse)AuthorAgeFilesLines
* samsung-ipc/utils: add data_read and data_writeDenis 'GNUtoo' Carikli2021-02-161-0/+43
| | | | | | | | | | | | | | These wrappers are meant to handle the case where read or writes handles a smaller number of bytes than requested. This way that handling doesn't need to be duplicated everywhere in libsamsung-ipc. Having access to the ipc_client struct could enable future logging of read and writes without having to change any of the code already using data_read and data_write. Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
* ipc_nv_data_md5_calculate: handle size mismatch betterreplicant-6.0-0004-rc4Denis 'GNUtoo' Carikli2020-12-031-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently libsamsung-ipc assumes that the size of nv_data.bin files are always 0x200000. While it's supposed to be the case for all the devices we support, it is still a good idea to make sure that a meaningful error message is reported to the users of nv_data-md5. For instance if we created an empty file of 1 kB with the following command: $ ddrescue -s 1k /dev/zero zero.img and that we used nv_data-md5 on it: $ ./tools/nv_data-md5 zero.img [ipc] file_data_read: Error: rc < 0 [ipc] ipc_nv_data_md5_calculate failed: data is NULL Calculating nv_data backup md5 failed we had a completely meaningless error message. With this patch the error message looks like that instead: $ ./tools/nv_data-md5 zero.img [ipc] ipc_nv_data_md5_calculate: Checking zero.img size failed: requested size: 2097152, file size: 1000 Calculating nv_data backup md5 failed Here users have at least a fighting chance of being able to understand what is going wrong. Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
* samsung-ipc/utils: file_data_write: return more precise errorsDenis 'GNUtoo' Carikli2020-11-031-6/+8
| | | | | | | | | | | | | file_data_write uses open and lseek, and both can fail. In that case, it would be a good idea to be able for the caller of file_data_write to be able to retrieve the cause of the error. To do that here, we used the same way than write uses to pass on the information to the caller: On success, the number of bytes written is returned. On error, -1 is returned, and errno is set to indicate the cause of the error. Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
* samsung-ipc/utils: Add file_data_sizeDenis 'GNUtoo' Carikli2020-11-031-0/+41
| | | | Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
* samsung-ipc: utils.c: file_data_{read,write}: report open errorDenis 'GNUtoo' Carikli2020-09-211-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | Mounting the EFS on your local computer can result in user id and permissions mismatch because the /etc/fstab doesn't always match the user ids used by Android. For instance here's the GT-N7000 EFS on my laptop: $ ls -l [...]/nv_data.bin -rwx------ 1 1001 1001 2097152 1 janv. 2000 [...]/nv_data.bin When using nv_data-md5 on it we have: $ ./tools/nv_data-md5 [...]/nv_data.bin [ipc] file_data_read: Error: fd: -1 [ipc] ipc_nv_data_md5_calculate failed: data is NULL Calculating nv_data backup md5 failed The error was too cryptic, and I ended up having to dig into the source code to understand what was going on. With this patch we now have an error message that is easier to understand: $ ./tools/nv_data-md5 [...]/nv_data.bin [ipc] file_data_read open failed with error 13: Permission denied [ipc] ipc_nv_data_md5_calculate failed: data is NULL Calculating nv_data backup md5 failed Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
* samsung-ipc/utils: reorder includesDenis 'GNUtoo' Carikli2020-09-211-7/+10
| | | | | | | | | | | | | | | | | | | This reorders includes alphabetically and groups them together: - C standard library includes of depth 1 are grouped together - "System" libraries of depth > 1 age grouped together - The (lib)samsung-ipc include(s) is/are grouped together We also need to keep the inclusion of sys/socket.h before linux/netlink.h in order to prevent the following compilation error on Replicant 4.2: bionic/libc/kernel/common/linux/netlink.h:52:2: error: unknown type name 'sa_family_t' While Replicant 4.2 is not really maintained anymore, it is still being used for testing libsamsung-ipc on devices that are not supported anymore by more recent Replicant versions, so we need to keep libsamsung-ipc and libsamsung-ril working on it. Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
* samsung-ipc: utils: switch to Linux code styleDenis 'GNUtoo' Carikli2020-06-271-308/+322
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This contains no functional changes. The commented out code if any has also been preserved as it could be relevant to the understanding of the code. It will be kept until we understand why the code has been commented. In that case we either need to remove it completely or to replace it by a comment explaining why not having that code was necessary. For __FUNCTION__, according to checkpatch.pl, it's gcc specific: WARNING: __func__ should be used instead of gcc specific __FUNCTION__ However __func__ is part of the C18 standard[1]. In the "6.4.2.2 Predefined identifiers" section, we have: "The identifier __func__ shall be implicitly declared by the translator as if, immediately following the opening brace of each function definition, the declaration static const char __func__[] = "function-name"; " Using symbolic permissions for file mode triggered a checkpatch.pl warning: WARNING: Symbolic permissions 'S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH' are not preferred. Consider using octal permissions '0644'. The rationale behind that is that octal is generally easier to understand than the symbolic relresentation. For more information, see the follwoing Linux commit: f90774e1fd27 checkpatch: look for symbolic permissions and suggest octal instead References: ----------- [1]The standard doesn't seem to be available for free, but the draft can be downloaded from the following URL: https://web.archive.org/web/20181230041359if_/http://www.open-std.org/jtc1/sc22/wg14/www/abq/c17_updated_proposed_fdis.pdf Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> Reviewed-by: Joonas Kylmälä <joonas.kylmala@iki.fi>
* file_data_{read,write}: Add loggingDenis 'GNUtoo' Carikli2020-01-301-17/+59
| | | | Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
* Add some missing headersPaul Kocialkowski2016-02-021-0/+1
| | | | Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
* Offset is unsigned intPaul Kocialkowski2014-07-261-2/+2
| | | | Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
* utils: Dedicated function for length/sizePaul Kocialkowski2014-07-261-10/+43
|
* utils: Shared libraries don't allow for internal functionsPaul Kocialkowski2014-07-261-1/+0
| | | | Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
* Global include pathPaul Kocialkowski2014-02-261-1/+1
| | | | Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
* utils: Files rename, new functions, proper types and few other cleanupsPaul Kocialkowski2014-02-131-0/+407
Signed-off-by: Paul Kocialkowski <contact@paulk.fr>