summaryrefslogtreecommitdiffstats
path: root/src/AFC.c
diff options
context:
space:
mode:
authorGravatar Martin Szulecki2009-09-12 11:39:06 +0200
committerGravatar Martin Szulecki2009-09-12 11:39:06 +0200
commitfe6c846fa5d80824ee708393c4ea1a1fe4049a77 (patch)
tree89723aba73bd0121af1320b10ca6762bd21e1bc7 /src/AFC.c
parent51bd7976416ac5010f5edc5e70946cbe33646e93 (diff)
downloadlibimobiledevice-fe6c846fa5d80824ee708393c4ea1a1fe4049a77.tar.gz
libimobiledevice-fe6c846fa5d80824ee708393c4ea1a1fe4049a77.tar.bz2
Update the afc_get_device_info helper to return an afc_error_t
We should return any underlying error afc_get_device_info returns so one is able to act properly. Also renamed it to "key" instead of "field" to be more generic.
Diffstat (limited to 'src/AFC.c')
-rw-r--r--src/AFC.c28
1 files changed, 17 insertions, 11 deletions
diff --git a/src/AFC.c b/src/AFC.c
index d2761cf..b27080a 100644
--- a/src/AFC.c
+++ b/src/AFC.c
@@ -468,26 +468,32 @@ afc_error_t afc_get_device_info(afc_client_t client, char ***infos)
return ret;
}
-/** Get a specific field of the device info for a client connection to phone.
- * Known values are: Model, FSTotalBytes, FSFreeBytes and FSBlockSize. This is
- * a helper function for afc_get_device_info().
+/** Get a specific key of the device info list for a client connection.
+ * Known key values are: Model, FSTotalBytes, FSFreeBytes and FSBlockSize.
+ * This is a helper function for afc_get_device_info().
*
* @param client The client to get device info for.
- * @param field The field to get the information for
+ * @param key The key to get the value of.
+ * @param value The value for the key if successful or NULL otherwise.
*
- * @return A char * or NULL if there was an error.
+ * @return AFC_E_SUCCESS on success or an AFC_E_* error value.
*/
-char * afc_get_device_info_field(afc_client_t client, const char *field)
+afc_error_t afc_get_device_info_key(afc_client_t client, const char *key, char **value)
{
- char *ret = NULL;
+ afc_error_t ret = AFC_E_INTERNAL_ERROR;
char **kvps, **ptr;
- if (field == NULL || afc_get_device_info(client, &kvps) != AFC_E_SUCCESS)
- return NULL;
+ *value = NULL;
+ if (key == NULL)
+ return AFC_E_INVALID_ARGUMENT;
+
+ ret = afc_get_device_info(client, &kvps);
+ if (ret != AFC_E_SUCCESS)
+ return ret;
for (ptr = kvps; *ptr; ptr++) {
- if (!strcmp(*ptr, field)) {
- ret = strdup(*(ptr+1));
+ if (!strcmp(*ptr, key)) {
+ *value = strdup(*(ptr+1));
break;
}
}