Coverage Report

Created: 2026-10-17 06:38

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/barebox/commands/defaultenv.c
Line
Count
Source
1
// SPDX-License-Identifier: GPL-2.0-only
2
// SPDX-FileCopyrightText: © 2014 Sascha Hauer <s.hauer@pengutronix.de>, Pengutronix
3
4
#include <common.h>
5
#include <getopt.h>
6
#include <command.h>
7
#include <envfs.h>
8
#include <errno.h>
9
#include <fs.h>
10
#include <libfile.h>
11
#include <malloc.h>
12
#include <globalvar.h>
13
14
static int do_defaultenv(int argc, char *argv[])
15
0
{
16
0
  char *dirname;
17
0
  int opt, ret;
18
0
  char *restorepath = "/";
19
0
  char *from, *to;
20
0
  int restore = 0, scrub = 0;
21
22
0
  while ((opt = getopt(argc, argv, "p:rs")) > 0) {
23
0
    switch (opt) {
24
0
    case 'r':
25
0
      restore = 1;
26
0
      break;
27
0
    case 'p':
28
0
      restorepath = optarg;
29
0
      break;
30
0
    case 's':
31
0
      scrub = 1;
32
0
      break;
33
0
    default:
34
0
      return COMMAND_ERROR_USAGE;
35
0
    }
36
0
  }
37
38
0
  if (!restore || argc != optind)
39
0
    return COMMAND_ERROR_USAGE;
40
41
0
  dirname = "/env";
42
43
0
  make_directory(dirname);
44
45
0
  ret = defaultenv_load("/.defaultenv", 0);
46
0
  if (ret)
47
0
    return ret;
48
49
0
  from = basprintf("/.defaultenv/%s", restorepath);
50
0
  to = basprintf("%s/%s", dirname, restorepath);
51
52
0
  printf("Restoring %s from default environment\n", restorepath);
53
54
0
  if (scrub)
55
0
    unlink_recursive(to, NULL);
56
57
0
  ret = copy_recursive(from, to, 0);
58
0
  free(from);
59
0
  free(to);
60
61
0
  nvvar_load();
62
63
0
  unlink_recursive("/.defaultenv", NULL);
64
65
0
  return ret;
66
0
}
67
68
BAREBOX_CMD_HELP_START(defaultenv)
69
BAREBOX_CMD_HELP_TEXT("Options:")
70
BAREBOX_CMD_HELP_OPT("-r", "restore default environment")
71
BAREBOX_CMD_HELP_OPT("-s", "scrub, remove files not in default environment")
72
BAREBOX_CMD_HELP_OPT("-p <PATH>", "limit to <PATH>")
73
BAREBOX_CMD_HELP_END
74
75
BAREBOX_CMD_START(defaultenv)
76
  .cmd    = do_defaultenv,
77
  BAREBOX_CMD_DESC("Restore environment from default environment")
78
  BAREBOX_CMD_OPTS("[-rs] [-p <PATH>]")
79
  BAREBOX_CMD_GROUP(CMD_GRP_ENV)
80
  BAREBOX_CMD_HELP(cmd_defaultenv_help)
81
BAREBOX_CMD_END