When run with a root '/' cwd the mount.zfs helper would strip not
only the '/' but also the next character from the dataset name.
For example, '/tank' was changed to 'ank' instead of just 'tank'.
Originally, this was done for the '/tmp' cwd case where we needed
to strip the '/' following the cwd. For example '/tmp/tank' needed
to remove the '/tmp' cwd plus 1 character for the '/'.
This change fixes the problem by checking the cwd and if it ends in
a '/' it does not strip and extra character. Otherwise it will strip
the next character. I believe this should only ever be true for the
root directory.
Closes #148
parse_dataset(char *dataset)
{
char cwd[PATH_MAX];
+ int len;
(void) getcwd(cwd, PATH_MAX);
- if (!strncmp(cwd, dataset, strlen(cwd)))
- return (dataset + strlen(cwd) + 1);
+ len = strlen(cwd);
+
+ /* Do not add one when cwd already ends in a trailing '/' */
+ if (!strncmp(cwd, dataset, len))
+ return (dataset + len + (cwd[len-1] != '/'));
return (dataset);
}