The folder management API.

## Functions

LIBMTP_folder_t * | LIBMTP_new_folder_t (void)
void | LIBMTP_destroy_folder_t (LIBMTP_folder_t *)
LIBMTP_folder_t * | LIBMTP_Get_Folder_List (LIBMTP_mtpdevice_t *)
LIBMTP_folder_t * | LIBMTP_Find_Folder (LIBMTP_folder_t *, uint32_t const)
uint32_t | LIBMTP_Create_Folder (LIBMTP_mtpdevice_t *, char *, uint32_t)

## Detailed Description

## Function Documentation

uint32_t LIBMTP_Create_Folder | ( | LIBMTP_mtpdevice_t * | device,
|  | char * | name,
|  | uint32_t | parent_id
| ) |  |

This create a folder on the current MTP device. The PTP name for a folder is "association". The PTP/MTP devices does not have an internal "folder" concept really, it contains a flat list of all files and some file are "associations" that other files and folders may refer to as its "parent".

Parameters

  device | a pointer to the device to create the folder on.
  name | the name of the new folder.
  parent_id | id of parent folder to add the new folder to, or 0 to put it in the root directory.

Returns
  id to new folder or 0 if an error occured

References LIBMTP_mtpdevice_struct::params.

void LIBMTP_destroy_folder_t | ( | LIBMTP_folder_t * | folder | ) |

This recursively deletes the memory for a folder structure

Parameters

  folder | folder structure to destroy

See also
  LIBMTP_new_folder_t()

References LIBMTP_folder_struct::child, LIBMTP_destroy_folder_t(), LIBMTP_folder_struct::name, and LIBMTP_folder_struct::sibling.

Referenced by LIBMTP_destroy_folder_t().

LIBMTP_folder_t* LIBMTP_Find_Folder | ( | LIBMTP_folder_t * | folderlist,
|  | uint32_t | id
| ) |  |

Helper function. Returns a folder structure for a specified id.

Parameters

  folderlist | list of folders to search id of folder to look for

Returns
  a folder or NULL if not found

References LIBMTP_folder_struct::child, LIBMTP_folder_struct::folder_id, LIBMTP_Find_Folder(), and LIBMTP_folder_struct::sibling.

Referenced by LIBMTP_Find_Folder(), and LIBMTP_Get_Folder_List().

LIBMTP_folder_t* LIBMTP_Get_Folder_List | ( | LIBMTP_mtpdevice_t * | device | ) |

This returns a list of all folders available on the current MTP device.

Parameters

  device | a pointer to the device to get the track listing for.

Returns
  a list of folders

References LIBMTP_folder_struct::child, LIBMTP_folder_struct::folder_id, LIBMTP_Find_Folder(), LIBMTP_new_folder_t(), LIBMTP_folder_struct::name, LIBMTP_mtpdevice_struct::params, LIBMTP_folder_struct::parent_id, and LIBMTP_folder_struct::sibling.

LIBMTP_folder_t* LIBMTP_new_folder_t | ( | void |  | ) |

This creates a new folder structure and allocates memory for it. Notice that if you add strings to this structure they will be freed by the corresponding `LIBMTP_folder_track_t` operation later, so be careful of using strdup() when assigning strings, e.g.:

Returns
  a pointer to the newly allocated folder structure.

See also
  LIBMTP_destroy_folder_t()

References LIBMTP_folder_struct::folder_id.

Referenced by LIBMTP_Get_Folder_List().