/* Unix SMB/CIFS implementation. string substitution functions Copyright (C) Andrew Tridgell 1992-2000 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 2 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, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "includes.h" /* oh bugger - I realy didn't want to have a top-level context anywhere, but until we change all lp_*() calls to take a context argument this is needed */ static struct substitute_context *sub; void sub_set_context(struct substitute_context *subptr) { sub = subptr; } /* setup a string in the negotiate structure, using alpha_strcpy with SAFE_NETBIOS_CHARS */ static void setup_string(char **dest, const char *str) { char *s; s = strdup(str); if (!s) { return; } alpha_strcpy(s, str, SAFE_NETBIOS_CHARS, strlen(s)+1); trim_string(s," "," "); strlower(s); SAFE_FREE(*dest); (*dest) = s; } void sub_set_remote_proto(const char *str) { if (!sub) return; setup_string(&sub->remote_proto, str); } void sub_set_remote_arch(const char *str) { if (!sub) return; setup_string(&sub->remote_arch, str); } /* setup the string used by %U substitution */ void sub_set_user_name(const char *name) { if (!sub) return; setup_string(&sub->user_name, name); } /**************************************************************************** FOO ****************************************************************************/ void standard_sub_basic(char *str,size_t len) { } /**************************************************************************** Do some standard substitutions in a string. This function will return an allocated string that have to be freed. ****************************************************************************/ char *talloc_sub_basic(TALLOC_CTX *mem_ctx, const char *smb_name, const char *str) { return talloc_strdup(mem_ctx, str); } char *alloc_sub_basic(const char *smb_name, const char *str) { return strdup(str); } /**************************************************************************** Do some specific substitutions in a string. This function will return an allocated string that have to be freed. ****************************************************************************/ char *talloc_sub_specified(TALLOC_CTX *mem_ctx, const char *input_string, const char *username, const char *domain, uid_t uid, gid_t gid) { return talloc_strdup(mem_ctx, input_string); } char *alloc_sub_specified(const char *input_string, const char *username, const char *domain, uid_t uid, gid_t gid) { return strdup(input_string); } char *talloc_sub_advanced(TALLOC_CTX *mem_ctx, int snum, const char *user, const char *connectpath, gid_t gid, const char *smb_name, char *str) { return talloc_strdup(mem_ctx, str); } char *alloc_sub_advanced(int snum, const char *user, const char *connectpath, gid_t gid, const char *smb_name, char *str) { return strdup(str); } /**************************************************************************** Do some standard substitutions in a string. ****************************************************************************/ void standard_sub_tcon(struct smbsrv_tcon *tcon, char *str, size_t len) { } char *talloc_sub_tcon(TALLOC_CTX *mem_ctx, struct smbsrv_tcon *tcon, char *str) { return talloc_strdup(mem_ctx, str); } char *alloc_sub_tcon(struct smbsrv_tcon *tcon, char *str) { return strdup(str); } /**************************************************************************** Like standard_sub but by snum. ****************************************************************************/ void standard_sub_snum(int snum, char *str, size_t len) { }