1
0
mirror of https://github.com/samba-team/samba.git synced 2025-12-14 20:23:54 +03:00

r13851: More doc improvements.

(This used to be commit 936d26ae64)
This commit is contained in:
Jelmer Vernooij
2006-03-06 00:24:51 +00:00
committed by Gerald (Jerry) Carter
parent 77ffddec19
commit c287cc247d
12 changed files with 135 additions and 26 deletions

View File

@@ -625,7 +625,7 @@ void auth_session_info_debug(int dbg_lev,
const struct auth_session_info *session_info) const struct auth_session_info *session_info)
{ {
if (!session_info) { if (!session_info) {
DEBUGC(dbg_class, dbg_lev, ("Session Info: (NULL)\n")); DEBUG(dbg_lev, ("Session Info: (NULL)\n"));
return; return;
} }

View File

@@ -103,9 +103,9 @@ static BOOL set_inherited_process_capability( uint32_t cap_flag, BOOL enable )
} }
#endif #endif
/**************************************************************************** /**
Gain the oplock capability from the kernel if possible. Gain the oplock capability from the kernel if possible.
****************************************************************************/ **/
_PUBLIC_ void oplock_set_capability(BOOL this_process, BOOL inherit) _PUBLIC_ void oplock_set_capability(BOOL this_process, BOOL inherit)
{ {

View File

@@ -178,6 +178,10 @@ _PUBLIC_ DATA_BLOB data_blob_string_const(const char *str)
return blob; return blob;
} }
/**
* Create a new data blob from const data
*/
_PUBLIC_ DATA_BLOB data_blob_const(const void *p, size_t length) _PUBLIC_ DATA_BLOB data_blob_const(const void *p, size_t length)
{ {
DATA_BLOB blob; DATA_BLOB blob;

View File

@@ -29,10 +29,11 @@
* @brief Debug logging * @brief Debug logging
**/ **/
/* this global variable determines what messages are printed */ /**
* this global variable determines what messages are printed
*/
_PUBLIC_ int DEBUGLEVEL; _PUBLIC_ int DEBUGLEVEL;
/* the registered mutex handlers */ /* the registered mutex handlers */
static struct { static struct {
const char *name; const char *name;
@@ -64,7 +65,7 @@ static void log_timestring(int level, const char *location, const char *func)
free(s); free(s);
} }
/* /**
the backend for debug messages. Note that the DEBUG() macro has already the backend for debug messages. Note that the DEBUG() macro has already
ensured that the log level has been met before this is called ensured that the log level has been met before this is called
*/ */
@@ -74,9 +75,12 @@ _PUBLIC_ void do_debug_header(int level, const char *location, const char *func)
log_task_id(); log_task_id();
} }
/* /**
the backend for debug messages. Note that the DEBUG() macro has already the backend for debug messages. Note that the DEBUG() macro has already
ensured that the log level has been met before this is called 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) _PUBLIC_ void do_debug(const char *format, ...) _PRINTF_ATTRIBUTE(1,2)
{ {

View File

@@ -18,6 +18,11 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
/**
* @file
* @brief Debugging macros
*/
/* If we have these macros, we can add additional info to the header. */ /* If we have these macros, we can add additional info to the header. */
#ifdef HAVE_FUNCTION_MACRO #ifdef HAVE_FUNCTION_MACRO
@@ -54,10 +59,21 @@ extern int DEBUGLEVEL;
do_debug body; \ do_debug body; \
} \ } \
} while (0) } while (0)
/**
* Write to the debug log.
*/
#define DEBUG(level, body) _DEBUG(level, body, True) #define DEBUG(level, body) _DEBUG(level, body, True)
/**
* Add data to an existing debug log entry.
*/
#define DEBUGADD(level, body) _DEBUG(level, body, False) #define DEBUGADD(level, body) _DEBUG(level, body, False)
#define DEBUGC(class, level, body) DEBUG(level, body)
#define DEBUGADDC(class, level, body) DEBUGADD(level, body) /**
* Obtain indentation string for the debug log.
*
* Level specified by n.
*/
#define DEBUGTAB(n) do_debug_tab(n) #define DEBUGTAB(n) do_debug_tab(n)
/** Possible destinations for the debug log */
enum debug_logtype {DEBUG_STDOUT = 0, DEBUG_FILE = 1, DEBUG_STDERR = 2}; enum debug_logtype {DEBUG_STDOUT = 0, DEBUG_FILE = 1, DEBUG_STDERR = 2};

View File

@@ -46,6 +46,9 @@ _PUBLIC_ void set_rand_reseed_callback(void (*fn)(int *))
set_need_random_reseed(); set_need_random_reseed();
} }
/**
* Tell the random number generator it needs to reseed.
*/
_PUBLIC_ void set_need_random_reseed(void) _PUBLIC_ void set_need_random_reseed(void)
{ {
done_reseed = False; done_reseed = False;
@@ -299,6 +302,13 @@ _PUBLIC_ char *generate_random_str_list(TALLOC_CTX *mem_ctx, size_t len, const c
return retstr; return retstr;
} }
/**
* 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) _PUBLIC_ char *generate_random_str(TALLOC_CTX *mem_ctx, size_t len)
{ {
char *retstr; char *retstr;

View File

@@ -21,6 +21,11 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
/**
* @file
* @brief Mutex operations
*/
struct mutex_ops; struct mutex_ops;
/* To add a new read/write lock, add it to enum rwlock_id /* To add a new read/write lock, add it to enum rwlock_id

View File

@@ -59,6 +59,12 @@ static int privileges_destructor(void *ptr)
return 0; return 0;
} }
/**
* Obtain root privileges for the current process.
*
* The privileges can be dropped by talloc_free()-ing the
* token returned by this function
*/
void *root_privileges(void) void *root_privileges(void)
{ {
struct saved_state *s; struct saved_state *s;

View File

@@ -93,6 +93,12 @@ _PUBLIC_ BOOL directory_exist(const char *dname)
return ret; return ret;
} }
/**
* 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, _PUBLIC_ BOOL directory_create_or_exist(const char *dname, uid_t uid,
mode_t dir_perms) mode_t dir_perms)
{ {
@@ -486,6 +492,11 @@ static void print_asc(int level, const uint8_t *buf,int len)
DEBUGADD(level,("%c", isprint(buf[i])?buf[i]:'.')); DEBUGADD(level,("%c", isprint(buf[i])?buf[i]:'.'));
} }
/**
* 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) _PUBLIC_ void dump_data(int level, const uint8_t *buf,int len)
{ {
int i=0; int i=0;
@@ -688,6 +699,12 @@ static char *modules_path(TALLOC_CTX* mem_ctx, const char *name)
return talloc_asprintf(mem_ctx, "%s/%s", dyn_MODULESDIR, name); return talloc_asprintf(mem_ctx, "%s/%s", dyn_MODULESDIR, name);
} }
/**
* Load the initialization functions from DSO files for a specific subsystem.
*
* Will return an array of function pointers to initialization functions
*/
_PUBLIC_ init_module_fn *load_samba_modules(TALLOC_CTX *mem_ctx, const char *subsystem) _PUBLIC_ init_module_fn *load_samba_modules(TALLOC_CTX *mem_ctx, const char *subsystem)
{ {
char *path = modules_path(mem_ctx, subsystem); char *path = modules_path(mem_ctx, subsystem);
@@ -700,6 +717,12 @@ _PUBLIC_ init_module_fn *load_samba_modules(TALLOC_CTX *mem_ctx, const char *sub
return ret; return ret;
} }
/**
* 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) _PUBLIC_ void dump_data_pw(const char *msg, const uint8_t * data, size_t len)
{ {
#ifdef DEBUG_PASSWORD #ifdef DEBUG_PASSWORD

View File

@@ -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) #define SAFE_FREE(x) do { if ((x) != NULL) {free(discard_const_p(void *, (x))); (x)=NULL;} } while(0)
#endif #endif
/**
* Type-safe version of malloc. Allocated one copy of the
* specified data type.
*/
#define malloc_p(type) (type *)malloc(sizeof(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) #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) #define realloc_p(p, type, count) (type *)realloc_array(p, sizeof(type), count)
#if defined(VALGRIND) #if defined(VALGRIND)
@@ -127,6 +139,8 @@ struct substitute_context;
makes the return type safe. makes the return type safe.
*/ */
#define discard_const(ptr) ((void *)((intptr_t)(ptr))) #define discard_const(ptr) ((void *)((intptr_t)(ptr)))
/** Type-safe version of discard_const */
#define discard_const_p(type, ptr) ((type *)discard_const(ptr)) #define discard_const_p(type, ptr) ((type *)discard_const(ptr))
#endif /* _SAMBA_UTIL_H_ */ #endif /* _SAMBA_UTIL_H_ */

View File

@@ -436,6 +436,9 @@ _PUBLIC_ size_t strhex_to_str(char *p, size_t len, const char *strhex)
return num_chars; return num_chars;
} }
/**
* Parse a hex string and return a data blob.
*/
_PUBLIC_ DATA_BLOB strhex_to_data_blob(const char *strhex) _PUBLIC_ DATA_BLOB strhex_to_data_blob(const char *strhex)
{ {
DATA_BLOB ret_blob = data_blob(NULL, strlen(strhex)/2+1); DATA_BLOB ret_blob = data_blob(NULL, strlen(strhex)/2+1);
@@ -643,6 +646,9 @@ _PUBLIC_ char *strchr_m(const char *s, char c)
return NULL; return NULL;
} }
/**
* Multibyte-character version of strrchr
*/
_PUBLIC_ char *strrchr_m(const char *s, char c) _PUBLIC_ char *strrchr_m(const char *s, char c)
{ {
char *ret = NULL; char *ret = NULL;
@@ -665,7 +671,7 @@ _PUBLIC_ char *strrchr_m(const char *s, char c)
return ret; return ret;
} }
/* /**
return True if any (multi-byte) character is lower case return True if any (multi-byte) character is lower case
*/ */
_PUBLIC_ BOOL strhaslower(const char *string) _PUBLIC_ BOOL strhaslower(const char *string)
@@ -688,7 +694,7 @@ _PUBLIC_ BOOL strhaslower(const char *string)
return False; return False;
} }
/* /**
return True if any (multi-byte) character is upper case return True if any (multi-byte) character is upper case
*/ */
_PUBLIC_ BOOL strhasupper(const char *string) _PUBLIC_ BOOL strhasupper(const char *string)
@@ -1016,6 +1022,12 @@ _PUBLIC_ const char *str_format_nbt_domain(TALLOC_CTX *mem_ctx, const char *s)
return ret; return ret;
} }
/**
* 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, _PUBLIC_ BOOL add_string_to_array(TALLOC_CTX *mem_ctx,
const char *str, const char ***strings, int *num) const char *str, const char ***strings, int *num)
{ {
@@ -1137,6 +1149,13 @@ _PUBLIC_ BOOL set_boolean(const char *boolean_string, BOOL *boolean)
return False; return False;
} }
/**
* 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) _PUBLIC_ BOOL conv_str_bool(const char * str, BOOL * val)
{ {
char * end = NULL; char * end = NULL;
@@ -1192,6 +1211,13 @@ _PUBLIC_ BOOL conv_str_size(const char * str, uint64_t * val)
return True; return True;
} }
/**
* 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) _PUBLIC_ BOOL conv_str_u64(const char * str, uint64_t * val)
{ {
char * end = NULL; char * end = NULL;

View File

@@ -51,7 +51,7 @@ XFILE *x_stderr = &_x_stderr;
#define X_FLAG_ERROR 2 #define X_FLAG_ERROR 2
#define X_FLAG_EINVAL 3 #define X_FLAG_EINVAL 3
/* simulate setvbuf() */ /** simulate setvbuf() */
int x_setvbuf(XFILE *f, char *buf, int mode, size_t size) int x_setvbuf(XFILE *f, char *buf, int mode, size_t size)
{ {
x_fflush(f); x_fflush(f);
@@ -93,7 +93,7 @@ static int x_allocate_buffer(XFILE *f)
} }
/* this looks more like open() than fopen(), but that is quite deliberate. /** this looks more like open() than fopen(), but that is quite deliberate.
I want programmers to *think* about O_EXCL, O_CREAT etc not just I want programmers to *think* about O_EXCL, O_CREAT etc not just
get them magically added get them magically added
*/ */
@@ -126,7 +126,7 @@ XFILE *x_fopen(const char *fname, int flags, mode_t mode)
return ret; return ret;
} }
/* simulate fclose() */ /** simulate fclose() */
int x_fclose(XFILE *f) int x_fclose(XFILE *f)
{ {
int ret; int ret;
@@ -150,7 +150,7 @@ int x_fclose(XFILE *f)
return ret; return ret;
} }
/* simulate fwrite() */ /** simulate fwrite() */
size_t x_fwrite(const void *p, size_t size, size_t nmemb, XFILE *f) size_t x_fwrite(const void *p, size_t size, size_t nmemb, XFILE *f)
{ {
ssize_t ret; ssize_t ret;
@@ -195,7 +195,7 @@ size_t x_fwrite(const void *p, size_t size, size_t nmemb, XFILE *f)
return total/size; return total/size;
} }
/* thank goodness for asprintf() */ /** thank goodness for asprintf() */
int x_vfprintf(XFILE *f, const char *format, va_list ap) int x_vfprintf(XFILE *f, const char *format, va_list ap)
{ {
char *p; char *p;
@@ -228,7 +228,7 @@ int x_fileno(XFILE *f)
return f->fd; return f->fd;
} }
/* simulate fflush() */ /** simulate fflush() */
int x_fflush(XFILE *f) int x_fflush(XFILE *f)
{ {
int ret; int ret;
@@ -255,33 +255,33 @@ int x_fflush(XFILE *f)
return 0; return 0;
} }
/* simulate setbuffer() */ /** simulate setbuffer() */
void x_setbuffer(XFILE *f, char *buf, size_t size) void x_setbuffer(XFILE *f, char *buf, size_t size)
{ {
x_setvbuf(f, buf, buf?X_IOFBF:X_IONBF, size); x_setvbuf(f, buf, buf?X_IOFBF:X_IONBF, size);
} }
/* simulate setbuf() */ /** simulate setbuf() */
void x_setbuf(XFILE *f, char *buf) void x_setbuf(XFILE *f, char *buf)
{ {
x_setvbuf(f, buf, buf?X_IOFBF:X_IONBF, XBUFSIZE); x_setvbuf(f, buf, buf?X_IOFBF:X_IONBF, XBUFSIZE);
} }
/* simulate setlinebuf() */ /** simulate setlinebuf() */
void x_setlinebuf(XFILE *f) void x_setlinebuf(XFILE *f)
{ {
x_setvbuf(f, NULL, X_IOLBF, 0); x_setvbuf(f, NULL, X_IOLBF, 0);
} }
/* simulate feof() */ /** simulate feof() */
int x_feof(XFILE *f) int x_feof(XFILE *f)
{ {
if (f->flags & X_FLAG_EOF) return 1; if (f->flags & X_FLAG_EOF) return 1;
return 0; return 0;
} }
/* simulate ferror() */ /** simulate ferror() */
int x_ferror(XFILE *f) int x_ferror(XFILE *f)
{ {
if (f->flags & X_FLAG_ERROR) return 1; if (f->flags & X_FLAG_ERROR) return 1;
@@ -303,7 +303,7 @@ static void x_fillbuf(XFILE *f)
f->next = f->buf; f->next = f->buf;
} }
/* simulate fgetc() */ /** simulate fgetc() */
int x_fgetc(XFILE *f) int x_fgetc(XFILE *f)
{ {
int ret; int ret;
@@ -323,7 +323,7 @@ int x_fgetc(XFILE *f)
return ret; return ret;
} }
/* simulate fread */ /** simulate fread */
size_t x_fread(void *p, size_t size, size_t nmemb, XFILE *f) size_t x_fread(void *p, size_t size, size_t nmemb, XFILE *f)
{ {
size_t total = 0; size_t total = 0;
@@ -336,7 +336,7 @@ size_t x_fread(void *p, size_t size, size_t nmemb, XFILE *f)
return total/size; return total/size;
} }
/* simulate fgets() */ /** simulate fgets() */
char *x_fgets(char *s, int size, XFILE *stream) char *x_fgets(char *s, int size, XFILE *stream)
{ {
char *s0 = s; char *s0 = s;
@@ -355,7 +355,8 @@ char *x_fgets(char *s, int size, XFILE *stream)
return s0; return s0;
} }
/* trivial seek, works only for SEEK_SET and SEEK_END if SEEK_CUR is /**
* trivial seek, works only for SEEK_SET and SEEK_END if SEEK_CUR is
* set then an error is returned */ * set then an error is returned */
off_t x_tseek(XFILE *f, off_t offset, int whence) off_t x_tseek(XFILE *f, off_t offset, int whence)
{ {