File: get_logindefs.c

package info (click to toggle)
account-utils 1.0.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 836 kB
  • sloc: ansic: 8,789; xml: 1,584; sh: 77; makefile: 10
file content (72 lines) | stat: -rw-r--r-- 1,739 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// SPDX-License-Identifier: LGPL-2.1-or-later

#include "config.h"

#include <libeconf.h>

#include "basics.h"
#include "get_logindefs.h"

static econf_err
load_logindefs_config(econf_file **key_file)
{
  return econf_readConfig(key_file,
                          NULL /* project */,
                          _PATH_VENDORDIR /* usr_conf_dir */,
                          "login" /* config_name */,
                          "defs" /* config_suffix */,
                          "= \t" /* delim */,
                          "#" /* comment */);
}

long
get_logindefs_num(const char *key, long def)
{
  _cleanup_(econf_freeFilep) econf_file *key_file = NULL;
  int32_t val;
  econf_err error;

  error = load_logindefs_config(&key_file);
  if (error != ECONF_SUCCESS)
    {
      fprintf(stderr, "Cannot parse login.defs: %s\n", econf_errString(error));
      return def;
    }

  error = econf_getIntValueDef(key_file, NULL, key, &val, def);
  if (error != ECONF_SUCCESS)
    {
      if (error != ECONF_NOKEY)
	fprintf(stderr, "Error reading '%s': %s\n", key,
		econf_errString(error));
      return def;
    }

  return val;
}

char *
get_logindefs_string(const char *key, const char *def)
{
  _cleanup_(econf_freeFilep) econf_file *key_file = NULL;
  char *val;
  econf_err error;

  error = load_logindefs_config(&key_file);
  if (error != ECONF_SUCCESS)
    {
      fprintf(stderr, "Cannot parse login.defs: %s\n", econf_errString(error));
      return strdup(def);
    }

  error = econf_getStringValueDef(key_file, NULL, key, &val, def);
  if (error != ECONF_SUCCESS)
    {
      if (error != ECONF_NOKEY)
	fprintf(stderr, "Error reading '%s': %s\n", key,
		econf_errString(error));
      return strdup(def);
    }

  return val;
}