Lumiera  0.pre.03
»edit your freedom«
tmpbuf.c File Reference

Go to the source code of this file.

Description

Implementation of temporary buffers with round-robin usage pattern.

Warning
this is the restored old version from bc989dab7a97fc69c (July 2010) (the improved version is still buggy as of 5/2011)

Definition in file tmpbuf.c.

#include "lib/safeclib.h"
#include "lib/tmpbuf.h"
#include <string.h>
#include <pthread.h>
#include <stdint.h>
#include <stdarg.h>
#include <nobug.h>

Classes

struct  lumiera_tmpbuf_struct
 

Functions

static void lumiera_tmpbuf_destroy (void *buf)
 
void lumiera_tmpbuf_freeall (void)
 free all buffers associated with this thread. More...
 
static void lumiera_tmpbuf_init (void)
 
void * lumiera_tmpbuf_provide (size_t size)
 Query a thread local tmpbuf. More...
 
char * lumiera_tmpbuf_snprintf (size_t size, const char *fmt,...)
 Construct a string in a tmpbuf. More...
 
char * lumiera_tmpbuf_strcat3 (const char *str1, size_t str1_len, const char *str2, size_t str2_len, const char *str3, size_t str3_len)
 Concat up to 3 strings in a tmpbuf. More...
 
char * lumiera_tmpbuf_strndup (const char *src, size_t size)
 Duplicate string to a tmpbuf. More...
 
char * lumiera_tmpbuf_tr (const char *in, const char *from, const char *to, const char *def)
 Translates characters in a string, similar to the shell 'tr' utility. More...
 

Variables

static pthread_key_t lumiera_tmpbuf_tls_key
 
static pthread_once_t lumiera_tmpbuf_tls_once = PTHREAD_ONCE_INIT
 

Class Documentation

◆ lumiera_tmpbuf_struct

struct lumiera_tmpbuf_struct
Class Members
void * buffers[64]
size_t sizes[64]
unsigned idx
+ Collaboration diagram for lumiera_tmpbuf_struct:

Function Documentation

◆ lumiera_tmpbuf_freeall()

void lumiera_tmpbuf_freeall ( void  )

free all buffers associated with this thread.

This function is called automatically, usually one doesnt need to call it.

Definition at line 64 of file tmpbuf.c.

◆ lumiera_tmpbuf_provide()

void* lumiera_tmpbuf_provide ( size_t  size)

Query a thread local tmpbuf.

Parameters
sizeminimal needed size for the tmpbuf
Returns
the tmpbuf

Definition at line 80 of file tmpbuf.c.

Referenced by lumiera_tmpbuf_strndup().

+ Here is the caller graph for this function:

◆ lumiera_tmpbuf_strndup()

char* lumiera_tmpbuf_strndup ( const char *  src,
size_t  size 
)

Duplicate string to a tmpbuf.

Parameters
srcstring to be duplicated
sizemaximal length to be copied
Returns
temporary buffer containing a copy of the string

Definition at line 102 of file tmpbuf.c.

References lumiera_tmpbuf_provide().

Referenced by lumiera_tmpbuf_tr(), and scan_word().

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

◆ lumiera_tmpbuf_snprintf()

char* lumiera_tmpbuf_snprintf ( size_t  size,
const char *  fmt,
  ... 
)

Construct a string in a tmpbuf.

Parameters
sizemaximal length for the string
fmtprintf like formatstring
...parameters
Returns
temporary buffer containing the constructed of the string

Definition at line 116 of file tmpbuf.c.

Referenced by lumiera_config_lookup_insert_default(), lumiera_tmpbuf_print_time(), and lumiera_tmpbuf_strcat3().

+ Here is the caller graph for this function:

◆ lumiera_tmpbuf_strcat3()

char* lumiera_tmpbuf_strcat3 ( const char *  str1,
size_t  str1_len,
const char *  str2,
size_t  str2_len,
const char *  str3,
size_t  str3_len 
)

Concat up to 3 strings in a tmpbuf.

Parameters
str1first string to concat or NULL
str1_lenhow much of the first string shall be used
str2second string to concat or NULL
str2_lenhow much of the second string shall be used
str3third string to concat or NULL
str3_lenhow much of the third string shall be used
Returns
temporary buffer containing the constructed of the string

Definition at line 135 of file tmpbuf.c.

References lumiera_tmpbuf_snprintf().

Referenced by lumiera_config_lookup_insert().

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

◆ lumiera_tmpbuf_tr()

char* lumiera_tmpbuf_tr ( const char *  in,
const char *  from,
const char *  to,
const char *  def 
)

Translates characters in a string, similar to the shell 'tr' utility.

Parameters
ininput string to be translated
fromsource character set
todestination character set
defdefault destination character when a character is not in the source set, when NULL then translation will abort on unknown characters and return NULL, when "" then unknown characters will be removed when set to a single character string, unknown characters will be replaced with this character
Returns
temporary buffer containing the constructed of the string

Definition at line 147 of file tmpbuf.c.

References lumiera_tmpbuf_strndup().

+ Here is the call graph for this function: