The branch, master has been updated via 1584095 windbindd: Make cm_connect_lsa_tcp static via 5da31a9 smbd: Always use uint8_t for inbuf pointer via 6ab998f smbd: Pass only cmd to construct_reply_common instead of complete req via b7af51a smbd: Use MIN macro in fake_sendfile via 0e3ea71 s3-winbindd: Make wcache_sid_to_name static via d46081b s3-winbindd: Remove extern declaration for cache_methods from winbindd_dual.c via c12aa0c lib/util: Use charset_compat.h if SAMBA_UTIL_CORE_ONLY via 1fd4556 lib/util: Factor out subsystem samba-util-core from samba-util via db15cc5 lib/util: Clean up includes for util.c via 8dac190 lib/util: Clean up includes for fault.c via d929408 lib/util: Clean up includes for substitute.c via 2426130 lib/util: Replace an SMB_ASSERT() via b69edfe lib/util: Clean up includes for signal.c via fd9f0c2 lib/util: Clean up includes for time.[ch] via 1f0e5cb lib/util: Clean up includes for data_blob.[ch] via 2d7dfe3 lib/util: Clean up includes for xfile.[ch] via 3d6675f lib/util: Clean up includes for blocking.c from 5496270 profiling: Make WITH_PROFILE span more in smbprofile.h
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 15840955cb5bcb7ec74c396852299776e94ccd0f Author: Christof Schmitt <c...@samba.org> Date: Fri Oct 3 10:36:02 2014 -0700 windbindd: Make cm_connect_lsa_tcp static It is only used in winbindd_cm.c Signed-off-by: Christof Schmitt <c...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> Autobuild-User(master): Jeremy Allison <j...@samba.org> Autobuild-Date(master): Sat Oct 4 02:34:49 CEST 2014 on sn-devel-104 commit 5da31a9260b592e84a4edbb9fd1a29e3d099e5b6 Author: Christof Schmitt <c...@samba.org> Date: Tue Sep 2 12:24:29 2014 -0700 smbd: Always use uint8_t for inbuf pointer This avoids some casts from char pointers. Signed-off-by: Christof Schmitt <c...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 6ab998f3fe592350cae47a077b73be30b790af59 Author: Christof Schmitt <c...@samba.org> Date: Tue Sep 2 12:18:30 2014 -0700 smbd: Pass only cmd to construct_reply_common instead of complete req construct_reply_common only needs the commands code and the inbuf field, not the complete request. Signed-off-by: Christof Schmitt <c...@samba.org> commit b7af51a1424483371c61f34dbbf0c8bddcaae48c Author: Christof Schmitt <c...@samba.org> Date: Mon Aug 11 13:19:46 2014 -0700 smbd: Use MIN macro in fake_sendfile Signed-off-by: Christof Schmitt <c...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 0e3ea71c21d682ae4378230ccd4d5c859da75891 Author: Christof Schmitt <c...@samba.org> Date: Fri Aug 29 18:05:43 2014 -0700 s3-winbindd: Make wcache_sid_to_name static It is only used in winbindd_cache.c Signed-off-by: Christof Schmitt <c...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit d46081bf43ff1fa43b7e38329c37de9910cab8ce Author: Christof Schmitt <c...@samba.org> Date: Fri Aug 29 18:04:27 2014 -0700 s3-winbindd: Remove extern declaration for cache_methods from winbindd_dual.c cache_methods is not used in winbindd_dual.c Signed-off-by: Christof Schmitt <c...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit c12aa0c444555f2c8051492083abba69fb94586f Author: Martin Schwenke <mar...@meltin.net> Date: Mon Sep 22 20:26:24 2014 +1000 lib/util: Use charset_compat.h if SAMBA_UTIL_CORE_ONLY When doing a CTDB standalone build we don't want to use dynconfig, since this introduces a lot of unwanted complexity. To avoid this, either: * charset needs to be nobbled to avoid loading the case tables, since this depends on dynconfig; or * charset needs to be avoid completely, so some functions need to be replaced with their ASCII counterparts. The 2nd options seems more honest and less error-prone. Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Jeremy Allison <j...@samba.org> commit 1fd4556917df5d7e2aff4997ff7e5b57f2569b40 Author: Martin Schwenke <mar...@meltin.net> Date: Fri Aug 15 16:00:32 2014 +1000 lib/util: Factor out subsystem samba-util-core from samba-util samba-util depends on Samba-specific code. Exclude this code from samba-util-core. When told to, via SAMBA_UTIL_CORE_ONLY, only build samba-util-core and dependencies. When SAMBA_UTIL_CORE_ONLY is not defined then the behaviour should be unchanged. Standalone builds of CTDB will be done against samba-util-core to avoid pulling in Samba-specific code. An alternative would be to remove the Samba-dependent code from samba-util. However, some of it is used by OpenChange. Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Jeremy Allison <j...@samba.org> commit db15cc5388efdb0803bd2f785f8b6eee7f46ecbf Author: Martin Schwenke <mar...@meltin.net> Date: Mon Sep 22 18:28:53 2014 +1000 lib/util: Clean up includes for util.c Allows standalone compiles without external includes.h. Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Jeremy Allison <j...@samba.org> commit 8dac190ee1bc0e7f6d17eeca097f027fcaf584ed Author: Martin Schwenke <mar...@meltin.net> Date: Mon Sep 22 19:43:27 2014 +1000 lib/util: Clean up includes for fault.c Add fault.h. Allows standalone compiles without external includes.h. Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Jeremy Allison <j...@samba.org> commit d92940819f4162985a70f6b2c79032f75f9fce49 Author: Martin Schwenke <mar...@meltin.net> Date: Mon Sep 22 20:38:52 2014 +1000 lib/util: Clean up includes for substitute.c Add substitute.h. Allows standalone compiles without external includes.h. Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Jeremy Allison <j...@samba.org> commit 2426130c90b216d131330e896daf7302cc198b4a Author: Martin Schwenke <mar...@meltin.net> Date: Wed Sep 24 04:41:25 2014 +1000 lib/util: Replace an SMB_ASSERT() Avoid a cyclic dependency. Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Jeremy Allison <j...@samba.org> commit b69edfed7db299e53e95bcb26cc2899ddd3adb28 Author: Martin Schwenke <mar...@meltin.net> Date: Mon Sep 22 19:57:52 2014 +1000 lib/util: Clean up includes for signal.c Add signal.h. Allows standalone compiles without external includes.h. Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Jeremy Allison <j...@samba.org> commit fd9f0c27e71cdda833e9dd24f0eb87ad524e73cf Author: Martin Schwenke <mar...@meltin.net> Date: Mon Sep 22 19:38:18 2014 +1000 lib/util: Clean up includes for time.[ch] Allows standalone compile without external includes.h. Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Jeremy Allison <j...@samba.org> commit 1f0e5cb38c6d444d33b7736d43a32439cdf04d81 Author: Martin Schwenke <mar...@meltin.net> Date: Mon Sep 22 19:31:23 2014 +1000 lib/util: Clean up includes for data_blob.[ch] Allows standalone compile without external includes.h. Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Jeremy Allison <j...@samba.org> commit 2d7dfe3d68c39f11afdece3281f9fbca0b48fb3f Author: Martin Schwenke <mar...@meltin.net> Date: Mon Sep 22 19:21:42 2014 +1000 lib/util: Clean up includes for xfile.[ch] The include files added to xfile.h are already included unconditionally elsewhere (replace.h, samba_util.h, ...) so Samba can't be built without them. To minimise dependencies, only include specific util headers instead of samba_util.h. Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Jeremy Allison <j...@samba.org> commit 3d6675fd1ee32ba0795f7f09f42a1b005ba5e621 Author: Martin Schwenke <mar...@meltin.net> Date: Mon Sep 22 18:14:53 2014 +1000 lib/util: Clean up includes for blocking.c Add blocking.h. Allows standalone compile without external includes.h. Signed-off-by: Martin Schwenke <mar...@meltin.net> Reviewed-by: Jeremy Allison <j...@samba.org> ----------------------------------------------------------------------- Summary of changes: lib/util/blocking.c | 3 +- libcli/smb/smb_util.h => lib/util/blocking.h | 21 ++- lib/util/charset_compat.h | 9 + lib/util/data_blob.c | 4 +- lib/util/data_blob.h | 1 + lib/util/fault.c | 8 +- lib/util/{util_pw.h => fault.h} | 46 ++++-- lib/util/samba_util.h | 95 +---------- lib/util/signal.c | 4 +- .../headers/test_headers.c => lib/util/signal.h | 46 +++--- lib/util/substitute.c | 15 ++- lib/util/substitute.h | 56 +++++++ lib/util/time.c | 6 +- lib/util/time.h | 4 + lib/util/util.c | 7 +- lib/util/wscript_build | 173 +++++++++++--------- lib/util/xfile.c | 3 +- lib/util/xfile.h | 6 + source3/smbd/process.c | 18 +- source3/smbd/reply.c | 6 +- source3/winbindd/winbindd_cache.c | 12 +- source3/winbindd/winbindd_cm.c | 6 +- source3/winbindd/winbindd_dual.c | 1 - source3/winbindd/winbindd_proto.h | 9 - 24 files changed, 311 insertions(+), 248 deletions(-) copy libcli/smb/smb_util.h => lib/util/blocking.h (65%) create mode 100644 lib/util/charset_compat.h copy lib/util/{util_pw.h => fault.h} (50%) copy testsuite/headers/test_headers.c => lib/util/signal.h (50%) create mode 100644 lib/util/substitute.h Changeset truncated at 500 lines: diff --git a/lib/util/blocking.c b/lib/util/blocking.c index 157804a..358eda0 100644 --- a/lib/util/blocking.c +++ b/lib/util/blocking.c @@ -21,10 +21,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "includes.h" +#include "replace.h" #include "system/network.h" #include "system/filesys.h" #include "system/locale.h" +#include "blocking.h" #undef malloc #undef strcasecmp #undef strncasecmp diff --git a/libcli/smb/smb_util.h b/lib/util/blocking.h similarity index 65% copy from libcli/smb/smb_util.h copy to lib/util/blocking.h index 322ecb6..017e424 100644 --- a/libcli/smb/smb_util.h +++ b/lib/util/blocking.h @@ -1,9 +1,11 @@ /* Unix SMB/CIFS implementation. - client file operations - Copyright (C) Andrew Tridgell 1994-1998 + Samba utility functions + Copyright (C) Andrew Tridgell 1992-1998 Copyright (C) Jeremy Allison 2001-2002 - Copyright (C) James Myers 2003 + Copyright (C) Simo Sorce 2001 + Copyright (C) Jim McDonough (j...@us.ibm.com) 2003. + Copyright (C) James J Myers 2003 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 @@ -19,9 +21,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ -char *attrib_string(TALLOC_CTX *mem_ctx, uint32_t attrib); -uint32_t unix_perms_to_wire(mode_t perms); -mode_t wire_perms_to_unix(uint32_t perms); -mode_t unix_filetype_from_wire(uint32_t wire_type); +#ifndef _SAMBA_BLOCKING_H_ +#define _SAMBA_BLOCKING_H_ -bool smb_buffer_oob(uint32_t bufsize, uint32_t offset, uint32_t length); +#include <stdbool.h> + +int set_blocking(int fd, bool set); +bool smb_set_close_on_exec(int fd); + +#endif /* _SAMBA_BLOCKING_H_ */ diff --git a/lib/util/charset_compat.h b/lib/util/charset_compat.h new file mode 100644 index 0000000..cb3b625 --- /dev/null +++ b/lib/util/charset_compat.h @@ -0,0 +1,9 @@ +#ifndef _SAMBA_CHARSET_COMPAT_H_ +#define _SAMBA_CHARSET_COMPAT_H_ + +#include <string.h> + +#define strchr_m(h, n) strchr(h, n) +#define strstr_m(h, n) strstr(h, n) + +#endif /* _SAMBA_CHARSET_COMPAT_H_ */ diff --git a/lib/util/data_blob.c b/lib/util/data_blob.c index 10864a0..1b0e6ab 100644 --- a/lib/util/data_blob.c +++ b/lib/util/data_blob.c @@ -18,7 +18,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "includes.h" +#include "replace.h" +#include "attr.h" +#include "data_blob.h" const DATA_BLOB data_blob_null = { NULL, 0 }; diff --git a/lib/util/data_blob.h b/lib/util/data_blob.h index 09a9292..a5caa92 100644 --- a/lib/util/data_blob.h +++ b/lib/util/data_blob.h @@ -31,6 +31,7 @@ #endif #include <talloc.h> +#include <stdbool.h> #include <stdint.h> /* used to hold an arbitrary blob of data */ diff --git a/lib/util/fault.c b/lib/util/fault.c index 78d9177..54d8471 100644 --- a/lib/util/fault.c +++ b/lib/util/fault.c @@ -18,8 +18,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "includes.h" +#include "replace.h" #include "system/filesys.h" +#include "system/wait.h" #include "version.h" #ifdef HAVE_SYS_SYSCTL_H @@ -31,6 +32,11 @@ #include <sys/prctl.h> #endif +#include "debug.h" +#include "lib/util/signal.h" /* Avoid /usr/include/signal.h */ +#include "substitute.h" +#include "fault.h" + static struct { bool disabled; smb_panic_handler_t panic_handler; diff --git a/lib/util/util_pw.h b/lib/util/fault.h similarity index 50% copy from lib/util/util_pw.h copy to lib/util/fault.h index fae4da9..98a24a3 100644 --- a/lib/util/util_pw.h +++ b/lib/util/fault.h @@ -1,11 +1,8 @@ /* Unix SMB/CIFS implementation. - - Safe versions of getpw* calls - + Critical Fault handling Copyright (C) Andrew Tridgell 1992-1998 - Copyright (C) Jeremy Allison 1997-2001. - Copyright (C) Andrew Bartlett 2002 + Copyright (C) Tim Prouty 2009 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 @@ -21,12 +18,37 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#ifndef __LIB_UTIL_UTIL_PW_H__ -#define __LIB_UTIL_UTIL_PW_H__ +#ifndef _SAMBA_FAULT_H_ +#define _SAMBA_FAULT_H_ + +#include <sys/types.h> + +#include "attr.h" +#include "debug.h" + +/** + * assert macros + */ +#define SMB_ASSERT(b) \ +do { \ + if (!(b)) { \ + DEBUG(0,("PANIC: assert failed at %s(%d): %s\n", \ + __FILE__, __LINE__, #b)); \ + smb_panic("assert failed: " #b); \ + } \ +} while(0) + +extern const char *panic_action; + +/** + Something really nasty happened - panic ! +**/ +typedef void (*smb_panic_handler_t)(const char *why); + +void fault_configure(smb_panic_handler_t panic_handler); +void fault_setup(void); +void fault_setup_disable(void); +_NORETURN_ void smb_panic(const char *reason); -struct passwd *tcopy_passwd(TALLOC_CTX *mem_ctx, - const struct passwd *from); -struct passwd *getpwnam_alloc(TALLOC_CTX *mem_ctx, const char *name); -struct passwd *getpwuid_alloc(TALLOC_CTX *mem_ctx, uid_t uid); -#endif /* __LIB_UTIL_UTIL_PW_H__ */ +#endif /* _SAMBA_FAULT_H_ */ diff --git a/lib/util/samba_util.h b/lib/util/samba_util.h index e9de6fa..41b3fc8 100644 --- a/lib/util/samba_util.h +++ b/lib/util/samba_util.h @@ -21,7 +21,12 @@ #ifndef _SAMBA_UTIL_H_ #define _SAMBA_UTIL_H_ +#ifndef SAMBA_UTIL_CORE_ONLY #include "lib/util/charset/charset.h" +#else +#include "charset_compat.h" +#endif + #include "lib/util/attr.h" /* for TALLOC_CTX */ @@ -45,18 +50,6 @@ extern const char *panic_action; #include "lib/util/byteorder.h" #include "lib/util/talloc_stack.h" -/** - * assert macros - */ -#define SMB_ASSERT(b) \ -do { \ - if (!(b)) { \ - DEBUG(0,("PANIC: assert failed at %s(%d): %s\n", \ - __FILE__, __LINE__, #b)); \ - smb_panic("assert failed: " #b); \ - } \ -} while(0) - #ifndef ABS #define ABS(a) ((a)>0?(a):(-(a))) #endif @@ -66,22 +59,14 @@ do { \ #include "../libcli/util/ntstatus.h" #include "lib/util/string_wrappers.h" +#include "fault.h" + /** * Write backtrace to debug log */ _PUBLIC_ void call_backtrace(void); -/** - Something really nasty happened - panic ! -**/ -typedef void (*smb_panic_handler_t)(const char *why); - -_PUBLIC_ void fault_configure(smb_panic_handler_t panic_handler); -_PUBLIC_ void fault_setup(void); -_PUBLIC_ void fault_setup_disable(void); _PUBLIC_ void dump_core_setup(const char *progname, const char *logfile); -_PUBLIC_ _NORETURN_ void smb_panic(const char *reason); - /** register a fault handler. @@ -89,31 +74,7 @@ _PUBLIC_ _NORETURN_ void smb_panic(const char *reason); */ _PUBLIC_ bool register_fault_handler(const char *name, void (*fault_handler)(int sig)); -/* The following definitions come from lib/util/signal.c */ - - -/** - Block sigs. -**/ -void BlockSignals(bool block, int signum); - -/** - Catch a signal. This should implement the following semantics: - - 1) The handler remains installed after being called. - 2) The signal should be blocked during handler execution. -**/ -void (*CatchSignal(int signum,void (*handler)(int )))(int); - -/** - Ignore SIGCLD via whatever means is necessary for this OS. -**/ -void (*CatchChild(void))(int); - -/** - Catch SIGCLD but leave the child around so it's status can be reaped. -**/ -void (*CatchChildLeaveStatus(void))(int); +#include "lib/util/signal.h" /* Avoid /usr/include/signal.h */ struct sockaddr; @@ -253,32 +214,7 @@ _PUBLIC_ void hex_encode(const unsigned char *buff_in, size_t len, char **out_he */ _PUBLIC_ char *hex_encode_talloc(TALLOC_CTX *mem_ctx, const unsigned char *buff_in, size_t len); -/** - Substitute a string for a pattern in another string. Make sure there is - enough room! - - This routine looks for pattern in s and replaces it with - insert. It may do multiple replacements. - - Any of " ; ' $ or ` in the insert string are replaced with _ - if len==0 then the string cannot be extended. This is different from the old - use of len==0 which was for no length checks to be done. -**/ -_PUBLIC_ void string_sub(char *s,const char *pattern, const char *insert, size_t len); - -_PUBLIC_ void string_sub_once(char *s, const char *pattern, - const char *insert, size_t len); - -_PUBLIC_ char *string_sub_talloc(TALLOC_CTX *mem_ctx, const char *s, - const char *pattern, const char *insert); - -/** - Similar to string_sub() but allows for any character to be substituted. - Use with caution! - if len==0 then the string cannot be extended. This is different from the old - use of len==0 which was for no length checks to be done. -**/ -_PUBLIC_ void all_string_sub(char *s,const char *pattern,const char *insert, size_t len); +#include "substitute.h" /** Unescape a URL encoded string, in place. @@ -649,18 +585,7 @@ _PUBLIC_ bool directory_create_or_exist_strict(const char *dname, uid_t uid, mode_t dir_perms); -/** - Set a fd into blocking/nonblocking mode. Uses POSIX O_NONBLOCK if available, - else - if SYSV use O_NDELAY - if BSD use FNDELAY -**/ -_PUBLIC_ int set_blocking(int fd, bool set); - -/** - set close on exec on a file descriptor if available - **/ -_PUBLIC_ bool smb_set_close_on_exec(int fd); +#include "blocking.h" /** Sleep for a specified number of milliseconds. diff --git a/lib/util/signal.c b/lib/util/signal.c index 33a9900..3fc63b2 100644 --- a/lib/util/signal.c +++ b/lib/util/signal.c @@ -18,8 +18,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "includes.h" +#include "replace.h" #include "system/wait.h" +#include "debug.h" +#include "lib/util/signal.h" /* Avoid /usr/include/signal.h */ /** * @file diff --git a/testsuite/headers/test_headers.c b/lib/util/signal.h similarity index 50% copy from testsuite/headers/test_headers.c copy to lib/util/signal.h index a36575f..0663af6 100644 --- a/testsuite/headers/test_headers.c +++ b/lib/util/signal.h @@ -1,7 +1,8 @@ /* Unix SMB/CIFS implementation. + signal handling functions - Copyright (C) Andrew Tridgell 2011 + Copyright (C) Andrew Tridgell 1998 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 @@ -17,27 +18,32 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ -/* - this tests that all of our public headers will build - */ - -#define _GNU_SOURCE 1 +#ifndef _SAMBA_UTIL_SIGNAL_H_ +#define _SAMBA_UTIL_SIGNAL_H_ -#include <Python.h> -#include <stdio.h> -#include <unistd.h> -#include <stdlib.h> -#include <stdint.h> #include <stdbool.h> -/* pre-include some of the public headers to avoid ordering issues */ -#include "core/ntstatus.h" +/** + Block sigs. +**/ +void BlockSignals(bool block, int signum); + +/** + Catch a signal. This should implement the following semantics: + + 1) The handler remains installed after being called. + 2) The signal should be blocked during handler execution. +**/ +void (*CatchSignal(int signum,void (*handler)(int )))(int); + +/** + Ignore SIGCLD via whatever means is necessary for this OS. +**/ +void (*CatchChild(void))(int); -/* include all our public headers */ -#include "test_headers.h" +/** + Catch SIGCLD but leave the child around so it's status can be reaped. +**/ +void (*CatchChildLeaveStatus(void))(int); -int main(void) -{ - printf("All OK\n"); - return 0; -} +#endif /* _SAMBA_UTIL_SIGNAL_H_ */ diff --git a/lib/util/substitute.c b/lib/util/substitute.c index 500d127..49adeaf 100644 --- a/lib/util/substitute.c +++ b/lib/util/substitute.c @@ -21,7 +21,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "includes.h" +#include "replace.h" +#include "debug.h" +#ifndef SAMBA_UTIL_CORE_ONLY +#include "charset/charset.h" +#else +#include "charset_compat.h" +#endif +#include "substitute.h" /** * @file @@ -146,7 +153,11 @@ _PUBLIC_ char *string_sub_talloc(TALLOC_CTX *mem_ctx, const char *s, if (ret == NULL) return NULL; - SMB_ASSERT(ret[len] == '\0'); + if (ret[len] != '\0') { + DEBUG(0,("Internal error at %s(%d): string not terminated\n", + __FILE__, __LINE__)); + abort(); + } talloc_set_name_const(ret, ret); diff --git a/lib/util/substitute.h b/lib/util/substitute.h new file mode 100644 index 0000000..5ba469c --- /dev/null +++ b/lib/util/substitute.h @@ -0,0 +1,56 @@ +/* + Unix SMB/CIFS implementation. + Samba utility functions + + Copyright (C) Andrew Tridgell 1992-2001 + Copyright (C) Simo Sorce 2001-2002 + Copyright (C) Martin Pool 2003 + Copyright (C) James Peach 2005 + + 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef _SAMBA_SUBSTITUTE_H_ +#define _SAMBA_SUBSTITUTE_H_ + +#include <talloc.h> + +/** + Substitute a string for a pattern in another string. Make sure there is + enough room! + + This routine looks for pattern in s and replaces it with + insert. It may do multiple replacements. + + Any of " ; ' $ or ` in the insert string are replaced with _ -- Samba Shared Repository