Loading...
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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 | /* SPDX-License-Identifier: GPL-2.0+ */ /* * (C) Copyright 2002-2008 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. */ #include <stdint.h> /* * Programs using the library must check which API is available, * that varies depending on the U-Boot version. * This can be changed in future */ #define FW_ENV_API_VERSION 1 struct env_opts { #ifdef CONFIG_FILE char *config_file; #endif char *lockname; }; /** * fw_printenv() - print one or several environment variables * * @argc: number of variables names to be printed, prints all if 0 * @argv: array of variable names to be printed, if argc != 0 * @value_only: do not repeat the variable name, print the bare value, * only one variable allowed with this option, argc must be 1 * @opts: encryption key, configuration file, defaults are used if NULL * * Description: * Uses fw_env_open, fw_getenv * * Return: * 0 on success, -1 on failure (modifies errno) */ int fw_printenv(int argc, char *argv[], int value_only, struct env_opts *opts); /** * fw_env_set() - adds or removes one variable to the environment * * @argc: number of strings in argv, argv[0] is variable name, * argc==1 means erase variable, argc > 1 means add a variable * @argv: argv[0] is variable name, argv[1..argc-1] are concatenated separated * by single blank and set as the new value of the variable * @opts: how to retrieve environment from flash, defaults are used if NULL * * Description: * Uses fw_env_open, fw_env_write, fw_env_flush * * Return: * 0 on success, -1 on failure (modifies errno) * * ERRORS: * EROFS - some variables ("ethaddr", "serial#") cannot be modified */ int fw_env_set(int argc, char *argv[], struct env_opts *opts); /** * fw_parse_script() - adds or removes multiple variables with a batch script * * @fname: batch script file name * @opts: encryption key, configuration file, defaults are used if NULL * * Description: * Uses fw_env_open, fw_env_write, fw_env_flush * * Return: * 0 success, -1 on failure (modifies errno) * * Script Syntax: * * key [ [space]+ value] * * lines starting with '#' treated as comment * * A variable without value will be deleted. Any number of spaces are allowed * between key and value. The value starts with the first non-space character * and ends with newline. No comments allowed on these lines. Spaces inside * the value are preserved verbatim. * * Script Example: * * netdev eth0 * * kernel_addr 400000 * * foo spaces are copied verbatim * * # delete variable bar * * bar */ int fw_parse_script(char *fname, struct env_opts *opts); /** * fw_env_open() - read enviroment from flash into RAM cache * * @opts: encryption key, configuration file, defaults are used if NULL * * Return: * 0 on success, -1 on failure (modifies errno) */ int fw_env_open(struct env_opts *opts); /** * fw_getenv() - lookup variable in the RAM cache * * @name: variable to be searched * Return: * pointer to start of value, NULL if not found */ char *fw_getenv(char *name); /** * fw_env_write() - modify a variable held in the RAM cache * * @name: variable * @value: delete variable if NULL, otherwise create or overwrite the variable * * This is called in sequence to update the environment in RAM without updating * the copy in flash after each set * * Return: * 0 on success, -1 on failure (modifies errno) * * ERRORS: * EROFS - some variables ("ethaddr", "serial#") cannot be modified */ int fw_env_write(char *name, char *value); /** * fw_env_flush - write the environment from RAM cache back to flash * * @opts: encryption key, configuration file, defaults are used if NULL * * Return: * 0 on success, -1 on failure (modifies errno) */ int fw_env_flush(struct env_opts *opts); /** * fw_env_close - free allocated structure and close env * * @opts: encryption key, configuration file, defaults are used if NULL * * Return: * 0 on success, -1 on failure (modifies errno) */ int fw_env_close(struct env_opts *opts); /** * fw_env_version - return the current version of the library * * Return: * version string of the library */ char *fw_env_version(void); |