diff --git a/include/libzutil.h b/include/libzutil.h index 5b0927961..ef17bd542 100644 --- a/include/libzutil.h +++ b/include/libzutil.h @@ -160,6 +160,9 @@ _LIBZUTIL_H void color_start(char *color); _LIBZUTIL_H void color_end(void); _LIBZUTIL_H int printf_color(char *color, char *format, ...); +_LIBZUTIL_H const char *zfs_basename(const char *path); +_LIBZUTIL_H ssize_t zfs_dirnamelen(const char *path); + #ifdef __cplusplus } #endif diff --git a/lib/libzfs_core/libzfs_core.abi b/lib/libzfs_core/libzfs_core.abi index f397929e1..c54a994f7 100644 --- a/lib/libzfs_core/libzfs_core.abi +++ b/lib/libzfs_core/libzfs_core.abi @@ -253,11 +253,13 @@ + + @@ -1747,22 +1749,32 @@ - + + + + + + + + + + + - + - + - + @@ -1770,11 +1782,11 @@ - - + + - + @@ -1795,11 +1807,11 @@ - + - + @@ -1811,14 +1823,14 @@ - + - + - + @@ -1829,16 +1841,16 @@ - + - + - + - + @@ -1850,20 +1862,20 @@ - + - + - + - - - + + + - + @@ -1872,10 +1884,10 @@ - + - + @@ -1883,74 +1895,73 @@ - - + + - + - + - + - + - - + + - + - + - - + + - + - - + + - - - - - + + + + - - + + - - - + + + - - + + - - + + - + - + @@ -1960,24 +1971,24 @@ - - + + - + - + - + - + @@ -2001,27 +2012,27 @@ - - - + + + - + - + - - - - - - - + + + + + + + - - + + @@ -2030,27 +2041,27 @@ - + - + - + - - + + - + - + @@ -2061,66 +2072,66 @@ - + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - - - - - + + + + + - + - + - - + + @@ -2166,8 +2177,8 @@ - - + + @@ -2181,8 +2192,8 @@ - - + + @@ -2194,42 +2205,42 @@ - - + + - - + + - + - + - - + + - + - + - + - + @@ -2244,12 +2255,12 @@ - + - - + + @@ -2272,21 +2283,21 @@ - - + + - + - + - + - + - + @@ -2295,31 +2306,31 @@ - - - + + + - - + + - + - + - + - + @@ -2328,28 +2339,28 @@ - + - + - + - - + + - + @@ -2359,7 +2370,7 @@ - + @@ -2370,37 +2381,37 @@ - - + + - + - + - + - + - + @@ -2426,25 +2437,25 @@ - - - - + + + + - + - - + + - - - + + + - - + + @@ -2459,21 +2470,21 @@ - - + + - - + + - + @@ -2488,15 +2499,15 @@ - + - + - + - + @@ -2505,10 +2516,10 @@ - + - - + + @@ -2524,7 +2535,7 @@ - + @@ -2538,16 +2549,16 @@ - + - + - + - + @@ -2556,27 +2567,27 @@ - + - + - + - - - - + + + + - + - + @@ -2588,65 +2599,65 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - - + + - - + + - + - + @@ -2657,27 +2668,27 @@ - - + + - + - - + + - + - + - + - - + + @@ -2686,21 +2697,21 @@ - + - + - + - - + + @@ -2709,113 +2720,113 @@ - + - + - + - + - - - + + + - + - - + + - - + + - + - - + + - - + + - + - - + + - - + + - + - + - - + + - - + + - + - + - - + + - - + + - + - + - + - + - + - + - + - + @@ -2832,145 +2843,145 @@ - - + + - + - - + + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - - + + - - - - + + + + - + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + @@ -2994,39 +3005,39 @@ - - - - + + + + - + - + - + - + - + - + - + - + - + - + @@ -3035,19 +3046,19 @@ - + - + - + - + - - + + @@ -3056,212 +3067,212 @@ - + - - + + - - + + - + - + - - - - + + + + - + - + - - + + - - + + - - + + - - + + - + - - - - - - + - + + + + + + - + - + - + - + - + - + - - + + - + - + - - + + - + - + - + - - + + - + - + - + - - + + - - + + - - + + - - + + - + - - + + - + - + - + - - + + - + - + - + - + - - + + - - + + - + - - + + - + - + @@ -3269,56 +3280,56 @@ - + - + - + - + - + - + - + - - + + - + - + - + - + - + @@ -3327,603 +3338,602 @@ - - + + - + - - - + + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - - - + + + - - + + - - + + - + - + - + - + - + - - + + - - - - - - - + + + + + + - - + + - - + + - + - + - + - + - + - - - - - - + + + + + + - + - - + + - - + + - - + + - + - + - - + + - + - + - - + + - - + + - - + + - + - + - - + + - + - + - - + + - - + + - - + + - + - + - - + + - + - + - - + + - - + + - - + + - + - + - - + + - + - - + + - - - + + + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - - + + + - + - + - + - + - + - + - + - + - - + + - - + + - + - - - + + + - - - + + + - - - + + + - + - + - - - + + + - + - + - - - + + + - - - + + + - - - + + + - + - + - - - + + + - + - + - - - - + + + + - - - - + + + + - - - - + + + + - + - + - - - - + + + + - + - + - + - - - + + + - - - + + + - - - + + + - + - + - - - + + + - + - + - + - + @@ -4006,16 +4016,16 @@ - + - + - + @@ -4030,7 +4040,7 @@ - + @@ -4045,7 +4055,7 @@ - + @@ -4149,7 +4159,7 @@ - + @@ -4179,13 +4189,13 @@ - + - + - + @@ -4199,7 +4209,7 @@ - + @@ -4214,10 +4224,10 @@ - + - + @@ -4236,8 +4246,8 @@ - - + + @@ -4330,7 +4340,7 @@ - + @@ -4351,23 +4361,23 @@ - + - - + + - - + + @@ -4447,7 +4457,7 @@ - + @@ -4456,7 +4466,7 @@ - + @@ -4469,7 +4479,7 @@ - + @@ -4505,7 +4515,7 @@ - + diff --git a/lib/libzutil/zutil_device_path.c b/lib/libzutil/zutil_device_path.c index bcdc72baa..435c444b2 100644 --- a/lib/libzutil/zutil_device_path.c +++ b/lib/libzutil/zutil_device_path.c @@ -31,6 +31,22 @@ #include +/* Substring from after the last slash, or the string itself if none */ +const char * +zfs_basename(const char *path) +{ + const char *bn = strrchr(path, '/'); + return (bn ? bn + 1 : path); +} + +/* Return index of last slash or -1 if none */ +ssize_t +zfs_dirnamelen(const char *path) +{ + const char *end = strrchr(path, '/'); + return (end ? end - path : -1); +} + /* * Given a shorthand device name check if a file by that name exists in any * of the 'zpool_default_import_path' or ZPOOL_IMPORT_PATH directories. If