summaryrefslogtreecommitdiff
path: root/src/libstddjb/ucspi_get.c
blob: 916ae2a919709e13d3e0b6dd57acb590e82ed3c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/* ISC license. */

#include <errno.h>
#include <skalibs/bytestr.h>
#include <skalibs/env.h>

char const *ucspi_get (char const *s)
{
  char const *x = env_get("PROTO") ;
  if (x)
  {
    unsigned int len = str_len(s) ;
    unsigned int xlen = str_len(x) ;
    char tmp[len + xlen + 1] ;
    byte_copy(tmp, xlen, x) ;
    byte_copy(tmp + xlen, len + 1, s) ;
    x = env_get(tmp) ;
    if (!x) errno = ENOENT ;
  }
  else errno = EINVAL ;
  return x ;
}