mirror of
https://github.com/linux-sunxi/u-boot-sunxi.git
synced 2024-02-12 11:16:03 +08:00
env: allow to export only selected variables
New syntax: env export [-t | -b | -c] [-s size] addr [var ...] With this change it is possible to provide a list of variables names that shall be exported. Whenno arguments are given, the whole environment gets exported. NOTE: The new handling of the "size" argument means a change to the user API. Signed-off-by: Wolfgang Denk <wd@denx.de>
This commit is contained in:
@ -478,7 +478,8 @@ static int cmpkey(const void *p1, const void *p2)
|
||||
}
|
||||
|
||||
ssize_t hexport_r(struct hsearch_data *htab, const char sep,
|
||||
char **resp, size_t size)
|
||||
char **resp, size_t size,
|
||||
int argc, char * const argv[])
|
||||
{
|
||||
ENTRY *list[htab->size];
|
||||
char *res, *p;
|
||||
@ -502,6 +503,16 @@ ssize_t hexport_r(struct hsearch_data *htab, const char sep,
|
||||
|
||||
if (htab->table[i].used > 0) {
|
||||
ENTRY *ep = &htab->table[i].entry;
|
||||
int arg, found = 0;
|
||||
|
||||
for (arg = 0; arg < argc; ++arg) {
|
||||
if (strcmp(argv[arg], ep->key) == 0) {
|
||||
found = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ((argc > 0) && (found == 0))
|
||||
continue;
|
||||
|
||||
list[n++] = ep;
|
||||
|
||||
@ -539,7 +550,7 @@ ssize_t hexport_r(struct hsearch_data *htab, const char sep,
|
||||
/* Check if the user supplied buffer size is sufficient */
|
||||
if (size) {
|
||||
if (size < totlen + 1) { /* provided buffer too small */
|
||||
debug("### buffer too small: %d, but need %d\n",
|
||||
printf("Env export buffer too small: %d, but need %d\n",
|
||||
size, totlen + 1);
|
||||
__set_errno(ENOMEM);
|
||||
return (-1);
|
||||
|
Reference in New Issue
Block a user