/* * Unix SMB/CIFS implementation. * Samba utility functions * Copyright (C) Andrew Tridgell 1992-1998 * Copyright (C) Jeremy Allison 2001-2007 * Copyright (C) Simo Sorce 2001 * Copyright (C) Jim McDonough 2003 * Copyright (C) James Peach 2006 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "replace.h" #include #include "lib/util/samba_util.h" #include "lib/util_path.h" struct share_params; #include "source3/param/param_proto.h" /** * @brief Returns an absolute path to a file concatenating the provided * @a rootpath and @a basename * * @param name Filename, relative to @a rootpath * * @retval Pointer to a string containing the full path. **/ static char *xx_path(const char *name, const char *rootpath) { char *fname = NULL; fname = talloc_strdup(talloc_tos(), rootpath); if (!fname) { return NULL; } trim_string(fname,"","/"); if (!directory_create_or_exist(fname, 0755)) { return NULL; } return talloc_asprintf_append(fname, "/%s", name); } /** * @brief Returns an absolute path to a file in the Samba lock directory. * * @param name File to find, relative to LOCKDIR. * * @retval Pointer to a talloc'ed string containing the full path. **/ char *lock_path(const char *name) { return xx_path(name, lp_lock_directory()); } /** * @brief Returns an absolute path to a file in the Samba state directory. * * @param name File to find, relative to STATEDIR. * * @retval Pointer to a talloc'ed string containing the full path. **/ char *state_path(const char *name) { return xx_path(name, lp_state_directory()); } /** * @brief Returns an absolute path to a file in the Samba cache directory. * * @param name File to find, relative to CACHEDIR. * * @retval Pointer to a talloc'ed string containing the full path. **/ char *cache_path(const char *name) { return xx_path(name, lp_cache_directory()); }