mirror of
https://github.com/samba-team/samba.git
synced 2025-02-02 09:47:23 +03:00
r13851: More doc improvements.
This commit is contained in:
parent
085ba80cc8
commit
936d26ae64
@ -625,7 +625,7 @@ void auth_session_info_debug(int dbg_lev,
|
||||
const struct auth_session_info *session_info)
|
||||
{
|
||||
if (!session_info) {
|
||||
DEBUGC(dbg_class, dbg_lev, ("Session Info: (NULL)\n"));
|
||||
DEBUG(dbg_lev, ("Session Info: (NULL)\n"));
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -103,9 +103,9 @@ static BOOL set_inherited_process_capability( uint32_t cap_flag, BOOL enable )
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
/**
|
||||
Gain the oplock capability from the kernel if possible.
|
||||
****************************************************************************/
|
||||
**/
|
||||
|
||||
_PUBLIC_ void oplock_set_capability(BOOL this_process, BOOL inherit)
|
||||
{
|
||||
|
@ -178,6 +178,10 @@ _PUBLIC_ DATA_BLOB data_blob_string_const(const char *str)
|
||||
return blob;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new data blob from const data
|
||||
*/
|
||||
|
||||
_PUBLIC_ DATA_BLOB data_blob_const(const void *p, size_t length)
|
||||
{
|
||||
DATA_BLOB blob;
|
||||
|
@ -29,10 +29,11 @@
|
||||
* @brief Debug logging
|
||||
**/
|
||||
|
||||
/* this global variable determines what messages are printed */
|
||||
/**
|
||||
* this global variable determines what messages are printed
|
||||
*/
|
||||
_PUBLIC_ int DEBUGLEVEL;
|
||||
|
||||
|
||||
/* the registered mutex handlers */
|
||||
static struct {
|
||||
const char *name;
|
||||
@ -64,7 +65,7 @@ static void log_timestring(int level, const char *location, const char *func)
|
||||
free(s);
|
||||
}
|
||||
|
||||
/*
|
||||
/**
|
||||
the backend for debug messages. Note that the DEBUG() macro has already
|
||||
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();
|
||||
}
|
||||
|
||||
/*
|
||||
/**
|
||||
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)
|
||||
{
|
||||
|
@ -18,6 +18,11 @@
|
||||
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. */
|
||||
|
||||
#ifdef HAVE_FUNCTION_MACRO
|
||||
@ -54,10 +59,21 @@ extern int DEBUGLEVEL;
|
||||
do_debug body; \
|
||||
} \
|
||||
} while (0)
|
||||
/**
|
||||
* Write to the debug log.
|
||||
*/
|
||||
#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 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)
|
||||
|
||||
/** Possible destinations for the debug log */
|
||||
enum debug_logtype {DEBUG_STDOUT = 0, DEBUG_FILE = 1, DEBUG_STDERR = 2};
|
||||
|
@ -46,6 +46,9 @@ _PUBLIC_ void set_rand_reseed_callback(void (*fn)(int *))
|
||||
set_need_random_reseed();
|
||||
}
|
||||
|
||||
/**
|
||||
* Tell the random number generator it needs to reseed.
|
||||
*/
|
||||
_PUBLIC_ void set_need_random_reseed(void)
|
||||
{
|
||||
done_reseed = False;
|
||||
@ -299,6 +302,13 @@ _PUBLIC_ char *generate_random_str_list(TALLOC_CTX *mem_ctx, size_t len, const c
|
||||
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)
|
||||
{
|
||||
char *retstr;
|
||||
|
@ -21,6 +21,11 @@
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @brief Mutex operations
|
||||
*/
|
||||
|
||||
struct mutex_ops;
|
||||
|
||||
/* To add a new read/write lock, add it to enum rwlock_id
|
||||
|
@ -59,6 +59,12 @@ static int privileges_destructor(void *ptr)
|
||||
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)
|
||||
{
|
||||
struct saved_state *s;
|
||||
|
@ -93,6 +93,12 @@ _PUBLIC_ BOOL directory_exist(const char *dname)
|
||||
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,
|
||||
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]:'.'));
|
||||
}
|
||||
|
||||
/**
|
||||
* 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)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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)
|
||||
{
|
||||
#ifdef DEBUG_PASSWORD
|
||||
|
@ -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_ */
|
||||
|
@ -436,6 +436,9 @@ _PUBLIC_ size_t strhex_to_str(char *p, size_t len, const char *strhex)
|
||||
return num_chars;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse a hex string and return a data blob.
|
||||
*/
|
||||
_PUBLIC_ DATA_BLOB strhex_to_data_blob(const char *strhex)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* Multibyte-character version of strrchr
|
||||
*/
|
||||
_PUBLIC_ char *strrchr_m(const char *s, char c)
|
||||
{
|
||||
char *ret = NULL;
|
||||
@ -665,7 +671,7 @@ _PUBLIC_ char *strrchr_m(const char *s, char c)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
/**
|
||||
return True if any (multi-byte) character is lower case
|
||||
*/
|
||||
_PUBLIC_ BOOL strhaslower(const char *string)
|
||||
@ -688,7 +694,7 @@ _PUBLIC_ BOOL strhaslower(const char *string)
|
||||
return False;
|
||||
}
|
||||
|
||||
/*
|
||||
/**
|
||||
return True if any (multi-byte) character is upper case
|
||||
*/
|
||||
_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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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)
|
||||
{
|
||||
@ -1137,6 +1149,13 @@ _PUBLIC_ BOOL set_boolean(const char *boolean_string, BOOL *boolean)
|
||||
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)
|
||||
{
|
||||
char * end = NULL;
|
||||
@ -1192,6 +1211,13 @@ _PUBLIC_ BOOL conv_str_size(const char * str, uint64_t * val)
|
||||
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)
|
||||
{
|
||||
char * end = NULL;
|
||||
|
@ -51,7 +51,7 @@ XFILE *x_stderr = &_x_stderr;
|
||||
#define X_FLAG_ERROR 2
|
||||
#define X_FLAG_EINVAL 3
|
||||
|
||||
/* simulate setvbuf() */
|
||||
/** simulate setvbuf() */
|
||||
int x_setvbuf(XFILE *f, char *buf, int mode, size_t size)
|
||||
{
|
||||
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
|
||||
get them magically added
|
||||
*/
|
||||
@ -126,7 +126,7 @@ XFILE *x_fopen(const char *fname, int flags, mode_t mode)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* simulate fclose() */
|
||||
/** simulate fclose() */
|
||||
int x_fclose(XFILE *f)
|
||||
{
|
||||
int ret;
|
||||
@ -150,7 +150,7 @@ int x_fclose(XFILE *f)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* simulate fwrite() */
|
||||
/** simulate fwrite() */
|
||||
size_t x_fwrite(const void *p, size_t size, size_t nmemb, XFILE *f)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
/* thank goodness for asprintf() */
|
||||
/** thank goodness for asprintf() */
|
||||
int x_vfprintf(XFILE *f, const char *format, va_list ap)
|
||||
{
|
||||
char *p;
|
||||
@ -228,7 +228,7 @@ int x_fileno(XFILE *f)
|
||||
return f->fd;
|
||||
}
|
||||
|
||||
/* simulate fflush() */
|
||||
/** simulate fflush() */
|
||||
int x_fflush(XFILE *f)
|
||||
{
|
||||
int ret;
|
||||
@ -255,33 +255,33 @@ int x_fflush(XFILE *f)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* simulate setbuffer() */
|
||||
/** simulate setbuffer() */
|
||||
void x_setbuffer(XFILE *f, char *buf, size_t size)
|
||||
{
|
||||
x_setvbuf(f, buf, buf?X_IOFBF:X_IONBF, size);
|
||||
}
|
||||
|
||||
/* simulate setbuf() */
|
||||
/** simulate setbuf() */
|
||||
void x_setbuf(XFILE *f, char *buf)
|
||||
{
|
||||
x_setvbuf(f, buf, buf?X_IOFBF:X_IONBF, XBUFSIZE);
|
||||
}
|
||||
|
||||
/* simulate setlinebuf() */
|
||||
/** simulate setlinebuf() */
|
||||
void x_setlinebuf(XFILE *f)
|
||||
{
|
||||
x_setvbuf(f, NULL, X_IOLBF, 0);
|
||||
}
|
||||
|
||||
|
||||
/* simulate feof() */
|
||||
/** simulate feof() */
|
||||
int x_feof(XFILE *f)
|
||||
{
|
||||
if (f->flags & X_FLAG_EOF) return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* simulate ferror() */
|
||||
/** simulate ferror() */
|
||||
int x_ferror(XFILE *f)
|
||||
{
|
||||
if (f->flags & X_FLAG_ERROR) return 1;
|
||||
@ -303,7 +303,7 @@ static void x_fillbuf(XFILE *f)
|
||||
f->next = f->buf;
|
||||
}
|
||||
|
||||
/* simulate fgetc() */
|
||||
/** simulate fgetc() */
|
||||
int x_fgetc(XFILE *f)
|
||||
{
|
||||
int ret;
|
||||
@ -323,7 +323,7 @@ int x_fgetc(XFILE *f)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* simulate fread */
|
||||
/** simulate fread */
|
||||
size_t x_fread(void *p, size_t size, size_t nmemb, XFILE *f)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
/* simulate fgets() */
|
||||
/** simulate fgets() */
|
||||
char *x_fgets(char *s, int size, XFILE *stream)
|
||||
{
|
||||
char *s0 = s;
|
||||
@ -355,7 +355,8 @@ char *x_fgets(char *s, int size, XFILE *stream)
|
||||
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 */
|
||||
off_t x_tseek(XFILE *f, off_t offset, int whence)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user