Skip to content

Commit 84848e9

Browse files
committed
Upstream: dirname -> zfs_dirnamelen [squash]
Forgot to actually change it to zfs_dirnamelen Signed-off-by: Jorgen Lundman <[email protected]>
1 parent db7495e commit 84848e9

File tree

2 files changed

+22
-7
lines changed

2 files changed

+22
-7
lines changed

cmd/zpool/zpool_vdev.c

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,8 @@ make_leaf_vdev(nvlist_t *props, const char *arg, boolean_t is_primary)
275275
{
276276
char path[MAXPATHLEN];
277277
char *d, *b;
278-
char *dpath, *bname;
278+
char *dpath;
279+
const char *bname;
279280
struct stat64 statbuf;
280281
nvlist_t *vdev = NULL;
281282
char *type = NULL;
@@ -317,9 +318,14 @@ make_leaf_vdev(nvlist_t *props, const char *arg, boolean_t is_primary)
317318
*/
318319
d = strdup(arg);
319320
b = strdup(arg);
320-
dpath = dirname(d);
321-
bname = basename(b);
321+
int idx = zfs_dirnamelen(d);
322+
if (idx != -1)
323+
d[idx] = 0;
324+
dpath = d;
325+
bname = zfs_basename(b);
322326
if (realpath(dpath, path) == NULL) {
327+
free(d);
328+
free(b);
323329
(void) fprintf(stderr,
324330
gettext("cannot resolve path '%s'\n"), dpath);
325331
return (NULL);

lib/libzutil/zutil_device_path.c

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ zfs_strcmp_pathname(const char *name, const char *cmp, int wholedisk)
159159
char cmp_name[MAXPATHLEN];
160160
char *dir, *tmp = NULL;
161161
char *d, *b;
162-
char *dpath, *bname;
162+
const char *dpath, *bname;
163163

164164
/* Strip redundant slashes if they exist due to ZPOOL_IMPORT_PATH */
165165
cmp_name[0] = '\0';
@@ -187,18 +187,27 @@ zfs_strcmp_pathname(const char *name, const char *cmp, int wholedisk)
187187
if ((path_len == cmp_len) && strcmp(path_name, cmp_name) == 0)
188188
return (0);
189189
else {
190+
int idx;
190191
d = strdup(path_name);
191192
b = strdup(path_name);
192-
dpath = dirname(d);
193-
bname = basename(b);
193+
idx = zfs_dirnamelen(d);
194+
if (idx != -1)
195+
d[idx] = 0;
196+
dpath = d;
197+
bname = zfs_basename(b);
194198
if (realpath(dpath, path_name) == NULL) {
195199
(void) fprintf(stderr, "cannot resolve path '%s'\n",
196200
dpath);
201+
free(d);
202+
free(b);
197203
return (ENOENT);
198204
}
199205

200-
if (strcmp(dpath, path_name) == 0)
206+
if (strcmp(dpath, path_name) == 0) {
207+
free(d);
208+
free(b);
201209
return (ENOENT); // We already tried this path
210+
}
202211

203212
strlcat(path_name, "/", sizeof (path_name));
204213
path_len = strlcat(path_name, bname, sizeof (path_name));

0 commit comments

Comments
 (0)