LCOV - code coverage report
Current view: top level - include/sys - environment.hpp (source / functions) Coverage Total Hit
Test: mxlib Lines: 75.0 % 8 6
Test Date: 2026-08-30 22:23:37 Functions: 100.0 % 1 1

            Line data    Source code
       1              : /** \file environment.hpp
       2              :  * \author Jared R. Males
       3              :  * \brief Utilities for working with the environment
       4              :  * \ingroup utils_files
       5              :  */
       6              : 
       7              : //***********************************************************************//
       8              : // Copyright 2015-2020 Jared R. Males (jaredmales@gmail.com)
       9              : //
      10              : // This file is part of mxlib.
      11              : //
      12              : // mxlib is free software: you can redistribute it and/or modify
      13              : // it under the terms of the GNU General Public License as published by
      14              : // the Free Software Foundation, either version 3 of the License, or
      15              : // (at your option) any later version.
      16              : //
      17              : // mxlib is distributed in the hope that it will be useful,
      18              : // but WITHOUT ANY WARRANTY; without even the implied warranty of
      19              : // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      20              : // GNU General Public License for more details.
      21              : //
      22              : // You should have received a copy of the GNU General Public License
      23              : // along with mxlib.  If not, see <http://www.gnu.org/licenses/>.
      24              : //***********************************************************************//
      25              : 
      26              : #ifndef environment_hpp
      27              : #define environment_hpp
      28              : 
      29              : #include <locale>
      30              : #include <string>
      31              : #include <string.h>
      32              : 
      33              : namespace mx
      34              : {
      35              : namespace sys
      36              : {
      37              : 
      38              : /// Return the value of an environment variable
      39              : /** Call the standard getenv function, but handles the null pointer as an empty string.
      40              :  *
      41              :  * \returns the value of the environment varialbe, or empty string if it doesn't exist
      42              :  *
      43              :  * \tparam maxsz is the maximum allowable size of the environment variable.  Prevents buffer overflow.
      44              :  *
      45              :  * \ingroup system
      46              :  */
      47              : template<size_t maxsz=4096>
      48           40 : std::string getEnv( const std::string &estr /**< [in] is the name of the environment variable to query */ )
      49              : {
      50           40 :     char *e = getenv( estr.c_str() );
      51              : 
      52           40 :     if( e )
      53              :     {
      54           40 :         size_t sz = strnlen(e, maxsz);
      55           40 :         if(sz < maxsz)
      56              :         {
      57           80 :             return std::string( e );
      58              :         }
      59              :         else
      60              :         {
      61            0 :             return "";
      62              :         }
      63              :     }
      64              :     else
      65              :     {
      66            0 :         return "";
      67              :     }
      68              : }
      69              : 
      70              : } // namespace sys
      71              : } // namespace mx
      72              : 
      73              : #endif // environment_hpp
        

Generated by: LCOV version 2.0-1