From dfc517b05395d925a4d7b1ce9633a849f9468e70 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 23 Feb 2006 15:52:24 +0000 Subject: r13658: More moving around of files: - Collect the generic utility functions into a lib/util/ (a la GLib is for the GNOME folks) - Remove even more files from include/ (This used to be commit ba62880f5b05c2a505dc7f54676b231197a7e707) --- source4/lib/util/util.h | 81 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 source4/lib/util/util.h (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h new file mode 100644 index 0000000000..55d775e25c --- /dev/null +++ b/source4/lib/util/util.h @@ -0,0 +1,81 @@ +/* + Unix SMB/CIFS implementation. + Utility functions for Samba + Copyright (C) Andrew Tridgell 1992-1999 + Copyright (C) John H Terpstra 1996-1999 + Copyright (C) Luke Kenneth Casson Leighton 1996-1999 + Copyright (C) Paul Ashton 1998 - 1999 + + 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. +*/ + +#ifndef _SAMBA_UTIL_H_ +#define _SAMBA_UTIL_H_ + +struct substitute_context; + +#include "util/xfile.h" +#include "util/debug.h" +#include "util/mutex.h" +#include "util/byteorder.h" +#include "util/util_proto.h" + +/* zero a structure */ +#define ZERO_STRUCT(x) memset((char *)&(x), 0, sizeof(x)) + +/* zero a structure given a pointer to the structure */ +#define ZERO_STRUCTP(x) do { if ((x) != NULL) memset((char *)(x), 0, sizeof(*(x))); } while(0) + +/* zero a structure given a pointer to the structure - no zero check */ +#define ZERO_STRUCTPN(x) memset((char *)(x), 0, sizeof(*(x))) + +/* pointer difference macro */ +#define PTR_DIFF(p1,p2) ((ptrdiff_t)(((const char *)(p1)) - (const char *)(p2))) + +/* work out how many elements there are in a static array */ +#define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0])) + +/* assert macros */ +#define SMB_ASSERT(b) do { if (!(b)) { \ + DEBUG(0,("PANIC: assert failed at %s(%d)\n", __FILE__, __LINE__)); \ + smb_panic("assert failed"); }} while (0) + +#ifndef MIN +#define MIN(a,b) ((a)<(b)?(a):(b)) +#endif + +#ifndef MAX +#define MAX(a,b) ((a)>(b)?(a):(b)) +#endif + +#ifndef ABS +#define ABS(a) ((a)>0?(a):(-(a))) +#endif + +#ifndef SAFE_FREE /* Oh no this is also defined in tdb.h */ +/** + * Free memory if the pointer and zero the pointer. + * + * @note You are explicitly allowed to pass NULL pointers -- they will + * always be ignored. + **/ +#define SAFE_FREE(x) do { if ((x) != NULL) {free(discard_const_p(void *, (x))); (x)=NULL;} } while(0) +#endif + +#define malloc_p(type) (type *)malloc(sizeof(type)) +#define malloc_array_p(type, count) (type *)realloc_array(NULL, sizeof(type), count) +#define realloc_p(p, type, count) (type *)realloc_array(p, sizeof(type), count) + +#endif /* _SAMBA_UTIL_H_ */ -- cgit From 4d8fe47f7fcfa1b0f479faf72d7d3fe15f799be5 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 5 Mar 2006 20:45:18 +0000 Subject: r13849: More improvements to the libutil docs. (This used to be commit eed16ac3b7f7062a34f09f602db0f828cac7f246) --- source4/lib/util/util.h | 63 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 57 insertions(+), 6 deletions(-) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 55d775e25c..272cc13f4e 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -24,6 +24,11 @@ #ifndef _SAMBA_UTIL_H_ #define _SAMBA_UTIL_H_ +/** + * @file + * @brief Helpful macros + */ + struct substitute_context; #include "util/xfile.h" @@ -32,34 +37,55 @@ struct substitute_context; #include "util/byteorder.h" #include "util/util_proto.h" -/* zero a structure */ +/** + * zero a structure + */ #define ZERO_STRUCT(x) memset((char *)&(x), 0, sizeof(x)) -/* zero a structure given a pointer to the structure */ +/** + * zero a structure given a pointer to the structure + */ #define ZERO_STRUCTP(x) do { if ((x) != NULL) memset((char *)(x), 0, sizeof(*(x))); } while(0) -/* zero a structure given a pointer to the structure - no zero check */ +/** + * zero a structure given a pointer to the structure - no zero check + */ #define ZERO_STRUCTPN(x) memset((char *)(x), 0, sizeof(*(x))) -/* pointer difference macro */ +/** + * pointer difference macro + */ #define PTR_DIFF(p1,p2) ((ptrdiff_t)(((const char *)(p1)) - (const char *)(p2))) -/* work out how many elements there are in a static array */ +/** + * work out how many elements there are in a static array + */ #define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0])) -/* assert macros */ +/** + * assert macros + */ #define SMB_ASSERT(b) do { if (!(b)) { \ DEBUG(0,("PANIC: assert failed at %s(%d)\n", __FILE__, __LINE__)); \ smb_panic("assert failed"); }} while (0) +/** + * determine the lowest of two values + */ #ifndef MIN #define MIN(a,b) ((a)<(b)?(a):(b)) #endif +/** + * determine the highest of two values + */ #ifndef MAX #define MAX(a,b) ((a)>(b)?(a):(b)) #endif +/** + * determine absolute value + */ #ifndef ABS #define ABS(a) ((a)>0?(a):(-(a))) #endif @@ -78,4 +104,29 @@ struct substitute_context; #define malloc_array_p(type, count) (type *)realloc_array(NULL, sizeof(type), count) #define realloc_p(p, type, count) (type *)realloc_array(p, sizeof(type), count) +#if defined(VALGRIND) +#define strlen(x) valgrind_strlen(x) +#endif + +/** + this is a warning hack. The idea is to use this everywhere that we + get the "discarding const" warning from gcc. That doesn't actually + fix the problem of course, but it means that when we do get to + cleaning them up we can do it by searching the code for + discard_const. + + It also means that other error types aren't as swamped by the noise + of hundreds of const warnings, so we are more likely to notice when + we get new errors. + + Please only add more uses of this macro when you find it + _really_ hard to fix const warnings. Our aim is to eventually use + this function in only a very few places. + + Also, please call this via the discard_const_p() macro interface, as that + makes the return type safe. +*/ +#define discard_const(ptr) ((void *)((intptr_t)(ptr))) +#define discard_const_p(type, ptr) ((type *)discard_const(ptr)) + #endif /* _SAMBA_UTIL_H_ */ -- cgit From c287cc247d90c996894cab18e870c992e7f84f85 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 6 Mar 2006 00:24:51 +0000 Subject: r13851: More doc improvements. (This used to be commit 936d26ae64b93ef8f8b2fbc632b1c2fd60840405) --- source4/lib/util/util.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 272cc13f4e..1dfd942dd3 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -100,8 +100,20 @@ struct substitute_context; #define SAFE_FREE(x) do { if ((x) != NULL) {free(discard_const_p(void *, (x))); (x)=NULL;} } while(0) #endif +/** + * Type-safe version of malloc. Allocated one copy of the + * specified data type. + */ #define malloc_p(type) (type *)malloc(sizeof(type)) + +/** + * Allocate an array of elements of one data type. Does type-checking. + */ #define malloc_array_p(type, count) (type *)realloc_array(NULL, sizeof(type), count) + +/** + * Resize an array of elements of one data type. Does type-checking. + */ #define realloc_p(p, type, count) (type *)realloc_array(p, sizeof(type), count) #if defined(VALGRIND) @@ -127,6 +139,8 @@ struct substitute_context; makes the return type safe. */ #define discard_const(ptr) ((void *)((intptr_t)(ptr))) + +/** Type-safe version of discard_const */ #define discard_const_p(type, ptr) ((type *)discard_const(ptr)) #endif /* _SAMBA_UTIL_H_ */ -- cgit From 15ec1f8f00500e8d4a382371c21af4141a75772e Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 13 Mar 2006 05:02:30 +0000 Subject: r14296: added an abort() to SMB_ASSERT() so that static analysers know it doesn't return (This used to be commit 72334813087740cba42973bdf787d96d2d140bad) --- source4/lib/util/util.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 1dfd942dd3..318e497105 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -67,7 +67,7 @@ struct substitute_context; */ #define SMB_ASSERT(b) do { if (!(b)) { \ DEBUG(0,("PANIC: assert failed at %s(%d)\n", __FILE__, __LINE__)); \ - smb_panic("assert failed"); }} while (0) + smb_panic("assert failed"); abort(); }} while (0) /** * determine the lowest of two values -- cgit From 61933e159cc2a8399f8bb1fa53844a67f8bba55b Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 14 Mar 2006 15:22:36 +0000 Subject: r14381: Kill structs.h (This used to be commit 1ffb82a7596f989c90df69573083a2c2e28f8808) --- source4/lib/util/util.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 318e497105..e0255c692c 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -30,6 +30,8 @@ */ struct substitute_context; +struct asn1_data; +struct smbsrv_tcon; #include "util/xfile.h" #include "util/debug.h" -- cgit From b785a7c40c185512207ef8da837a766933073032 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 16 Mar 2006 21:36:36 +0000 Subject: r14492: Fix shared libs - set SO_VERSION to 0 everywhere for now. (This used to be commit 4682bc5ce047d81586447b9df82c91ed1fe677cf) --- source4/lib/util/util.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index e0255c692c..60cba737a9 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -24,6 +24,8 @@ #ifndef _SAMBA_UTIL_H_ #define _SAMBA_UTIL_H_ +#include "charset/charset.h" + /** * @file * @brief Helpful macros -- cgit From 5b0051e0325aea7e46715aa61bba0a1dc025132c Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Fri, 17 Mar 2006 13:55:10 +0000 Subject: r14511: Install more headers (This used to be commit e1f896948fad8cf5a1aec300865c250c5721ee7d) --- source4/lib/util/util.h | 1 + 1 file changed, 1 insertion(+) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 60cba737a9..d6b412ee71 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -24,6 +24,7 @@ #ifndef _SAMBA_UTIL_H_ #define _SAMBA_UTIL_H_ +#include "core.h" #include "charset/charset.h" /** -- cgit From 7b01c9e0c464c37ee878ada65fef2c67f1f55e53 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 19 Mar 2006 03:14:56 +0000 Subject: r14556: Fix some dependencies (This used to be commit b5802770322678d3f9c2044039cc254024612f9b) --- source4/lib/util/util.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index d6b412ee71..73fb675e28 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -40,7 +40,7 @@ struct smbsrv_tcon; #include "util/debug.h" #include "util/mutex.h" #include "util/byteorder.h" -#include "util/util_proto.h" +#include "lib/util/util_proto.h" /** * zero a structure -- cgit From 18cddd580e04344e05593d9f63beb9ead53cfab2 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 20 Mar 2006 00:28:12 +0000 Subject: r14575: Move some path-related functions to libsamba-config so libsamba-util doesn't have to depend on the lp_* functions. (This used to be commit f97df7d90a41b77a9edd2d6bdc47c27bf1b6bb07) --- source4/lib/util/util.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 73fb675e28..1b48bafc94 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -36,6 +36,9 @@ struct substitute_context; struct asn1_data; struct smbsrv_tcon; +extern const char *logfile; +extern const char *panic_action; + #include "util/xfile.h" #include "util/debug.h" #include "util/mutex.h" -- cgit From 935af3eb1963761b4c8fd9e0e9902ad592f948bf Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 25 Mar 2006 18:47:47 +0000 Subject: r14724: Rearrange some source files, install more headers. (This used to be commit 7146c1600f29c349e5bb78f810e7e170b535dd37) --- source4/lib/util/util.h | 1 - 1 file changed, 1 deletion(-) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 1b48bafc94..8a2a9163d6 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -33,7 +33,6 @@ */ struct substitute_context; -struct asn1_data; struct smbsrv_tcon; extern const char *logfile; -- cgit From e2e3a8e007ac2a9533f4205622a6e17d57845fcc Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 24 Apr 2006 14:09:07 +0000 Subject: r15200: Move MIN/MAX macros to libreplace as some systems have them in sys/param.h (This used to be commit 3f0396aade82a92a375275059baf8500de1b23f0) --- source4/lib/util/util.h | 14 -------------- 1 file changed, 14 deletions(-) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 8a2a9163d6..302bd06323 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -76,20 +76,6 @@ extern const char *panic_action; DEBUG(0,("PANIC: assert failed at %s(%d)\n", __FILE__, __LINE__)); \ smb_panic("assert failed"); abort(); }} while (0) -/** - * determine the lowest of two values - */ -#ifndef MIN -#define MIN(a,b) ((a)<(b)?(a):(b)) -#endif - -/** - * determine the highest of two values - */ -#ifndef MAX -#define MAX(a,b) ((a)>(b)?(a):(b)) -#endif - /** * determine absolute value */ -- cgit From a30340affe789cd0c001e34c8e523fbba0742cfc Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 24 Apr 2006 14:20:44 +0000 Subject: r15201: Use abs() rather then ABS() (This used to be commit 1f3833d041fddaf79cd19d4f236780a02e97f095) --- source4/lib/util/util.h | 7 ------- 1 file changed, 7 deletions(-) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 302bd06323..383323b5ed 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -76,13 +76,6 @@ extern const char *panic_action; DEBUG(0,("PANIC: assert failed at %s(%d)\n", __FILE__, __LINE__)); \ smb_panic("assert failed"); abort(); }} while (0) -/** - * determine absolute value - */ -#ifndef ABS -#define ABS(a) ((a)>0?(a):(-(a))) -#endif - #ifndef SAFE_FREE /* Oh no this is also defined in tdb.h */ /** * Free memory if the pointer and zero the pointer. -- cgit From 962039a81ce715a9b74d5790b418a22965e2dddd Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 13 May 2006 12:57:14 +0000 Subject: r15564: Fix copyrights (this file was originally based on just a few lines from smb.h) (This used to be commit 045bd55dd992f054606ffacae1580afb817b1e33) --- source4/lib/util/util.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 383323b5ed..f1a6fc4c30 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -2,9 +2,7 @@ Unix SMB/CIFS implementation. Utility functions for Samba Copyright (C) Andrew Tridgell 1992-1999 - Copyright (C) John H Terpstra 1996-1999 - Copyright (C) Luke Kenneth Casson Leighton 1996-1999 - Copyright (C) Paul Ashton 1998 - 1999 + Copyright (C) Jelmer Vernooij 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 -- cgit From ec2b3baf09ebff97bc958e73591e128f14c7a378 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Mon, 10 Jul 2006 16:47:47 +0000 Subject: r16922: move some macros out of talloc.h as the don't belong to talloc metze (This used to be commit 4c68e315e2288eef97527911daf18622a994ac31) --- source4/lib/util/util.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index f1a6fc4c30..2517966d90 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -100,6 +100,10 @@ extern const char *panic_action; */ #define realloc_p(p, type, count) (type *)realloc_array(p, sizeof(type), count) +#define data_blob(ptr, size) data_blob_named(ptr, size, "DATA_BLOB: "__location__) +#define data_blob_talloc(ctx, ptr, size) data_blob_talloc_named(ctx, ptr, size, "DATA_BLOB: "__location__) +#define data_blob_dup_talloc(ctx, blob) data_blob_talloc_named(ctx, (blob)->data, (blob)->length, "DATA_BLOB: "__location__) + #if defined(VALGRIND) #define strlen(x) valgrind_strlen(x) #endif -- cgit From 0329d755a7611ba3897fc1ee9bdce410cc33d7f8 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Wed, 30 Aug 2006 11:29:34 +0000 Subject: r17930: Merge noinclude branch: * Move dlinklist.h, smb.h to subsystem-specific directories * Clean up ads.h and move what is left of it to dsdb/ (only place where it's used) (This used to be commit f7afa1cb77f3cfa7020b57de12e6003db7cfcc42) --- source4/lib/util/util.h | 1 - 1 file changed, 1 deletion(-) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 2517966d90..c7acc2ea33 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -22,7 +22,6 @@ #ifndef _SAMBA_UTIL_H_ #define _SAMBA_UTIL_H_ -#include "core.h" #include "charset/charset.h" /** -- cgit From bb36705c8d360a2ba865a3d8118c52afa1e46f4e Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Sun, 15 Apr 2007 21:13:13 +0000 Subject: r22226: move discard_const macros to librelace metze (This used to be commit c2cfee6d25718fac35bd4ed982c7424f1c3ed0b7) --- source4/lib/util/util.h | 23 ----------------------- 1 file changed, 23 deletions(-) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index c7acc2ea33..dd6c1499bd 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -107,27 +107,4 @@ extern const char *panic_action; #define strlen(x) valgrind_strlen(x) #endif -/** - this is a warning hack. The idea is to use this everywhere that we - get the "discarding const" warning from gcc. That doesn't actually - fix the problem of course, but it means that when we do get to - cleaning them up we can do it by searching the code for - discard_const. - - It also means that other error types aren't as swamped by the noise - of hundreds of const warnings, so we are more likely to notice when - we get new errors. - - Please only add more uses of this macro when you find it - _really_ hard to fix const warnings. Our aim is to eventually use - this function in only a very few places. - - Also, please call this via the discard_const_p() macro interface, as that - makes the return type safe. -*/ -#define discard_const(ptr) ((void *)((intptr_t)(ptr))) - -/** Type-safe version of discard_const */ -#define discard_const_p(type, ptr) ((type *)discard_const(ptr)) - #endif /* _SAMBA_UTIL_H_ */ -- cgit From 4047b20c368f473081eeb951dff119a6c060c9f7 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Tue, 17 Apr 2007 08:03:01 +0000 Subject: r22297: move ZERO_*, ARRAY_SIZE and PTR_DIFF macros into libreplace metze (This used to be commit b69c950858d837d7bd734d418129ade69106a00d) --- source4/lib/util/util.h | 25 ------------------------- 1 file changed, 25 deletions(-) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index dd6c1499bd..cfd77e5a13 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -41,31 +41,6 @@ extern const char *panic_action; #include "util/byteorder.h" #include "lib/util/util_proto.h" -/** - * zero a structure - */ -#define ZERO_STRUCT(x) memset((char *)&(x), 0, sizeof(x)) - -/** - * zero a structure given a pointer to the structure - */ -#define ZERO_STRUCTP(x) do { if ((x) != NULL) memset((char *)(x), 0, sizeof(*(x))); } while(0) - -/** - * zero a structure given a pointer to the structure - no zero check - */ -#define ZERO_STRUCTPN(x) memset((char *)(x), 0, sizeof(*(x))) - -/** - * pointer difference macro - */ -#define PTR_DIFF(p1,p2) ((ptrdiff_t)(((const char *)(p1)) - (const char *)(p2))) - -/** - * work out how many elements there are in a static array - */ -#define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0])) - /** * assert macros */ -- cgit From f21cdbc9425478674b1624f5d2b23c477f6de316 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 19 Apr 2007 12:51:04 +0000 Subject: r22369: add ZERO_STRUCT() ... macros to lib/util/util.h again to fix the openchange build... we need to remove them from libreplace, but I'll think about that next week. metze (This used to be commit 2243142b46e20825339b4f6ed0e878c18e50e45f) --- source4/lib/util/util.h | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index cfd77e5a13..f2531aaa85 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -82,4 +82,45 @@ extern const char *panic_action; #define strlen(x) valgrind_strlen(x) #endif +/** + * zero a structure + */ +#ifndef ZERO_STRUCT +#define ZERO_STRUCT(x) memset((char *)&(x), 0, sizeof(x)) +#endif + +/** + * zero a structure given a pointer to the structure + */ +#ifndef ZERO_STRUCTP +#define ZERO_STRUCTP(x) do { if ((x) != NULL) memset((char *)(x), 0, sizeof(*(x))); } while(0) +#endif + +/** + * zero a structure given a pointer to the structure - no zero check + */ +#ifndef ZERO_STRUCTPN +#define ZERO_STRUCTPN(x) memset((char *)(x), 0, sizeof(*(x))) +#endif + +/* zero an array - note that sizeof(array) must work - ie. it must not be a + pointer */ +#ifndef ZERO_ARRAY +#define ZERO_ARRAY(x) memset((char *)(x), 0, sizeof(x)) +#endif + +/** + * work out how many elements there are in a static array + */ +#ifndef ARRAY_SIZE +#define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0])) +#endif + +/** + * pointer difference macro + */ +#ifndef PTR_DIFF +#define PTR_DIFF(p1,p2) ((ptrdiff_t)(((const char *)(p1)) - (const char *)(p2))) +#endif + #endif /* _SAMBA_UTIL_H_ */ -- cgit From 4bb0cb7449960620052cd555854e59d8d8a9babe Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 19 Apr 2007 13:30:07 +0000 Subject: r22371: readd discard_const() to lib/util/util.h metze (This used to be commit 76fbe90596f5f26c09185129d9a4f3e2b42428e1) --- source4/lib/util/util.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index f2531aaa85..8fde661cb7 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -41,6 +41,33 @@ extern const char *panic_action; #include "util/byteorder.h" #include "lib/util/util_proto.h" +/** + this is a warning hack. The idea is to use this everywhere that we + get the "discarding const" warning from gcc. That doesn't actually + fix the problem of course, but it means that when we do get to + cleaning them up we can do it by searching the code for + discard_const. + + It also means that other error types aren't as swamped by the noise + of hundreds of const warnings, so we are more likely to notice when + we get new errors. + + Please only add more uses of this macro when you find it + _really_ hard to fix const warnings. Our aim is to eventually use + this function in only a very few places. + + Also, please call this via the discard_const_p() macro interface, as that + makes the return type safe. +*/ +#ifndef discard_const +#define discard_const(ptr) ((void *)((intptr_t)(ptr))) +#endif + +/** Type-safe version of discard_const */ +#ifndef discard_const_p +#define discard_const_p(type, ptr) ((type *)discard_const(ptr)) +#endif + /** * assert macros */ -- cgit From 0479a2f1cbae51fcd8dbdc3c148c808421fb4d25 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 10 Jul 2007 02:07:03 +0000 Subject: r23792: convert Samba4 to GPLv3 There are still a few tidyups of old FSF addresses to come (in both s3 and s4). More commits soon. (This used to be commit fcf38a38ac691abd0fa51b89dc951a08e89fdafa) --- source4/lib/util/util.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 8fde661cb7..f19b243f64 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -6,7 +6,7 @@ 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 + 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, @@ -15,8 +15,7 @@ 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. + along with this program. If not, see . */ #ifndef _SAMBA_UTIL_H_ -- cgit From 0b91f3916430d0271eab867675d44c5439de40c2 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Wed, 29 Aug 2007 13:07:03 +0000 Subject: r24780: More work allowing libutil to be used by external users. (This used to be commit 31993cf67b816a184a4a4e92ef8ca2532c797190) --- source4/lib/util/util.h | 710 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 705 insertions(+), 5 deletions(-) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index f19b243f64..0c784d1c97 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -34,11 +34,12 @@ struct smbsrv_tcon; extern const char *logfile; extern const char *panic_action; +#include "util/time.h" +#include "util/data_blob.h" #include "util/xfile.h" #include "util/debug.h" #include "util/mutex.h" #include "util/byteorder.h" -#include "lib/util/util_proto.h" /** this is a warning hack. The idea is to use this everywhere that we @@ -100,10 +101,6 @@ extern const char *panic_action; */ #define realloc_p(p, type, count) (type *)realloc_array(p, sizeof(type), count) -#define data_blob(ptr, size) data_blob_named(ptr, size, "DATA_BLOB: "__location__) -#define data_blob_talloc(ctx, ptr, size) data_blob_talloc_named(ctx, ptr, size, "DATA_BLOB: "__location__) -#define data_blob_dup_talloc(ctx, blob) data_blob_talloc_named(ctx, (blob)->data, (blob)->length, "DATA_BLOB: "__location__) - #if defined(VALGRIND) #define strlen(x) valgrind_strlen(x) #endif @@ -149,4 +146,707 @@ extern const char *panic_action; #define PTR_DIFF(p1,p2) ((ptrdiff_t)(((const char *)(p1)) - (const char *)(p2))) #endif + +/** + * this global variable determines what messages are printed + */ +_PUBLIC_ void debug_schedule_reopen_logs(void); + +/** + the backend for debug messages. Note that the DEBUG() macro has already + ensured that the log level has been met before this is called +*/ +_PUBLIC_ void do_debug_header(int level, const char *location, const char *func); + +/** + the backend for debug messages. Note that the DEBUG() macro has already + ensured that the log level has been met before this is called + + @note You should never have to call this function directly. Call the DEBUG() + macro instead. +*/ +_PUBLIC_ void do_debug(const char *format, ...) _PRINTF_ATTRIBUTE(1,2); + +/** + reopen the log file (usually called because the log file name might have changed) +*/ +_PUBLIC_ void reopen_logs(void); + +/** + control the name of the logfile and whether logging will be to stdout, stderr + or a file +*/ +_PUBLIC_ void setup_logging(const char *prog_name, enum debug_logtype new_logtype); + +/** + return a string constant containing n tabs + no more than 10 tabs are returned +*/ +_PUBLIC_ const char *do_debug_tab(int n); + +/** + log suspicious usage - print comments and backtrace +*/ +_PUBLIC_ void log_suspicious_usage(const char *from, const char *info); + +/** + print suspicious usage - print comments and backtrace +*/ +_PUBLIC_ void print_suspicious_usage(const char* from, const char* info); +_PUBLIC_ uint32_t get_task_id(void); +_PUBLIC_ void log_task_id(void); + +/** + register a set of debug handlers. +*/ +_PUBLIC_ void register_debug_handlers(const char *name, struct debug_ops *ops); + +/* The following definitions come from lib/util/fault.c */ + + +/** + * Write backtrace to debug log + */ +_PUBLIC_ void call_backtrace(void); + +/** + Something really nasty happened - panic ! +**/ +_PUBLIC_ _NORETURN_ void smb_panic(const char *why); + +/** +setup our fault handlers +**/ +_PUBLIC_ void fault_setup(const char *pname); + +/** + register a fault handler. + Should only be called once in the execution of smbd. +*/ +_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); + +/** + Catch SIGCLD but leave the child around so it's status can be reaped. +**/ +void CatchChildLeaveStatus(void); + +/* The following definitions come from lib/util/system.c */ + + +/************************************************************************** +A wrapper for gethostbyname() that tries avoids looking up hostnames +in the root domain, which can cause dial-on-demand links to come up for no +apparent reason. +****************************************************************************/ +_PUBLIC_ struct hostent *sys_gethostbyname(const char *name); +_PUBLIC_ const char *sys_inet_ntoa(struct ipv4_addr in); +_PUBLIC_ struct ipv4_addr sys_inet_makeaddr(int net, int host); + +/* The following definitions come from lib/util/genrand.c */ + +/** + Copy any user given reseed data. +**/ +_PUBLIC_ void set_rand_reseed_callback(void (*fn)(int *)); + +/** + * Tell the random number generator it needs to reseed. + */ +_PUBLIC_ void set_need_random_reseed(void); + +/** + Interface to the (hopefully) good crypto random number generator. +**/ +_PUBLIC_ void generate_random_buffer(uint8_t *out, int len); + +/** + generate a single random uint32_t +**/ +_PUBLIC_ uint32_t generate_random(void); + +/** + very basic password quality checker +**/ +_PUBLIC_ bool check_password_quality(const char *s); + +/** + Use the random number generator to generate a random string. +**/ +_PUBLIC_ char *generate_random_str_list(TALLOC_CTX *mem_ctx, size_t len, const char *list); + +/** + * Generate a random text string consisting of the specified length. + * The returned string will be allocated. + * + * Characters used are: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+_-#., + */ +_PUBLIC_ char *generate_random_str(TALLOC_CTX *mem_ctx, size_t len); + +/* The following definitions come from lib/util/dprintf.c */ + +_PUBLIC_ int d_vfprintf(FILE *f, const char *format, va_list ap) _PRINTF_ATTRIBUTE(2,0); +_PUBLIC_ int d_fprintf(FILE *f, const char *format, ...) _PRINTF_ATTRIBUTE(2,3); +_PUBLIC_ int d_printf(const char *format, ...) _PRINTF_ATTRIBUTE(1,2); +_PUBLIC_ void display_set_stderr(void); + +/* The following definitions come from lib/util/util_str.c */ + + +/** + Trim the specified elements off the front and back of a string. +**/ +_PUBLIC_ bool trim_string(char *s, const char *front, const char *back); + +/** + Find the number of 'c' chars in a string +**/ +_PUBLIC_ _PURE_ size_t count_chars(const char *s, char c); + +/** + Safe string copy into a known length string. maxlength does not + include the terminating zero. +**/ +_PUBLIC_ char *safe_strcpy(char *dest,const char *src, size_t maxlength); + +/** + Safe string cat into a string. maxlength does not + include the terminating zero. +**/ +_PUBLIC_ char *safe_strcat(char *dest, const char *src, size_t maxlength); + +/** + Routine to get hex characters and turn them into a 16 byte array. + the array can be variable length, and any non-hex-numeric + characters are skipped. "0xnn" or "0Xnn" is specially catered + for. + + valid examples: "0A5D15"; "0x15, 0x49, 0xa2"; "59\ta9\te3\n" + + +**/ +_PUBLIC_ size_t strhex_to_str(char *p, size_t len, const char *strhex); + +/** + * Parse a hex string and return a data blob. + */ +_PUBLIC_ _PURE_ DATA_BLOB strhex_to_data_blob(const char *strhex) ; + +/** + * Routine to print a buffer as HEX digits, into an allocated string. + */ +_PUBLIC_ void hex_encode(const unsigned char *buff_in, size_t len, char **out_hex_buffer); + +/** + * talloc version of hex_encode() + */ +_PUBLIC_ char *hex_encode_talloc(TALLOC_CTX *mem_ctx, const unsigned char *buff_in, size_t len); + +/** + Free a string value. +**/ +_PUBLIC_ void string_free(char **s); + +/** + Set a string value, deallocating any existing space, and allocing the space + for the string +**/ +_PUBLIC_ bool string_set(char **dest, const char *src); + +/** + 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); + +/** + 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); + +/** + Unescape a URL encoded string, in place. +**/ +_PUBLIC_ void rfc1738_unescape(char *buf); +size_t valgrind_strlen(const char *s); + +/** + format a string into length-prefixed dotted domain format, as used in NBT + and in some ADS structures +**/ +_PUBLIC_ const char *str_format_nbt_domain(TALLOC_CTX *mem_ctx, const char *s); + +/** + * Add a string to an array of strings. + * + * num should be a pointer to an integer that holds the current + * number of elements in strings. It will be updated by this function. + */ +_PUBLIC_ bool add_string_to_array(TALLOC_CTX *mem_ctx, + const char *str, const char ***strings, int *num); + +/** + varient of strcmp() that handles NULL ptrs +**/ +_PUBLIC_ int strcmp_safe(const char *s1, const char *s2); + +/** +return the number of bytes occupied by a buffer in ASCII format +the result includes the null termination +limited by 'n' bytes +**/ +_PUBLIC_ size_t ascii_len_n(const char *src, size_t n); + +/** + Return a string representing a CIFS attribute for a file. +**/ +_PUBLIC_ char *attrib_string(TALLOC_CTX *mem_ctx, uint32_t attrib); + +/** + Set a boolean variable from the text value stored in the passed string. + Returns true in success, false if the passed string does not correctly + represent a boolean. +**/ +_PUBLIC_ bool set_boolean(const char *boolean_string, bool *boolean); + +/** + * Parse a string containing a boolean value. + * + * val will be set to the read value. + * + * @retval true if a boolean value was parsed, false otherwise. + */ +_PUBLIC_ bool conv_str_bool(const char * str, bool * val); + +/** + * Convert a size specification like 16K into an integral number of bytes. + **/ +_PUBLIC_ bool conv_str_size(const char * str, uint64_t * val); + +/** + * Parse a uint64_t value from a string + * + * val will be set to the value read. + * + * @retval true if parsing was successful, false otherwise + */ +_PUBLIC_ bool conv_str_u64(const char * str, uint64_t * val); + +/** +return the number of bytes occupied by a buffer in CH_UTF16 format +the result includes the null termination +**/ +_PUBLIC_ size_t utf16_len(const void *buf); + +/** +return the number of bytes occupied by a buffer in CH_UTF16 format +the result includes the null termination +limited by 'n' bytes +**/ +_PUBLIC_ size_t utf16_len_n(const void *src, size_t n); +_PUBLIC_ size_t ucs2_align(const void *base_ptr, const void *p, int flags); + +/** +Do a case-insensitive, whitespace-ignoring string compare. +**/ +_PUBLIC_ int strwicmp(const char *psz1, const char *psz2); + +/** + String replace. +**/ +_PUBLIC_ void string_replace(char *s, char oldc, char newc); + +/** + * Compare 2 strings. + * + * @note The comparison is case-insensitive. + **/ +_PUBLIC_ bool strequal(const char *s1, const char *s2); + +/* The following definitions come from lib/util/util_strlist.c */ + + +/** + build a null terminated list of strings from a input string and a + separator list. The separator list must contain characters less than + or equal to 0x2f for this to work correctly on multi-byte strings +*/ +_PUBLIC_ const char **str_list_make(TALLOC_CTX *mem_ctx, const char *string, const char *sep); + +/** + * build a null terminated list of strings from an argv-like input string + * Entries are seperated by spaces and can be enclosed by quotes. + * Does NOT support escaping + */ +_PUBLIC_ const char **str_list_make_shell(TALLOC_CTX *mem_ctx, const char *string, const char *sep); + +/** + * join a list back to one string + */ +_PUBLIC_ char *str_list_join(TALLOC_CTX *mem_ctx, const char **list, char seperator); + +/** join a list back to one (shell-like) string; entries + * seperated by spaces, using quotes where necessary */ +_PUBLIC_ char *str_list_join_shell(TALLOC_CTX *mem_ctx, const char **list, char sep); + +/** + return the number of elements in a string list +*/ +_PUBLIC_ size_t str_list_length(const char **list); + +/** + copy a string list +*/ +_PUBLIC_ const char **str_list_copy(TALLOC_CTX *mem_ctx, const char **list); + +/** + Return true if all the elements of the list match exactly. + */ +_PUBLIC_ bool str_list_equal(const char **list1, const char **list2); + +/** + add an entry to a string list +*/ +_PUBLIC_ const char **str_list_add(const char **list, const char *s); + +/** + remove an entry from a string list +*/ +_PUBLIC_ void str_list_remove(const char **list, const char *s); + +/** + return true if a string is in a list +*/ +_PUBLIC_ bool str_list_check(const char **list, const char *s); + +/** + return true if a string is in a list, case insensitively +*/ +_PUBLIC_ bool str_list_check_ci(const char **list, const char *s); + +/** + Check if a string is part of a list. +**/ +_PUBLIC_ bool in_list(const char *s, const char *list, bool casesensitive); + +/* The following definitions come from lib/util/util_file.c */ + + +/** +read a line from a file with possible \ continuation chars. +Blanks at the start or end of a line are stripped. +The string will be allocated if s2 is NULL +**/ +_PUBLIC_ char *fgets_slash(char *s2,int maxlen,XFILE *f); + +/** + * Read one line (data until next newline or eof) and allocate it + */ +_PUBLIC_ char *afdgets(int fd, TALLOC_CTX *mem_ctx, size_t hint); + +/** +load a file into memory from a fd. +**/ +_PUBLIC_ char *fd_load(int fd, size_t *size, TALLOC_CTX *mem_ctx); + +/** +load a file into memory +**/ +_PUBLIC_ char *file_load(const char *fname, size_t *size, TALLOC_CTX *mem_ctx); + +/** +mmap (if possible) or read a file +**/ +_PUBLIC_ void *map_file(const char *fname, size_t size); + +/** +load a file into memory and return an array of pointers to lines in the file +must be freed with talloc_free(). +**/ +_PUBLIC_ char **file_lines_load(const char *fname, int *numlines, TALLOC_CTX *mem_ctx); + +/** +load a fd into memory and return an array of pointers to lines in the file +must be freed with talloc_free(). If convert is true calls unix_to_dos on +the list. +**/ +_PUBLIC_ char **fd_lines_load(int fd, int *numlines, TALLOC_CTX *mem_ctx); + +/** +take a list of lines and modify them to produce a list where \ continues +a line +**/ +_PUBLIC_ void file_lines_slashcont(char **lines); + +/** + save a lump of data into a file. Mostly used for debugging +*/ +_PUBLIC_ bool file_save(const char *fname, const void *packet, size_t length); +_PUBLIC_ int vfdprintf(int fd, const char *format, va_list ap) _PRINTF_ATTRIBUTE(2,0); +_PUBLIC_ int fdprintf(int fd, const char *format, ...) _PRINTF_ATTRIBUTE(2,3); +_PUBLIC_ bool large_file_support(const char *path); + +/* The following definitions come from lib/util/util.c */ + + +/** + Find a suitable temporary directory. The result should be copied immediately + as it may be overwritten by a subsequent call. +**/ +_PUBLIC_ const char *tmpdir(void); + +/** + Check if a file exists - call vfs_file_exist for samba files. +**/ +_PUBLIC_ bool file_exist(const char *fname); + +/** + Check a files mod time. +**/ +_PUBLIC_ time_t file_modtime(const char *fname); + +/** + Check if a directory exists. +**/ +_PUBLIC_ bool directory_exist(const char *dname); + +/** + * Try to create the specified directory if it didn't exist. + * + * @retval true if the directory already existed and has the right permissions + * or was successfully created. + */ +_PUBLIC_ bool directory_create_or_exist(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); + +/** + Sleep for a specified number of milliseconds. +**/ +_PUBLIC_ void msleep(unsigned int t); + +/** + Get my own name, return in malloc'ed storage. +**/ +_PUBLIC_ char* get_myname(void); + +/** + Return true if a string could be a pure IP address. +**/ +_PUBLIC_ bool is_ipaddress(const char *str); + +/** + Interpret an internet address or name into an IP address in 4 byte form. +**/ +_PUBLIC_ uint32_t interpret_addr(const char *str); + +/** + A convenient addition to interpret_addr(). +**/ +_PUBLIC_ struct ipv4_addr interpret_addr2(const char *str); + +/** + Check if an IP is the 0.0.0.0. +**/ +_PUBLIC_ bool is_zero_ip(struct ipv4_addr ip); + +/** + Are two IPs on the same subnet? +**/ +_PUBLIC_ bool same_net(struct ipv4_addr ip1,struct ipv4_addr ip2,struct ipv4_addr mask); + +/** + Check if a process exists. Does this work on all unixes? +**/ +_PUBLIC_ bool process_exists(pid_t pid); + +/** + Simple routine to do POSIX file locking. Cruft in NFS and 64->32 bit mapping + is dealt with in posix.c +**/ +_PUBLIC_ bool fcntl_lock(int fd, int op, off_t offset, off_t count, int type); + +/** + * Write dump of binary data to the log file. + * + * The data is only written if the log level is at least level. + */ +_PUBLIC_ void dump_data(int level, const uint8_t *buf,int len); + +/** + malloc that aborts with smb_panic on fail or zero size. +**/ +_PUBLIC_ void *smb_xmalloc(size_t size); + +/** + Memdup with smb_panic on fail. +**/ +_PUBLIC_ void *smb_xmemdup(const void *p, size_t size); + +/** + strdup that aborts on malloc fail. +**/ +_PUBLIC_ char *smb_xstrdup(const char *s); + +/** + Like strdup but for memory. +**/ +_PUBLIC_ void *memdup(const void *p, size_t size); + +/** + * Write a password to the log file. + * + * @note Only actually does something if DEBUG_PASSWORD was defined during + * compile-time. + */ +_PUBLIC_ void dump_data_pw(const char *msg, const uint8_t * data, size_t len); + +/** + * see if a range of memory is all zero. A NULL pointer is considered + * to be all zero + */ +_PUBLIC_ bool all_zero(const uint8_t *ptr, size_t size); + +/** + realloc an array, checking for integer overflow in the array size +*/ +_PUBLIC_ void *realloc_array(void *ptr, size_t el_size, unsigned count); + +/* The following definitions come from lib/util/fsusage.c */ + + +/** + * Retrieve amount of free disk space. + * this does all of the system specific guff to get the free disk space. + * It is derived from code in the GNU fileutils package, but has been + * considerably mangled for use here + * + * results are returned in *dfree and *dsize, in 512 byte units +*/ +_PUBLIC_ int sys_fsusage(const char *path, uint64_t *dfree, uint64_t *dsize); + +/* The following definitions come from lib/util/ms_fnmatch.c */ + + +/** + * @file + * @brief MS-style Filename matching + */ +int ms_fnmatch(const char *pattern, const char *string, enum protocol_types protocol); + +/** a generic fnmatch function - uses for non-CIFS pattern matching */ +int gen_fnmatch(const char *pattern, const char *string); + +/* The following definitions come from lib/util/mutex.c */ + + +/** + register a set of mutex/rwlock handlers. + Should only be called once in the execution of smbd. +*/ +_PUBLIC_ bool register_mutex_handlers(const char *name, struct mutex_ops *ops); + +/* The following definitions come from lib/util/idtree.c */ + + +/** + initialise a idr tree. The context return value must be passed to + all subsequent idr calls. To destroy the idr tree use talloc_free() + on this context + */ +_PUBLIC_ struct idr_context *idr_init(TALLOC_CTX *mem_ctx); + +/** + allocate the next available id, and assign 'ptr' into its slot. + you can retrieve later this pointer using idr_find() +*/ +_PUBLIC_ int idr_get_new(struct idr_context *idp, void *ptr, int limit); + +/** + allocate a new id, giving the first available value greater than or + equal to the given starting id +*/ +_PUBLIC_ int idr_get_new_above(struct idr_context *idp, void *ptr, int starting_id, int limit); + +/** + allocate a new id randomly in the given range +*/ +_PUBLIC_ int idr_get_new_random(struct idr_context *idp, void *ptr, int limit); + +/** + find a pointer value previously set with idr_get_new given an id +*/ +_PUBLIC_ void *idr_find(struct idr_context *idp, int id); + +/** + remove an id from the idr tree +*/ +_PUBLIC_ int idr_remove(struct idr_context *idp, int id); + +/* The following definitions come from lib/util/module.c */ + + +/** + * Obtain the init function from a shared library file + */ +_PUBLIC_ init_module_fn load_module(TALLOC_CTX *mem_ctx, const char *path); + +/** + * Obtain list of init functions from the modules in the specified + * directory + */ +_PUBLIC_ init_module_fn *load_modules(TALLOC_CTX *mem_ctx, const char *path); + +/** + * Run the specified init functions. + * + * @return true if all functions ran successfully, false otherwise + */ +_PUBLIC_ bool run_init_functions(NTSTATUS (**fns) (void)); + +/* The following definitions come from lib/util/become_daemon.c */ + + +/** + Become a daemon, discarding the controlling terminal. +**/ +_PUBLIC_ void become_daemon(bool Fork); + #endif /* _SAMBA_UTIL_H_ */ -- cgit From 82037a75eae9deaf6ec80b5ecc3bb89aab6e6dd8 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 30 Aug 2007 23:15:12 +0000 Subject: r24814: Fix headers, trim core.h even more. (This used to be commit 9647f860bdd5c0a74583e886182bd041a45e7655) --- source4/lib/util/util.h | 45 +++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 0c784d1c97..8259e08512 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -254,6 +254,14 @@ void CatchChildLeaveStatus(void); /* The following definitions come from lib/util/system.c */ +/* + we use struct ipv4_addr to avoid having to include all the + system networking headers everywhere +*/ +struct ipv4_addr { + uint32_t addr; +}; + /************************************************************************** A wrapper for gethostbyname() that tries avoids looking up hostnames in the root domain, which can cause dial-on-demand links to come up for no @@ -769,6 +777,21 @@ _PUBLIC_ int sys_fsusage(const char *path, uint64_t *dfree, uint64_t *dsize); * @file * @brief MS-style Filename matching */ + +/* protocol types. It assumes that higher protocols include lower protocols + as subsets. FIXME: Move to one of the smb-specific headers */ +enum protocol_types { + PROTOCOL_NONE, + PROTOCOL_CORE, + PROTOCOL_COREPLUS, + PROTOCOL_LANMAN1, + PROTOCOL_LANMAN2, + PROTOCOL_NT1, + PROTOCOL_SMB2 +}; + + + int ms_fnmatch(const char *pattern, const char *string, enum protocol_types protocol); /** a generic fnmatch function - uses for non-CIFS pattern matching */ @@ -820,30 +843,8 @@ _PUBLIC_ void *idr_find(struct idr_context *idp, int id); */ _PUBLIC_ int idr_remove(struct idr_context *idp, int id); -/* The following definitions come from lib/util/module.c */ - - -/** - * Obtain the init function from a shared library file - */ -_PUBLIC_ init_module_fn load_module(TALLOC_CTX *mem_ctx, const char *path); - -/** - * Obtain list of init functions from the modules in the specified - * directory - */ -_PUBLIC_ init_module_fn *load_modules(TALLOC_CTX *mem_ctx, const char *path); - -/** - * Run the specified init functions. - * - * @return true if all functions ran successfully, false otherwise - */ -_PUBLIC_ bool run_init_functions(NTSTATUS (**fns) (void)); - /* The following definitions come from lib/util/become_daemon.c */ - /** Become a daemon, discarding the controlling terminal. **/ -- cgit From b50ef4caef44e3b45445728818f3bca09273249d Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Fri, 7 Sep 2007 16:54:39 +0000 Subject: r25007: Remove more uses of pstring, move ntlmauth-specific utility function to ntlm-auth.c (This used to be commit 6f224480b230ab7ccfc0417c13e7f4fc3f6f2a13) --- source4/lib/util/util.h | 5 ----- 1 file changed, 5 deletions(-) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 8259e08512..8d71ad1a64 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -562,11 +562,6 @@ _PUBLIC_ bool str_list_check(const char **list, const char *s); */ _PUBLIC_ bool str_list_check_ci(const char **list, const char *s); -/** - Check if a string is part of a list. -**/ -_PUBLIC_ bool in_list(const char *s, const char *list, bool casesensitive); - /* The following definitions come from lib/util/util_file.c */ -- cgit From e73df517c877add667cc36e889282d129eebe3b9 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Sep 2007 00:38:22 +0000 Subject: r25014: Use talloc for allocating values as well. (This used to be commit 43f0e2622ef61bd865fcf17191118c050ec8cfcb) --- source4/lib/util/util.h | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 8d71ad1a64..a2e0954517 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -370,16 +370,11 @@ _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); -/** - Free a string value. -**/ -_PUBLIC_ void string_free(char **s); - /** Set a string value, deallocating any existing space, and allocing the space for the string **/ -_PUBLIC_ bool string_set(char **dest, const char *src); +_PUBLIC_ bool string_set(TALLOC_CTX *mem_ctx, char **dest, const char *src); /** Substitute a string for a pattern in another string. Make sure there is -- cgit From 7e297ecfa4db2c7ab720a63c7764bc0e20f8058c Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 9 Sep 2007 19:34:30 +0000 Subject: r25047: Fix more warnings. (This used to be commit 69de86d2d2e49439760fbc61901eb87fb7fc5d55) --- source4/lib/util/util.h | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index a2e0954517..004c453a64 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -28,7 +28,6 @@ * @brief Helpful macros */ -struct substitute_context; struct smbsrv_tcon; extern const char *logfile; @@ -73,7 +72,7 @@ extern const char *panic_action; */ #define SMB_ASSERT(b) do { if (!(b)) { \ DEBUG(0,("PANIC: assert failed at %s(%d)\n", __FILE__, __LINE__)); \ - smb_panic("assert failed"); abort(); }} while (0) + smb_panic("assert failed"); }} while (0) #ifndef SAFE_FREE /* Oh no this is also defined in tdb.h */ /** @@ -370,12 +369,6 @@ _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); -/** - Set a string value, deallocating any existing space, and allocing the space - for the string -**/ -_PUBLIC_ bool string_set(TALLOC_CTX *mem_ctx, char **dest, const char *src); - /** Substitute a string for a pattern in another string. Make sure there is enough room! @@ -780,8 +773,6 @@ enum protocol_types { PROTOCOL_SMB2 }; - - int ms_fnmatch(const char *pattern, const char *string, enum protocol_types protocol); /** a generic fnmatch function - uses for non-CIFS pattern matching */ @@ -838,6 +829,6 @@ _PUBLIC_ int idr_remove(struct idr_context *idp, int id); /** Become a daemon, discarding the controlling terminal. **/ -_PUBLIC_ void become_daemon(bool Fork); +_PUBLIC_ void become_daemon(bool fork); #endif /* _SAMBA_UTIL_H_ */ -- cgit From 6a167124cdad339814ec6499aab30094e8cc43a6 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Fri, 21 Sep 2007 00:09:13 +0000 Subject: r25265: Move attribute definitions to lib/util. (This used to be commit 5bb9f041f47a1b7e03c3dc02e38546bc43bcc856) --- source4/lib/util/util.h | 1 + 1 file changed, 1 insertion(+) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 004c453a64..b37812602f 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -33,6 +33,7 @@ struct smbsrv_tcon; extern const char *logfile; extern const char *panic_action; +#include "util/attr.h" #include "util/time.h" #include "util/data_blob.h" #include "util/xfile.h" -- cgit From f415ba5bcfdbf22571526ce4e5e103d1eebab5c5 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Fri, 21 Sep 2007 02:00:50 +0000 Subject: r25267: Move PRINTF_ATTRIBUTE to lib/util as well. (This used to be commit 72b9d6c03661d72e83a5d60d43b75bb9bd5f5285) --- source4/lib/util/util.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index b37812602f..68bf326d87 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -165,7 +165,7 @@ _PUBLIC_ void do_debug_header(int level, const char *location, const char *func) @note You should never have to call this function directly. Call the DEBUG() macro instead. */ -_PUBLIC_ void do_debug(const char *format, ...) _PRINTF_ATTRIBUTE(1,2); +_PUBLIC_ void do_debug(const char *format, ...) PRINTF_ATTRIBUTE(1,2); /** reopen the log file (usually called because the log file name might have changed) @@ -313,9 +313,9 @@ _PUBLIC_ char *generate_random_str(TALLOC_CTX *mem_ctx, size_t len); /* The following definitions come from lib/util/dprintf.c */ -_PUBLIC_ int d_vfprintf(FILE *f, const char *format, va_list ap) _PRINTF_ATTRIBUTE(2,0); -_PUBLIC_ int d_fprintf(FILE *f, const char *format, ...) _PRINTF_ATTRIBUTE(2,3); -_PUBLIC_ int d_printf(const char *format, ...) _PRINTF_ATTRIBUTE(1,2); +_PUBLIC_ int d_vfprintf(FILE *f, const char *format, va_list ap) PRINTF_ATTRIBUTE(2,0); +_PUBLIC_ int d_fprintf(FILE *f, const char *format, ...) PRINTF_ATTRIBUTE(2,3); +_PUBLIC_ int d_printf(const char *format, ...) PRINTF_ATTRIBUTE(1,2); _PUBLIC_ void display_set_stderr(void); /* The following definitions come from lib/util/util_str.c */ @@ -604,8 +604,8 @@ _PUBLIC_ void file_lines_slashcont(char **lines); save a lump of data into a file. Mostly used for debugging */ _PUBLIC_ bool file_save(const char *fname, const void *packet, size_t length); -_PUBLIC_ int vfdprintf(int fd, const char *format, va_list ap) _PRINTF_ATTRIBUTE(2,0); -_PUBLIC_ int fdprintf(int fd, const char *format, ...) _PRINTF_ATTRIBUTE(2,3); +_PUBLIC_ int vfdprintf(int fd, const char *format, va_list ap) PRINTF_ATTRIBUTE(2,0); +_PUBLIC_ int fdprintf(int fd, const char *format, ...) PRINTF_ATTRIBUTE(2,3); _PUBLIC_ bool large_file_support(const char *path); /* The following definitions come from lib/util/util.c */ -- cgit From 6b1c7d36f88b0c7cfdf16628d33512d4bacced88 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 24 Sep 2007 16:43:16 +0000 Subject: r25307: add string_sub_talloc. (This used to be commit 96c1a24874289fdeddcac43d23c2d1214b9b6225) --- source4/lib/util/util.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 68bf326d87..1960aa6196 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -383,6 +383,10 @@ _PUBLIC_ char *hex_encode_talloc(TALLOC_CTX *mem_ctx, const unsigned char *buff_ **/ _PUBLIC_ void string_sub(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! -- cgit From b09047b78e981af8ade6a72d426bfcb0e742995b Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 13 Oct 2007 20:24:37 +0200 Subject: r25624: Remove ipv4_addr hack. Only causes 4 extra includes of system/network.h because we stripped down includes. (This used to be commit 262c1c23a61f1f4fae13e0a61179fe98b682cecf) --- source4/lib/util/util.h | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 1960aa6196..71880c1c1a 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -254,13 +254,7 @@ void CatchChildLeaveStatus(void); /* The following definitions come from lib/util/system.c */ -/* - we use struct ipv4_addr to avoid having to include all the - system networking headers everywhere -*/ -struct ipv4_addr { - uint32_t addr; -}; +struct in_addr; /************************************************************************** A wrapper for gethostbyname() that tries avoids looking up hostnames @@ -268,8 +262,8 @@ in the root domain, which can cause dial-on-demand links to come up for no apparent reason. ****************************************************************************/ _PUBLIC_ struct hostent *sys_gethostbyname(const char *name); -_PUBLIC_ const char *sys_inet_ntoa(struct ipv4_addr in); -_PUBLIC_ struct ipv4_addr sys_inet_makeaddr(int net, int host); +_PUBLIC_ const char *sys_inet_ntoa(struct in_addr in); +_PUBLIC_ struct in_addr sys_inet_makeaddr(int net, int host); /* The following definitions come from lib/util/genrand.c */ @@ -676,17 +670,17 @@ _PUBLIC_ uint32_t interpret_addr(const char *str); /** A convenient addition to interpret_addr(). **/ -_PUBLIC_ struct ipv4_addr interpret_addr2(const char *str); +_PUBLIC_ struct in_addr interpret_addr2(const char *str); /** Check if an IP is the 0.0.0.0. **/ -_PUBLIC_ bool is_zero_ip(struct ipv4_addr ip); +_PUBLIC_ bool is_zero_ip(struct in_addr ip); /** Are two IPs on the same subnet? **/ -_PUBLIC_ bool same_net(struct ipv4_addr ip1,struct ipv4_addr ip2,struct ipv4_addr mask); +_PUBLIC_ bool same_net(struct in_addr ip1,struct in_addr ip2,struct in_addr mask); /** Check if a process exists. Does this work on all unixes? -- cgit From f26222df4db2055d267789655a7113a49c178071 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 14 Oct 2007 12:52:32 +0200 Subject: r25626: Move some debug-specific prototypes to debug.h. (This used to be commit 84a202754004ec618aa2663a4614d80eb2c7ce60) --- source4/lib/util/util.h | 55 ------------------------------------------------- 1 file changed, 55 deletions(-) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 71880c1c1a..ca11bdfef9 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -146,61 +146,6 @@ extern const char *panic_action; #define PTR_DIFF(p1,p2) ((ptrdiff_t)(((const char *)(p1)) - (const char *)(p2))) #endif - -/** - * this global variable determines what messages are printed - */ -_PUBLIC_ void debug_schedule_reopen_logs(void); - -/** - the backend for debug messages. Note that the DEBUG() macro has already - ensured that the log level has been met before this is called -*/ -_PUBLIC_ void do_debug_header(int level, const char *location, const char *func); - -/** - the backend for debug messages. Note that the DEBUG() macro has already - ensured that the log level has been met before this is called - - @note You should never have to call this function directly. Call the DEBUG() - macro instead. -*/ -_PUBLIC_ void do_debug(const char *format, ...) PRINTF_ATTRIBUTE(1,2); - -/** - reopen the log file (usually called because the log file name might have changed) -*/ -_PUBLIC_ void reopen_logs(void); - -/** - control the name of the logfile and whether logging will be to stdout, stderr - or a file -*/ -_PUBLIC_ void setup_logging(const char *prog_name, enum debug_logtype new_logtype); - -/** - return a string constant containing n tabs - no more than 10 tabs are returned -*/ -_PUBLIC_ const char *do_debug_tab(int n); - -/** - log suspicious usage - print comments and backtrace -*/ -_PUBLIC_ void log_suspicious_usage(const char *from, const char *info); - -/** - print suspicious usage - print comments and backtrace -*/ -_PUBLIC_ void print_suspicious_usage(const char* from, const char* info); -_PUBLIC_ uint32_t get_task_id(void); -_PUBLIC_ void log_task_id(void); - -/** - register a set of debug handlers. -*/ -_PUBLIC_ void register_debug_handlers(const char *name, struct debug_ops *ops); - /* The following definitions come from lib/util/fault.c */ -- cgit From a449b30ca4ad029243b585c386f11b689f7dfeda Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 14 Oct 2007 13:28:01 +0200 Subject: r25628: Fix formatting, missing include. (This used to be commit aafd3ea03f52b08b6697f3778728659c790d03b4) --- source4/lib/util/util.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index ca11bdfef9..42dde70a44 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -23,6 +23,9 @@ #include "charset/charset.h" +/* for TALLOC_CTX */ +#include + /** * @file * @brief Helpful macros @@ -207,7 +210,6 @@ in the root domain, which can cause dial-on-demand links to come up for no apparent reason. ****************************************************************************/ _PUBLIC_ struct hostent *sys_gethostbyname(const char *name); -_PUBLIC_ const char *sys_inet_ntoa(struct in_addr in); _PUBLIC_ struct in_addr sys_inet_makeaddr(int net, int host); /* The following definitions come from lib/util/genrand.c */ -- cgit From 6554433fc227baab93398576db703c91db1541f2 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Tue, 16 Oct 2007 01:27:15 +0200 Subject: r25660: Add a new interface 'generate_secret_buffer()', to be used when we require top-quality entropy. We don't want to waste system enropy generating challenges (which simply need to be unpredictable, not secret) or when generating UUIDs. Rework generate_random_buffer() to use /dev/urandom less often, only to seed the existing RC4 based PRNG. (With an exception to ensure we don't waste this setup cost for very small entropy requests). Perhaps we should be using heimdal's code for this instead? This should drasticly reduce our entropy use, particularly in the build farm (automated Samba build on hosts without much other source of entropy). Andrew Bartlett (This used to be commit 6a5630d37191542022f02fae519227b7829ef620) --- source4/lib/util/util.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 42dde70a44..fc9cb1e57a 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -226,9 +226,17 @@ _PUBLIC_ void set_need_random_reseed(void); /** Interface to the (hopefully) good crypto random number generator. + Will use our internal PRNG if more than 40 bytes of random generation + has been requested, otherwise tries to read from /dev/random **/ _PUBLIC_ void generate_random_buffer(uint8_t *out, int len); +/** + Interface to the (hopefully) good crypto random number generator. + Will always use /dev/urandom if available. +**/ +_PUBLIC_ void generate_secret_buffer(uint8_t *out, int len); + /** generate a single random uint32_t **/ -- cgit From c4b9283bbb69e7754555ce7dc21c769ca205dd08 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Fri, 2 Nov 2007 11:33:53 +0100 Subject: r25799: Add dump_data_skip_zeros() which omits 16 zero bytes in a row (if not at the beginning or the end of a blob). Usefull when inspecting protocols that exchange huge mostly empty blobs. Guenther (This used to be commit c96047d022555678dabe08c0de94f0913bb4d047) --- source4/lib/util/util.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index fc9cb1e57a..f3adbb3333 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -655,6 +655,14 @@ _PUBLIC_ bool fcntl_lock(int fd, int op, off_t offset, off_t count, int type); */ _PUBLIC_ void dump_data(int level, const uint8_t *buf,int len); +/** + * Write dump of binary data to the log file. + * + * The data is only written if the log level is at least level. + * 16 zero bytes in a row are ommited + */ +_PUBLIC_ void dump_data_skip_zeros(int level, const uint8_t *buf, int len); + /** malloc that aborts with smb_panic on fail or zero size. **/ -- cgit From 2bf0cdd01cf399bf28125f9e2a0d419f4e94996c Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 13 Dec 2007 22:46:33 +0100 Subject: r26434: Remove display charset from iconv convenience context. (This used to be commit a76625994abf9906d54ae11f9c171f89063cf508) --- source4/lib/util/util.h | 1 + 1 file changed, 1 insertion(+) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index f3adbb3333..9e106052f2 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -262,6 +262,7 @@ _PUBLIC_ char *generate_random_str(TALLOC_CTX *mem_ctx, size_t len); /* The following definitions come from lib/util/dprintf.c */ +_PUBLIC_ void d_set_iconv(smb_iconv_t); _PUBLIC_ int d_vfprintf(FILE *f, const char *format, va_list ap) PRINTF_ATTRIBUTE(2,0); _PUBLIC_ int d_fprintf(FILE *f, const char *format, ...) PRINTF_ATTRIBUTE(2,3); _PUBLIC_ int d_printf(const char *format, ...) PRINTF_ATTRIBUTE(1,2); -- cgit From 39a817d310964f8e9a63cfb096b3ad24fa03bd5e Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Wed, 20 Feb 2008 04:33:43 +0100 Subject: Fix use of some modules (needed _PUBLIC_). (This used to be commit ce332130ea77159832da23bab760fa26921719e2) --- source4/lib/util/util.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 9e106052f2..550b60c625 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -21,6 +21,8 @@ #ifndef _SAMBA_UTIL_H_ #define _SAMBA_UTIL_H_ +#include "util/attr.h" + #include "charset/charset.h" /* for TALLOC_CTX */ @@ -36,7 +38,6 @@ struct smbsrv_tcon; extern const char *logfile; extern const char *panic_action; -#include "util/attr.h" #include "util/time.h" #include "util/data_blob.h" #include "util/xfile.h" -- cgit From 14a54761d98e2c4345e3e667d02279d2765617c1 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 1 Apr 2008 14:51:06 +0200 Subject: Move ini-like file parser to the utility library. (This used to be commit 2dc2bb800dab3f7dbdba01f5ca5076edd1a2b0f3) --- source4/lib/util/util.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 550b60c625..26700587ef 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -795,4 +795,12 @@ _PUBLIC_ int idr_remove(struct idr_context *idp, int id); **/ _PUBLIC_ void become_daemon(bool fork); +/** + * Load a ini-style file. + */ +bool pm_process( const char *fileName, + bool (*sfunc)(const char *, void *), + bool (*pfunc)(const char *, const char *, void *), + void *userdata); + #endif /* _SAMBA_UTIL_H_ */ -- cgit From 7fd96c5b04177a412d9ef12b2f4620b587fe8ed6 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 1 Apr 2008 15:17:18 +0200 Subject: Add userdata argument to reseed callback function. (This used to be commit d4272bc6bcfcd71fa93edb25bb33d6458e8b33cd) --- source4/lib/util/util.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 26700587ef..60c8437634 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -218,7 +218,7 @@ _PUBLIC_ struct in_addr sys_inet_makeaddr(int net, int host); /** Copy any user given reseed data. **/ -_PUBLIC_ void set_rand_reseed_callback(void (*fn)(int *)); +_PUBLIC_ void set_rand_reseed_callback(void (*fn)(void *, int *), void *); /** * Tell the random number generator it needs to reseed. -- cgit From 2d12b275f38fe2785c9ae389cc987269a232b5a8 Mon Sep 17 00:00:00 2001 From: Kai Blin Date: Fri, 21 Mar 2008 22:27:02 +0100 Subject: util: Add talloc_get_type_abort() call. (This used to be commit 38413ed4b6957e5f72e78a04f479c6a5d8b69ef5) --- source4/lib/util/util.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 60c8437634..3bf6b98d2f 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -803,4 +803,11 @@ bool pm_process( const char *fileName, bool (*pfunc)(const char *, const char *, void *), void *userdata); +/** + * Add-on to talloc_get_type + */ +_PUBLIC_ void *talloc_check_name_abort(const void *ptr, const char *name); +#define talloc_get_type_abort(ptr, type) \ + (type *)talloc_check_name_abort(ptr, #type) + #endif /* _SAMBA_UTIL_H_ */ -- cgit From 107ab090e23dfc517bc74bb553315cd3528e1f7d Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 17 Apr 2008 14:47:07 +0200 Subject: use uintptr_t instead of intptr_t where appropriate (This used to be commit d62f2bcc85c13605c133db250e0a86d2d6ccc481) --- source4/lib/util/util.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/lib/util/util.h') diff --git a/source4/lib/util/util.h b/source4/lib/util/util.h index 3bf6b98d2f..ffe83c14b2 100644 --- a/source4/lib/util/util.h +++ b/source4/lib/util/util.h @@ -64,7 +64,7 @@ extern const char *panic_action; makes the return type safe. */ #ifndef discard_const -#define discard_const(ptr) ((void *)((intptr_t)(ptr))) +#define discard_const(ptr) ((void *)((uintptr_t)(ptr))) #endif /** Type-safe version of discard_const */ -- cgit