Nilorea Library
C utilities for networking, threading, graphics
Loading...
Searching...
No Matches
COMMONS: macros, headers, defines, timers, allocators,...

Macros

#define __n_assert(__ptr, __ret)
 macro to assert things
 
#define _nstr(__PTR)   ((__PTR && __PTR->data) ? (__PTR->data) : "NULL")
 N_STR or "NULL" string for logging purposes.
 
#define _nstrp(__PTR)   ((__PTR && __PTR->data) ? (__PTR->data) : NULL)
 N_STR or NULL pointer for testing purposes.
 
#define _str(__PTR)   ((__PTR) ? (__PTR) : "NULL")
 define true
 
#define _strp(__PTR)   ((__PTR) ? (__PTR) : NULL)
 String or NULL pointer for testing purposes.
 
#define _strw(__PTR)   ((__PTR) ? (__PTR) : " ")
 String or " " string for config purposes.
 
#define Alloca(__ptr, __size)
 Malloca Handler to get errors and set to 0.
 
#define BYTEORDER_BIG_ENDIAN   1
 Big endian macro value.
 
#define BYTEORDER_LITTLE_ENDIAN   0
 Little endian macro value.
 
#define CALL_RETRY(__retvar, __expression, __max_tries)
 TEMP_FAILURE gnu macro portable version.
 
#define checkerror()
 check for errors
 
#define CONCAT(a, b)   CONCAT_BUILDER(a, b)
 Concatenate two macro.
 
#define CONCAT_BUILDER(a, b)   a##b
 CONCAT macro helper.
 
#define DEFAULT   1000
 Default APP_STATUS Value.
 
#define endif
 close a ifwhatever block
 
#define equal_if(__a, __cond, __b)
 if( a , condition, b ) then a = b
 
#define FALL_THROUGH
 set windows if true
 
#define FORCE_INLINE   static inline __attribute__((always_inline))
 FORCE_INLINE portable macro.
 
#define Free(__ptr)
 Free Handler to get errors.
 
#define FreeNoLog(__ptr)
 Free Handler without log.
 
#define GET   4321
 Flag for GET something , passing as a function parameter.
 
#define get_error()    (___error__check_flag == TRUE)
 pop up errors if any
 
#define iffalse   if( FALSE ==
 error checker type if( toto == FALSE )

 
#define ifnull   if( !
 error checker type if( !toto )
 
#define iftrue   if( TRUE ==
 error checker type if( toto == FALSE )

 
#define ifzero   if( 0 ==
 error checker type if( 0 != toto )
 
#define init_error_check()    static int ___error__check_flag = FALSE;
 init error checking in a function
 
#define init_lock(__rwlock_mutex)
 Macro for initializing a rwlock.
 
#define Malloc(__ptr, __struct, __size)
 Malloc Handler to get errors and set to 0.
 
#define N_DAEMON_NO_CHDIR   64
 daemonize flag: do not call chdir("/")
 
#define N_DAEMON_NO_CLOSE   2
 daemonize flag: no descriptor close at all
 
#define N_DAEMON_NO_DOUBLE_FORK   8
 daemonize flag: do not double fork
 
#define N_DAEMON_NO_SETSID   16
 daemonize flag: do not call setsid
 
#define N_DAEMON_NO_SIGCHLD_HANDLER   256
 daemonize flag: do not use internal zombie SIGCHLD handler
 
#define N_DAEMON_NO_SIGCHLD_IGN   128
 daemonize flag: do not ignore SIGCHLD
 
#define N_DAEMON_NO_STD_REDIRECT   4
 daemonize flag: just do not redirect stdin/out/err to /dev/null
 
#define N_DAEMON_NO_UMASK   32
 daemonize flag: do not call umask( 0 )
 
#define next_even(__val)   (((__val) % 2 == 0) ? (__val) : ((__val) + 1))
 next even helper
 
#define next_odd(__val)   (((__val) % 2 == 0) ? ((__val) + 1) : (__val))
 next odd helper
 
#define PAUSED   1004
 Value of the state of an application who is paused.
 
#define randomize()
 Initialize the random sequence with time.
 
#define read_lock(__rwlock_mutex)
 Macro for acquiring a read lock on a rwlock mutex.
 
#define Realloc(__ptr, __struct, __size)
 Realloc Handler to get errors.
 
#define Reallocz(__ptr, __struct, __old_size, __size)
 Realloc + zero new memory zone Handler to get errors.
 
#define RUNNING   1001
 Value of the state of an application who is running.
 
#define rw_lock_destroy(__rwlock_mutex)
 Macro to destroy rwlock mutex.
 
#define RWLOCK_LOGLEVEL   LOG_NULL
 flag to tell the API to disable DEBUG log on locks
 
#define SET   1234
 Flag for SET something , passing as a function parameter.
 
#define STOPPED   1003
 Value of the state of an application who is stopped.
 
#define STOPWANTED   1002
 Value of the state of an application who want to stop his activity.
 
#define unlock(__rwlock_mutex)
 Macro for releasing read/write lock a rwlock mutex.
 
#define write_lock(__rwlock_mutex)
 Macro for acquiring a write lock on a rwlock mutex.
 

Functions

int file_exist (const char *filename)
 test file presence
 
int get_computer_name (char *computer_name, size_t len)
 get the computer name into the given buffer
 
char * get_prog_dir (void)
 get running program directory
 
char * get_prog_name (void)
 get running program name
 
void log_environment (int loglevel)
 log environment variables at the given log level
 
void n_abort (char const *format,...)
 htonl for 64 bits numbers
 
int n_daemonize (void)
 daemonize the current process
 
int n_daemonize_ex (int mode)
 daemonize the current process with the given mode flags
 
char * n_get_file_extension (char path[])
 get the file extension from a path
 
void N_HIDE_STR (char *buf,...)
 reconstruct hidden string from variadic char arguments
 
int n_popen (char *cmd, size_t read_buf_size, void **nstr_output, int *ret)
 shortcut for popen usage
 
void sigchld_handler (int sig)
 reap zombie processes
 
int sigchld_handler_installer ()
 install signal SIGCHLD handler
 
pid_t system_nb (const char *command, int *infp, int *outfp)
 non-blocking system call
 

Detailed Description

Macro Definition Documentation

◆ __n_assert

#define __n_assert (   __ptr,
  __ret 
)
Value:
if (!(__ptr)) { \
n_log(LOG_DEBUG, "if( !(%s) ) assert at line %d of %s", #__ptr, __LINE__, __FILE__); \
__ret; \
}
#define LOG_DEBUG
debug-level messages
Definition n_log.h:84

macro to assert things

Examples
ex_accept_pool_client.c, ex_accept_pool_server.c, ex_common.c, ex_file.c, ex_fluid_config.c, ex_kafka.c, ex_list.c, ex_network.h, ex_network_ssl.c, ex_network_ssl_hardened.c, ex_threads.c, ex_trees.c, and ex_zlib.c.

Definition at line 279 of file n_common.h.

◆ _nstr

#define _nstr (   __PTR)    ((__PTR && __PTR->data) ? (__PTR->data) : "NULL")

◆ _nstrp

#define _nstrp (   __PTR)    ((__PTR && __PTR->data) ? (__PTR->data) : NULL)

N_STR or NULL pointer for testing purposes.

Examples
ex_common.c, and ex_file.c.

Definition at line 201 of file n_common.h.

◆ _str

#define _str (   __PTR)    ((__PTR) ? (__PTR) : "NULL")

define true

define TRUE

define false

define FALSE

returned by N_STRLIST functions to tell the caller that the list is empty

String or "NULL" string for logging purposes

Examples
ex_common.c, ex_file.c, ex_fluid.c, ex_gui_dictionary.c, ex_hash.c, ex_kafka.c, ex_network.c, ex_network_ssl.c, and ex_network_ssl_hardened.c.

Definition at line 193 of file n_common.h.

◆ _strp

#define _strp (   __PTR)    ((__PTR) ? (__PTR) : NULL)

String or NULL pointer for testing purposes.

Definition at line 195 of file n_common.h.

◆ _strw

#define _strw (   __PTR)    ((__PTR) ? (__PTR) : " ")

String or " " string for config purposes.

Definition at line 197 of file n_common.h.

◆ Alloca

#define Alloca (   __ptr,
  __size 
)
Value:
{ \
int __n_errno = 0; \
errno = 0; \
__ptr = alloca(__size); \
__n_errno = errno; \
if (!__ptr) { \
n_log(LOG_ERR, "%s=alloca( %zu ) %s at line %d of %s", #__ptr, __size, (__n_errno == 0) ? "alloca error" : strerror(__n_errno), __LINE__, __FILE__); \
} else { \
memset(__ptr, 0, __size); \
} \
}
#define LOG_ERR
error conditions
Definition n_log.h:76

Malloca Handler to get errors and set to 0.

Examples
ex_common.c, ex_file.c, and ex_network_ssl.c.

Definition at line 216 of file n_common.h.

◆ BYTEORDER_BIG_ENDIAN

#define BYTEORDER_BIG_ENDIAN   1

Big endian macro value.

Definition at line 101 of file n_common.h.

◆ BYTEORDER_LITTLE_ENDIAN

#define BYTEORDER_LITTLE_ENDIAN   0

Little endian macro value.

Definition at line 99 of file n_common.h.

◆ CALL_RETRY

#define CALL_RETRY (   __retvar,
  __expression,
  __max_tries 
)
Value:
do { \
int __nb_retries = 0; \
do { \
__retvar = (__expression); \
__nb_retries++; \
} while (__retvar == -1 && errno == EINTR && __nb_retries < (__max_tries)); \
} while (0)

TEMP_FAILURE gnu macro portable version.

Definition at line 286 of file n_common.h.

◆ checkerror

#define checkerror ( )
Value:
if (___error__check_flag == TRUE) { \
n_log(LOG_ERR, "checkerror return false at line %d of %s", __LINE__, __FILE__); \
goto error; \
}

check for errors

Examples
ex_common.c, and ex_file.c.

Definition at line 318 of file n_common.h.

◆ CONCAT

#define CONCAT (   a,
 
)    CONCAT_BUILDER(a, b)

Concatenate two macro.

Definition at line 456 of file n_common.h.

◆ CONCAT_BUILDER

#define CONCAT_BUILDER (   a,
 
)    a##b

CONCAT macro helper.

Definition at line 454 of file n_common.h.

◆ DEFAULT

#define DEFAULT   1000

Default APP_STATUS Value.

Definition at line 427 of file n_common.h.

◆ endif

#define endif
Value:
){ \
___error__check_flag = TRUE; \
n_log(LOG_ERR, "First err was at line %d of %s", __LINE__, __FILE__); \
}

close a ifwhatever block

Examples
ex_common.c, and ex_file.c.

Definition at line 325 of file n_common.h.

◆ equal_if

#define equal_if (   __a,
  __cond,
  __b 
)
Value:
if ((__a)__cond(__b)) { \
__a = __b; \
}

if( a , condition, b ) then a = b

Definition at line 335 of file n_common.h.

◆ FALL_THROUGH

#define FALL_THROUGH
Value:
/* fall through */ \
((void)0)

set windows if true

fall through macro for switch cases, avoid warning at compilation

Examples
ex_kafka.c.

Definition at line 72 of file n_common.h.

◆ FORCE_INLINE

#define FORCE_INLINE   static inline __attribute__((always_inline))

FORCE_INLINE portable macro.

Examples
ex_common.c, and ex_file.c.

Definition at line 164 of file n_common.h.

◆ Free

#define Free (   __ptr)
Value:
if (__ptr) { \
free(__ptr); \
__ptr = NULL; \
} else { \
n_log(LOG_DEBUG, "Free( %s ) already done or NULL at line %d of %s", #__ptr, __LINE__, __FILE__); \
}

Free Handler to get errors.

Examples
ex_accept_pool_server.c, ex_common.c, ex_file.c, ex_fluid.c, ex_gui_network.c, ex_gui_syntaxview.c, ex_hash.c, ex_hex.c, ex_list.c, ex_network_ssl.c, ex_network_ssl_hardened.c, ex_nstr.c, ex_trees.c, and ex_zlib.c.

Definition at line 263 of file n_common.h.

◆ FreeNoLog

#define FreeNoLog (   __ptr)
Value:
if (__ptr) { \
free(__ptr); \
__ptr = NULL; \
}

Free Handler without log.

Examples
ex_accept_pool_client.c, ex_accept_pool_server.c, ex_clock_sync.c, ex_common.c, ex_file.c, ex_gui_bench.c, ex_gui_dictionary.c, ex_gui_network.c, ex_network.c, ex_network_reactor.c, ex_network_ssl.c, and ex_network_ssl_hardened.c.

Definition at line 272 of file n_common.h.

◆ GET

#define GET   4321

Flag for GET something , passing as a function parameter.

Definition at line 425 of file n_common.h.

◆ get_error

#define get_error ( )     (___error__check_flag == TRUE)

pop up errors if any

Examples
ex_common.c, and ex_file.c.

Definition at line 331 of file n_common.h.

◆ iffalse

#define iffalse   if( FALSE ==

error checker type if( toto == FALSE )

Examples
ex_common.c, and ex_file.c.

Definition at line 312 of file n_common.h.

◆ ifnull

#define ifnull   if( !

error checker type if( !toto )

Examples
ex_common.c, and ex_file.c.

Definition at line 306 of file n_common.h.

◆ iftrue

#define iftrue   if( TRUE ==

error checker type if( toto == FALSE )

Examples
ex_common.c, and ex_file.c.

Definition at line 315 of file n_common.h.

◆ ifzero

#define ifzero   if( 0 ==

error checker type if( 0 != toto )

Examples
ex_common.c, and ex_file.c.

Definition at line 309 of file n_common.h.

◆ init_error_check

#define init_error_check ( )     static int ___error__check_flag = FALSE;

init error checking in a function

Examples
ex_common.c, and ex_file.c.

Definition at line 302 of file n_common.h.

◆ init_lock

#define init_lock (   __rwlock_mutex)
Value:
({ \
pthread_rwlockattr_t __attr; \
pthread_rwlockattr_init(&__attr); \
int __ret = 0; \
do { \
n_log(RWLOCK_LOGLEVEL, "init_lock %s", #__rwlock_mutex); \
__rwlock_mutex = (pthread_rwlock_t)PTHREAD_RWLOCK_INITIALIZER; \
__ret = pthread_rwlock_init(&(__rwlock_mutex), &__attr); \
if (__ret != 0) { \
n_log(LOG_ERR, "Error %s while initializing %s at %s:%s:%d", strerror(__ret), #__rwlock_mutex, __FILE__, __func__, __LINE__); \
} \
pthread_rwlockattr_destroy(&__attr); \
} while (0); \
__ret; \
})
#define RWLOCK_LOGLEVEL
flag to tell the API to disable DEBUG log on locks
Definition n_common.h:346

Macro for initializing a rwlock.

Definition at line 350 of file n_common.h.

◆ Malloc

#define Malloc (   __ptr,
  __struct,
  __size 
)
Value:
{ \
int __n_errno = 0; \
errno = 0; \
__ptr = (__struct*)calloc(__size, sizeof(__struct)); \
__n_errno = errno; \
if (!__ptr) { \
n_log(LOG_ERR, "( %s *)calloc( %zu , sizeof( %s ) ) %s at line %d of %s", #__ptr, __size, #__struct, (__n_errno == 0) ? "malloc error" : strerror(__n_errno), __LINE__, __FILE__); \
} \
}

Malloc Handler to get errors and set to 0.

Examples
ex_accept_pool_server.c, ex_common.c, ex_file.c, ex_fluid.c, ex_gui_bench.c, ex_gui_dictionary.c, ex_hash.c, ex_kafka.c, ex_network_ssl.c, ex_network_ssl_hardened.c, and ex_zlib.c.

Definition at line 204 of file n_common.h.

◆ N_DAEMON_NO_CHDIR

#define N_DAEMON_NO_CHDIR   64

daemonize flag: do not call chdir("/")

Definition at line 521 of file n_common.h.

◆ N_DAEMON_NO_CLOSE

#define N_DAEMON_NO_CLOSE   2

daemonize flag: no descriptor close at all

Definition at line 511 of file n_common.h.

◆ N_DAEMON_NO_DOUBLE_FORK

#define N_DAEMON_NO_DOUBLE_FORK   8

daemonize flag: do not double fork

Definition at line 515 of file n_common.h.

◆ N_DAEMON_NO_SETSID

#define N_DAEMON_NO_SETSID   16

daemonize flag: do not call setsid

Definition at line 517 of file n_common.h.

◆ N_DAEMON_NO_SIGCHLD_HANDLER

#define N_DAEMON_NO_SIGCHLD_HANDLER   256

daemonize flag: do not use internal zombie SIGCHLD handler

Definition at line 525 of file n_common.h.

◆ N_DAEMON_NO_SIGCHLD_IGN

#define N_DAEMON_NO_SIGCHLD_IGN   128

daemonize flag: do not ignore SIGCHLD

Definition at line 523 of file n_common.h.

◆ N_DAEMON_NO_STD_REDIRECT

#define N_DAEMON_NO_STD_REDIRECT   4

daemonize flag: just do not redirect stdin/out/err to /dev/null

Definition at line 513 of file n_common.h.

◆ N_DAEMON_NO_UMASK

#define N_DAEMON_NO_UMASK   32

daemonize flag: do not call umask( 0 )

Definition at line 519 of file n_common.h.

◆ next_even

#define next_even (   __val)    (((__val) % 2 == 0) ? (__val) : ((__val) + 1))

next even helper

Examples
ex_common.c, and ex_file.c.

Definition at line 299 of file n_common.h.

◆ next_odd

#define next_odd (   __val)    (((__val) % 2 == 0) ? ((__val) + 1) : (__val))

next odd helper

Examples
ex_common.c, and ex_file.c.

Definition at line 296 of file n_common.h.

◆ PAUSED

#define PAUSED   1004

Value of the state of an application who is paused.

Definition at line 435 of file n_common.h.

◆ randomize

#define randomize ( )
Value:
{ \
srand((unsigned)time(NULL)); \
rand(); \
}

Initialize the random sequence with time.

Definition at line 438 of file n_common.h.

◆ read_lock

#define read_lock (   __rwlock_mutex)
Value:
({ \
int __ret = 0; \
do { \
n_log(RWLOCK_LOGLEVEL, "read lock %s", #__rwlock_mutex); \
__ret = pthread_rwlock_rdlock(&(__rwlock_mutex)); \
if (__ret != 0) { \
n_log(LOG_ERR, "Error %s while read locking %s at %s:%s:%d", strerror(__ret), #__rwlock_mutex, __FILE__, __func__, __LINE__); \
} \
} while (0); \
__ret; \
})

Macro for acquiring a read lock on a rwlock mutex.

Definition at line 368 of file n_common.h.

◆ Realloc

#define Realloc (   __ptr,
  __struct,
  __size 
)
Value:
({ \
int __n_errno = 0; \
errno = 0; \
void* __new_ptr = ((__size) && (sizeof(__struct)) && ((__size) > SIZE_MAX / sizeof(__struct))) ? NULL : (__struct*)realloc(__ptr, (__size) * sizeof(__struct)); \
__n_errno = errno; \
if (!__new_ptr) { \
n_log(LOG_ERR, "( %s *)realloc( %s * sizeof( %zu ) ) %s at line %d of %s", #__ptr, #__struct, __size, (__n_errno == 0) ? "realloc error" : strerror(__n_errno), __LINE__, __FILE__); \
} else { \
__ptr = __new_ptr; \
} \
(__new_ptr != NULL) ? TRUE : FALSE; \
})

Realloc Handler to get errors.

Returns TRUE on success, FALSE on failure. On failure the original pointer is preserved (not set to NULL).

Examples
ex_common.c, and ex_file.c.

Definition at line 231 of file n_common.h.

◆ Reallocz

#define Reallocz (   __ptr,
  __struct,
  __old_size,
  __size 
)
Value:
({ \
int __n_errno = 0; \
errno = 0; \
void* __new_ptr = ((__size) && (sizeof(__struct)) && ((__size) > SIZE_MAX / sizeof(__struct))) ? NULL : (__struct*)realloc(__ptr, __size); \
__n_errno = errno; \
if (!__new_ptr) { \
n_log(LOG_ERR, "( %s *)realloc( %s * sizeof( %zu ) ) %s at line %d of %s", #__ptr, #__struct, __size, (__n_errno == 0) ? "realloc error" : strerror(__n_errno), __LINE__, __FILE__); \
} else { \
__ptr = __new_ptr; \
if (__size > __old_size) memset(((char*)__ptr + __old_size), 0, __size - __old_size); \
} \
(__new_ptr != NULL) ? TRUE : FALSE; \
})

Realloc + zero new memory zone Handler to get errors.

Returns TRUE on success, FALSE on failure. On failure the original pointer is preserved (not set to NULL).

Examples
ex_common.c, and ex_file.c.

Definition at line 247 of file n_common.h.

◆ RUNNING

#define RUNNING   1001

Value of the state of an application who is running.

Definition at line 429 of file n_common.h.

◆ rw_lock_destroy

#define rw_lock_destroy (   __rwlock_mutex)
Value:
({ \
int __ret = 0; \
do { \
n_log(RWLOCK_LOGLEVEL, "destroy lock %s", #__rwlock_mutex); \
__ret = pthread_rwlock_destroy(&(__rwlock_mutex)); \
if (__ret != 0) { \
n_log(LOG_ERR, "Error %s while destroying %s at %s:%s:%d", strerror(__ret), #__rwlock_mutex, __FILE__, __func__, __LINE__); \
} \
} while (0); \
__ret; \
})

Macro to destroy rwlock mutex.

Definition at line 409 of file n_common.h.

◆ RWLOCK_LOGLEVEL

#define RWLOCK_LOGLEVEL   LOG_NULL

flag to tell the API to disable DEBUG log on locks

Definition at line 346 of file n_common.h.

◆ SET

#define SET   1234

Flag for SET something , passing as a function parameter.

Definition at line 423 of file n_common.h.

◆ STOPPED

#define STOPPED   1003

Value of the state of an application who is stopped.

Definition at line 433 of file n_common.h.

◆ STOPWANTED

#define STOPWANTED   1002

Value of the state of an application who want to stop his activity.

Definition at line 431 of file n_common.h.

◆ unlock

#define unlock (   __rwlock_mutex)
Value:
({ \
int __ret = 0; \
do { \
n_log(RWLOCK_LOGLEVEL, "unlock lock %s", #__rwlock_mutex); \
__ret = pthread_rwlock_unlock(&(__rwlock_mutex)); \
if (__ret != 0) { \
n_log(LOG_ERR, "Error %s while unlocking %s at %s:%s:%d", strerror(__ret), #__rwlock_mutex, __FILE__, __func__, __LINE__); \
} \
} while (0); \
__ret; \
})

Macro for releasing read/write lock a rwlock mutex.

Definition at line 396 of file n_common.h.

◆ write_lock

#define write_lock (   __rwlock_mutex)
Value:
({ \
int __ret = 0; \
do { \
n_log(RWLOCK_LOGLEVEL, "write lock %s", #__rwlock_mutex); \
__ret = pthread_rwlock_wrlock(&(__rwlock_mutex)); \
if (__ret != 0) { \
n_log(LOG_ERR, "Error %s while write locking %s at %s:%s:%d", strerror(__ret), #__rwlock_mutex, __FILE__, __func__, __LINE__); \
} \
} while (0); \
__ret; \
})

Macro for acquiring a write lock on a rwlock mutex.

Definition at line 382 of file n_common.h.

Function Documentation

◆ file_exist()

int file_exist ( const char *  filename)

test file presence

test file presence

Parameters
filenamePath/name of the file
Returns
TRUE or FALSE

Definition at line 100 of file n_common.c.

Referenced by main().

+ Here is the caller graph for this function:

◆ get_computer_name()

int get_computer_name ( char *  computer_name,
size_t  len 
)

get the computer name into the given buffer

get the computer name into the given buffer

Parameters
computer_nameallocated buffer to hold the computer name
lensize of computer_name variable
Returns
TRUE or FALSE

Definition at line 70 of file n_common.c.

References LOG_ERR, and n_log.

Referenced by main(), and n_kafka_load_config().

+ Here is the caller graph for this function:

◆ get_prog_dir()

char * get_prog_dir ( void  )

get running program directory

get running program directory

Returns
A copy of the current program running directory inside a string

Definition at line 113 of file n_common.c.

Referenced by main().

+ Here is the caller graph for this function:

◆ get_prog_name()

char * get_prog_name ( void  )

get running program name

get running program name

Returns
A copy of the current program name inside a string

Definition at line 145 of file n_common.c.

Referenced by main().

+ Here is the caller graph for this function:

◆ log_environment()

void log_environment ( int  loglevel)

log environment variables at the given log level

log environment variables at the given log level

Parameters
loglevelthe loglevel used to log the environment

Definition at line 232 of file n_common.c.

References n_log.

Referenced by main().

+ Here is the caller graph for this function:

◆ n_abort()

void n_abort ( char const *  format,
  ... 
)

htonl for 64 bits numbers

ntonl for 64 bits numbers

exit and print log to stderr

htonl for 64 bits numbers

Parameters
formatprintf style format and args

Definition at line 53 of file n_common.c.

Referenced by main(), and main().

+ Here is the caller graph for this function:

◆ n_daemonize()

int n_daemonize ( void  )

daemonize the current process

daemonize the current process

Returns
TRUE or FALSE

Definition at line 284 of file n_common.c.

References N_DAEMON_NO_SIGCHLD_HANDLER, N_DAEMON_NO_SIGCHLD_IGN, and n_daemonize_ex().

Referenced by main().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ n_daemonize_ex()

int n_daemonize_ex ( int  mode)

daemonize the current process with the given mode flags

daemonize the current process with the given mode flags

Parameters
modeflag made of a combination of N_DAEMON_NO_CLOSE, N_DAEMON_NO_STD_REDIRECT, N_DAEMON_NO_DOUBLE_FORK , N_DAEMON_NO_SETSID, N_DAEMON_NO_UMASK, N_DAEMON_NO_CHDIR, N_DAEMON_NO_SETSID, N_DAEMON_NO_SIGCHLD_IGN, N_DAEMON_NO_SIGCHLD_HANDLER or 0 for defaults
Returns
TRUE or FALSE

Definition at line 293 of file n_common.c.

References LOG_ERR, LOG_NOTICE, mode, N_DAEMON_NO_CHDIR, N_DAEMON_NO_CLOSE, N_DAEMON_NO_DOUBLE_FORK, N_DAEMON_NO_SETSID, N_DAEMON_NO_SIGCHLD_HANDLER, N_DAEMON_NO_SIGCHLD_IGN, N_DAEMON_NO_STD_REDIRECT, N_DAEMON_NO_UMASK, n_log, and sigchld_handler_installer().

Referenced by n_daemonize().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ n_get_file_extension()

char * n_get_file_extension ( char  path[])

get the file extension from a path

get the file extension from a path

Parameters
paththe path + filename
Returns
a pointer to the first extension character or NULL

Definition at line 480 of file n_common.c.

References __n_assert.

Referenced by main().

+ Here is the caller graph for this function:

◆ N_HIDE_STR()

void N_HIDE_STR ( char *  buf,
  ... 
)

reconstruct hidden string from variadic char arguments

reconstruct hidden string from variadic char arguments

Parameters
bufthe variable which will receive the string. Must be large enough to hold all arguments.
Warning
No bounds checking is performed. The caller must ensure buf is large enough.

Definition at line 459 of file n_common.c.

Referenced by main().

+ Here is the caller graph for this function:

◆ n_popen()

int n_popen ( char *  cmd,
size_t  read_buf_size,
void **  nstr_output,
int *  ret 
)

shortcut for popen usage

shortcut for popen usage

Parameters
cmdThe command to launch
read_buf_sizepopen read buf. Also serves as a minimum size for the dynamically allocated returned output if not already allocated
nstr_outputPointer to a valid N_STR or NULL (see read_buf_size)
retCommand output if any. Should be initialized to -1 and tested against to check if it's valid.
Returns
TRUE or FALSE

Definition at line 180 of file n_common.c.

References __n_assert, free_nstr, LOG_ERR, n_log, new_nstr(), and nstrprintf_cat.

Referenced by addr2line(), main(), and n_get_current_dir_hd_serial().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sigchld_handler()

void sigchld_handler ( int  sig)

reap zombie processes

reap zombie processes

Parameters
sigsignal type handle

Definition at line 253 of file n_common.c.

References LOG_DEBUG, and n_log.

Referenced by sigchld_handler_installer().

+ Here is the caller graph for this function:

◆ sigchld_handler_installer()

int sigchld_handler_installer ( )

install signal SIGCHLD handler

install signal SIGCHLD handler

Returns
TRUE or FALSE

Definition at line 267 of file n_common.c.

References LOG_ERR, n_log, and sigchld_handler().

Referenced by main(), and n_daemonize_ex().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ system_nb()

pid_t system_nb ( const char *  command,
int *  infp,
int *  outfp 
)

non-blocking system call

non-blocking system call

Parameters
commandto call
infpstdin file descriptor holder or NULL
outfpstdout file descriptor holder or NULL
Returns
The system command pid or -1

Definition at line 390 of file n_common.c.

References __n_assert, LOG_ERR, and n_log.

Referenced by main().

+ Here is the caller graph for this function: