int
union_search(mnt_map *m, char *map, char *key, char **pval, time_t *tp)
{
- char *mapd = strdup(map + UNION_PREFLEN);
+ char *mapd = xstrdup(map + UNION_PREFLEN);
char **v = strsplit(mapd, ':', '\"');
char **p;
size_t l;
int
union_reload(mnt_map *m, char *map, void (*fn) (mnt_map *, char *, char *))
{
- char *mapd = strdup(map + UNION_PREFLEN);
+ static const char fseq[] = "fs:=";
+ char *mapd = xstrdup(map + UNION_PREFLEN);
char **v = strsplit(mapd, ':', '\"');
char **dir;
/*
* Add fake /defaults entry
*/
- (*fn) (m, strdup("/defaults"), strdup("type:=link;opts:=nounmount;sublink:=${key}"));
+ (*fn) (m, xstrdup("/defaults"), xstrdup("type:=link;opts:=nounmount;sublink:=${key}"));
for (dir = v; *dir; dir++) {
size_t l;
plog(XLOG_USER, "Cannot read directory %s: %m", *dir);
continue;
}
- l = strlen(*dir) + 5;
+ l = strlen(*dir) + sizeof(fseq);
dlog("Reading directory %s...", *dir);
while ((dp = readdir(dirp))) {
dlog("... gives %s", dp->d_name);
val = xmalloc(l);
- xsnprintf(val, l + 5, "fs:=%s", *dir);
- (*fn) (m, strdup(dp->d_name), val);
+ xsnprintf(val, l, "%s%s", fseq, *dir);
+ (*fn) (m, xstrdup(dp->d_name), val);
}
closedir(dirp);
}
* Add wildcard entry
*/
{
- size_t l = strlen(*(dir-1)) + 5;
+ size_t l = strlen(*(dir-1)) + sizeof(fseq);
char *val = xmalloc(l);
- xsnprintf(val, l, "fs:=%s", *(dir-1));
- (*fn) (m, strdup("*"), val);
+ xsnprintf(val, l, "%s%s", fseq, *(dir-1));
+ (*fn) (m, xstrdup("*"), val);
}
XFREE(mapd);
XFREE(v);