diff --git a/include/ipfs/pin/pin.h b/include/ipfs/pin/pin.h index 9594c61..e3a8122 100644 --- a/include/ipfs/pin/pin.h +++ b/include/ipfs/pin/pin.h @@ -29,4 +29,8 @@ typedef int PinMode; int ipfs_pin_init (); + // Return pointer to string or NULL if invalid. + char *ipfs_pin_mode_to_string (PinMode mode); + // Return array index or -1 if fail. + PinMode ipfs_string_to_pin_mode (char *str); #endif // IPFS_PIN_H diff --git a/pin/pin.c b/pin/pin.c index bd3df84..e6ba71c 100644 --- a/pin/pin.c +++ b/pin/pin.c @@ -41,3 +41,25 @@ int ipfs_pin_init () return 0; } + +// Return pointer to string or NULL if invalid. +char *ipfs_pin_mode_to_string (PinMode mode) +{ + if (mode < 0 || mode >= (sizeof (ipfs_pin_linkmap) / sizeof (void*))) { + return NULL; + } + return (char*)ipfs_pin_linkmap[mode]; +} + +// Return array index or -1 if fail. +PinMode ipfs_string_to_pin_mode (char *str) +{ + PinMode pm; + + for (pm = 0 ; pm < (sizeof (ipfs_pin_linkmap) / sizeof (void*)) ; pm++) { + if (strcmp(ipfs_pin_linkmap[pm], str) == 0) { + return pm; + } + } + return -1; // not found. +}