LCOV - code coverage report
Current view: top level - util/env - fd_env.c (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 31 31 100.0 %
Date: 2024-11-13 11:58:15 Functions: 13 13 100.0 %

          Line data    Source code
       1             : #ifndef FD_ENV_STYLE
       2             : #if FD_HAS_HOSTED /* Use POSIX */
       3             : #define FD_ENV_STYLE 0
       4             : #else
       5             : #error "Define FD_ENV_STYLE for this build target"
       6             : #endif
       7             : #endif
       8             : 
       9             : #if FD_ENV_STYLE==0
      10             : 
      11             : #include "fd_env.h"
      12             : 
      13             : #include <stdlib.h>
      14             : 
      15             : #define FD_ENV_STRIP_CMDLINE_IMPL( T, what )                                   \
      16             : T                                                                              \
      17             : fd_env_strip_cmdline_##what( int        *   pargc,                             \
      18             :                              char       *** pargv,                             \
      19             :                              char const *   key,                               \
      20             :                              char const *   env_key,                           \
      21       30308 :                              T              val ) {                            \
      22       30308 :   int new_argc = 0;                                                            \
      23       30308 :   int arg;                                                                     \
      24       30308 :                                                                                \
      25       30308 :   if( env_key ) {                                                              \
      26       28881 :     char const * cstr = getenv( env_key );                                     \
      27       28881 :     if( cstr ) val = fd_cstr_to_##what( cstr );                                \
      28       28881 :   }                                                                            \
      29       30308 :                                                                                \
      30       30308 :   if( key && pargc && pargv ) {                                                \
      31     2888389 :     for( arg=0; arg<(*pargc); arg++ )                                          \
      32     2860427 :       if( strcmp( key, (*pargv)[arg] ) ) (*pargv)[new_argc++] = (*pargv)[arg]; \
      33     2860427 :       else if( (++arg)<(*pargc) ) val = fd_cstr_to_##what( (*pargv)[arg] );    \
      34       27962 :     (*pargc)           = new_argc;                                             \
      35       27962 :     (*pargv)[new_argc] = NULL; /* ANSI - argv is NULL terminated */            \
      36       27962 :   }                                                                            \
      37       30308 :                                                                                \
      38       30308 :   return val;                                                                  \
      39       30308 : }
      40             : 
      41             : FD_ENV_STRIP_CMDLINE_IMPL( char const *, cstr   )
      42             : FD_ENV_STRIP_CMDLINE_IMPL( char,         char   )
      43             : FD_ENV_STRIP_CMDLINE_IMPL( schar,        schar  )
      44             : FD_ENV_STRIP_CMDLINE_IMPL( short,        short  )
      45             : FD_ENV_STRIP_CMDLINE_IMPL( int,          int    )
      46             : FD_ENV_STRIP_CMDLINE_IMPL( long,         long   )
      47             : FD_ENV_STRIP_CMDLINE_IMPL( uchar,        uchar  )
      48             : FD_ENV_STRIP_CMDLINE_IMPL( ushort,       ushort )
      49             : FD_ENV_STRIP_CMDLINE_IMPL( uint,         uint   )
      50             : FD_ENV_STRIP_CMDLINE_IMPL( ulong,        ulong  )
      51             : FD_ENV_STRIP_CMDLINE_IMPL( float,        float  )
      52             : #if FD_HAS_DOUBLE
      53             : FD_ENV_STRIP_CMDLINE_IMPL( double,       double )
      54             : #endif
      55             : 
      56             : #undef FD_ENV_STRIP_CMDLINE_IMPL
      57             : 
      58             : int
      59          21 : fd_env_strip_cmdline_contains( int * pargc, char *** pargv, char const * key ) {
      60          21 :   int new_argc = 0;
      61          21 :   int found = 0;
      62          21 :   if( key && pargc && pargv ) {
      63          84 :     for( int arg=0; arg<(*pargc); arg++ )
      64          63 :       if( strcmp( key, (*pargv)[arg] ) ) (*pargv)[new_argc++] = (*pargv)[arg];
      65           9 :       else found = 1;
      66          21 :     (*pargc)           = new_argc;
      67          21 :     (*pargv)[new_argc] = NULL; /* ANSI - argv is NULL terminated */
      68          21 :   }
      69          21 :   return found;
      70          21 : }
      71             : 
      72             : #else
      73             : #error "Unknown FD_ENV_STYLE"
      74             : #endif
      75             : 

Generated by: LCOV version 1.14