folders(3)

πŸ“¦ version 1.1.23, in arch rolling

✨ folders(3) ✨

okay so bestie, welcome to the <rainbow>libmtp folder management API</rainbow> β€” this is the whole entire vibe for handling folders on MTP devices, and honestly? it's giving organized queen energy πŸ’…


🌸 NAME 🌸

folders β€” literally the folder management API, no cap


πŸ¦‹ SYNOPSIS πŸ¦‹

✨ 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_Get_Folder_List_For_Storage (LIBMTP_mtpdevice_t
    *, uint32_t const)
LIBMTP_folder_t * LIBMTP_Find_Folder (LIBMTP_folder_t *, uint32_t const)
uint32_t LIBMTP_Create_Folder (LIBMTP_mtpdevice_t *, char *, uint32_t,
    uint32_t)
int LIBMTP_Set_Folder_Name (LIBMTP_mtpdevice_t *, LIBMTP_folder_t *,
    const char *)

πŸŽ€ Detailed Description πŸŽ€


πŸ’– Function Documentation πŸ’–

🌟 uint32_t LIBMTP_Create_Folder (LIBMTP_mtpdevice_t * device, char * name, uint32_t parent_id, uint32_t storage_id)

okay so this one literally creates a folder on the current MTP device πŸ”₯ but here's the tea: the PTP name for a folder is "association". and PTP/MTP devices don't actually have a real internal "folder" concept, bestie β€” they just have a flat list of all files, and some files are "associations" that other files and folders can point to as their "parent". it's giving found family, honestly 😭

Parameters

  • device β€” a pointer to the device to create the folder on, periodt
  • name β€” the name of the new folder. lowkey note that this can get modified if the device doesn't support all the characters in the name, so don't be shocked if it comes back different πŸ’€
  • parent_id β€” id of the parent folder to add the new folder to, or 0xFFFFFFFF to put it in the root directory
  • storage_id β€” id of the storage to add this new folder to. notice that you cannot mismatch storage id and parent id: they must both be on the same storage! pass in 0 if you want to create this folder on the default storage 🫢

Returns

id to the new folder, or 0 if an error occurred πŸ™ˆ

References

DEVICE_FLAG_BROKEN_SEND_OBJECT_PROPLIST, LIBMTP_mtpdevice_struct::params, strip_7bit_from_utf8(), and LIBMTP_mtpdevice_struct::usbinfo.


πŸ’… void LIBMTP_destroy_folder_t (LIBMTP_folder_t * folder)

this recursively deletes the memory for a folder structure, bestie β€” like it goes all the way down the tree. you typically call this on a top-level folder list to destroy the entire folder tree, which is honestly iconic cleanup behavior ✨

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(), and LIBMTP_Get_Folder_List_For_Storage().


πŸ¦‹ LIBMTP_folder_t * LIBMTP_Find_Folder (LIBMTP_folder_t * folderlist, uint32_t id)

helper function alert! 🚨 this literally returns a folder structure for a specified id, that's it, that's the whole function

Parameters

  • folderlist β€” list of folders to search
  • id β€” id of the 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().


🌈 LIBMTP_folder_t * LIBMTP_Get_Folder_List (LIBMTP_mtpdevice_t * device)

this returns a list of all folders available on the current MTP device, slay πŸ’…

Parameters

  • device β€” a pointer to the device to get the folder listing for

Returns

a list of folders ✨

References

LIBMTP_Get_Folder_List_For_Storage().


πŸ“ LIBMTP_folder_t * LIBMTP_Get_Folder_List_For_Storage (LIBMTP_mtpdevice_t * device, uint32_t const storage)

this also returns a list of all folders available on the current MTP device β€” but for a specific storage, iykyk πŸŽ€

Parameters

  • device β€” a pointer to the device to get the folder listing for
  • storage β€” a storage ID to get the folder list from

Returns

a list of folders πŸ’–

References

LIBMTP_folder_struct::child, LIBMTP_folder_struct::folder_id, LIBMTP_destroy_folder_t(), LIBMTP_new_folder_t(), LIBMTP_folder_struct::name, LIBMTP_mtpdevice_struct::params, LIBMTP_folder_struct::parent_id, LIBMTP_folder_struct::sibling, and LIBMTP_folder_struct::storage_id.

Referenced by

LIBMTP_Get_Folder_List().


🧚 LIBMTP_folder_t * LIBMTP_new_folder_t (void )

this creates a new folder structure and allocates memory for it, bestie ✨ but listen β€” 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.:

no cap, this is one of those "read the docs twice" moments fr fr πŸ™ˆ

Returns

a pointer to the newly allocated folder structure 🌸

See also

LIBMTP_destroy_folder_t()

Referenced by

LIBMTP_Get_Folder_List_For_Storage().


πŸ‘‘ int LIBMTP_Set_Folder_Name (LIBMTP_mtpdevice_t * device, LIBMTP_folder_t * folder, const char * newname)

this function renames a single folder. it literally just means the PTP_OPC_ObjectFileName property gets updated β€” if the device supports it, that is. some devices are picky, and that's their prerogative πŸ’…

Parameters

  • device β€” a pointer to the device that contains the file
  • folder β€” the folder metadata of the folder to rename. on success, the name member is updated. be aware that this name can be different than newname depending on device restrictions, so don't come for me if it's not character-for-character 😭
  • newname β€” the new name for this object

Returns

0 on success, any other value means failure πŸ™ˆ

References

LIBMTP_folder_struct::folder_id, and LIBMTP_folder_struct::name.


⭐ Author ⭐

Generated automatically by Doxygen for libmtp from the source code β€” so if you're wondering who to thank for this masterpiece, it's the robots πŸ€–βœ¨


okay bestie, that's the whole entire manual page, and honestly? folder management never looked so cute πŸŽ€ stay organized, stay iconic, and remember: 0xFFFFFFFF means root, not a vibe check. mwah πŸ’‹

libmtp Β· Version 1.1.23 Β· folders(3) β€” that's the version and date info in case you need to cite your sources, periodt πŸ’…βœ¨

πŸ“¦ where this page comes from