Code Review
/
kvmfornfv.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
These changes are the raw update to qemu-2.6.
[kvmfornfv.git]
/
qemu
/
roms
/
SLOF
/
lib
/
libnvram
/
envvar.c
diff --git
a/qemu/roms/SLOF/lib/libnvram/envvar.c
b/qemu/roms/SLOF/lib/libnvram/envvar.c
index
87aaf27
..
ee943fc
100644
(file)
--- a/
qemu/roms/SLOF/lib/libnvram/envvar.c
+++ b/
qemu/roms/SLOF/lib/libnvram/envvar.c
@@
-17,7
+17,7
@@
#include "nvram.h"
/* returns the offset of the first byte after the searched envvar */
#include "nvram.h"
/* returns the offset of the first byte after the searched envvar */
-static int get_past_env_pos(partition_t part, char *envvar)
+static int get_past_env_pos(partition_t part, char *envvar
, int evlen
)
{
int offset, len;
static char temp[256];
{
int offset, len;
static char temp[256];
@@
-32,7
+32,7
@@
static int get_past_env_pos(partition_t part, char *envvar)
while((data=nvram_read_byte(offset++)) && len < 256) {
temp[len++]=data;
}
while((data=nvram_read_byte(offset++)) && len < 256) {
temp[len++]=data;
}
- if (!strncmp(envvar, temp,
strlen(envvar)
)) {
+ if (!strncmp(envvar, temp,
evlen
)) {
return offset;
}
} while (len);
return offset;
}
} while (len);
@@
-43,16
+43,16
@@
static int get_past_env_pos(partition_t part, char *envvar)
/**
* @param partition name of the envvar partition
* @param envvar name of the environment variable
/**
* @param partition name of the envvar partition
* @param envvar name of the environment variable
+ * @param evlen string length of the envvar parameter
* @return pointer to temporary string containing the value of envvar
*/
* @return pointer to temporary string containing the value of envvar
*/
-
-char *get_env(partition_t part, char *envvar)
+char *nvram_get_env(partition_t part, char *envvar, int evlen)
{
static char temp[256+1];
int len, offset;
uint8_t data;
{
static char temp[256+1];
int len, offset;
uint8_t data;
- DEBUG("
get_env %s
... ", envvar);
+ DEBUG("
nvram_get_env %p
... ", envvar);
if(!part.addr) {
/* ERROR: No environment variable partition */
DEBUG("invalid partition.\n");
if(!part.addr) {
/* ERROR: No environment variable partition */
DEBUG("invalid partition.\n");
@@
-68,7
+68,7
@@
char *get_env(partition_t part, char *envvar)
}
temp[len]=0;
}
temp[len]=0;
- if (!strncmp(envvar, temp,
strlen(envvar)
)) {
+ if (!strncmp(envvar, temp,
evlen
)) {
int pos=0;
while (temp[pos]!='=' && pos < len) pos++;
// DEBUG("value='%s'\n", temp+pos+1);
int pos=0;
while (temp[pos]!='=' && pos < len) pos++;
// DEBUG("value='%s'\n", temp+pos+1);
@@
-100,7
+100,7
@@
static int find_last_envvar(partition_t part)
return -1;
}
return -1;
}
-int
add_env(partition_t part, char *envvar, char *value
)
+int
nvram_add_env(partition_t part, char *envvar, int evlen, char *value, int vallen
)
{
int freespace, last, len, offset;
unsigned int i;
{
int freespace, last, len, offset;
unsigned int i;
@@
-112,7
+112,7
@@
int add_env(partition_t part, char *envvar, char *value)
freespace = part.addr+part.len-last;
/* how long is the entry we want to write? */
freespace = part.addr+part.len-last;
/* how long is the entry we want to write? */
- len =
strlen(envvar) + strlen(value)
+ 2;
+ len =
evlen + vallen
+ 2;
if(freespace<len) {
// TODO try to increase partition size
if(freespace<len) {
// TODO try to increase partition size
@@
-121,18
+121,18
@@
int add_env(partition_t part, char *envvar, char *value)
offset=last;
offset=last;
- for
(i=0; i<strlen(envvar)
; i++)
+ for
(i = 0; i < evlen
; i++)
nvram_write_byte(offset++, envvar[i]);
nvram_write_byte(offset++, '=');
nvram_write_byte(offset++, envvar[i]);
nvram_write_byte(offset++, '=');
- for
(i=0; i<strlen(value)
; i++)
+ for
(i = 0; i < vallen
; i++)
nvram_write_byte(offset++, value[i]);
return 0;
}
nvram_write_byte(offset++, value[i]);
return 0;
}
-int
del_env(partition_t part, char *envvar
)
+int
nvram_del_env(partition_t part, char *envvar, int evlen
)
{
int last, current, pos, i;
char *buffer;
{
int last, current, pos, i;
char *buffer;
@@
-141,7
+141,7
@@
int del_env(partition_t part, char *envvar)
return -1;
last=find_last_envvar(part);
return -1;
last=find_last_envvar(part);
- current = pos = get_past_env_pos(part, envvar);
+ current = pos = get_past_env_pos(part, envvar
, evlen
);
// TODO is this really required?
/* go back to non-0 value */
// TODO is this really required?
/* go back to non-0 value */
@@
-168,25
+168,25
@@
int del_env(partition_t part, char *envvar)
return 0;
}
return 0;
}
-int
set_env(partition_t part, char *envvar, char *value
)
+int
nvram_set_env(partition_t part, char *envvar, int evlen, char *value, int vallen
)
{
char *oldvalue, *buffer;
int last, current, buffersize, i;
{
char *oldvalue, *buffer;
int last, current, buffersize, i;
- DEBUG("
set_env %lx[%lx]: %s=%s
\n", part.addr, part.len, envvar, value);
+ DEBUG("
nvram_set_env %lx[%lx]: %p=>%p
\n", part.addr, part.len, envvar, value);
if(!part.addr)
return -1;
/* Check whether the environment variable exists already */
if(!part.addr)
return -1;
/* Check whether the environment variable exists already */
- oldvalue =
get_env(part, envvar
);
+ oldvalue =
nvram_get_env(part, envvar, evlen
);
- if
(oldvalue==
NULL)
- return
add_env(part, envvar, value
);
+ if
(oldvalue ==
NULL)
+ return
nvram_add_env(part, envvar, evlen, value, vallen
);
/* The value did not change. So we succeeded! */
/* The value did not change. So we succeeded! */
- if
(!strncmp(oldvalue, value, strlen(value)+1
))
+ if
(strlen(oldvalue) == vallen && !strncmp(oldvalue, value, vallen
))
return 0;
/* we need to overwrite environment variables, back them up first */
return 0;
/* we need to overwrite environment variables, back them up first */
@@
-195,7
+195,7
@@
int set_env(partition_t part, char *envvar, char *value)
/* allocate a buffer */
last=find_last_envvar(part);
/* allocate a buffer */
last=find_last_envvar(part);
- current
=get_past_env_pos(part, envvar
);
+ current
= get_past_env_pos(part, envvar, evlen
);
buffersize = last - current;
buffer=get_nvram_buffer(buffersize);
if(!buffer)
buffersize = last - current;
buffer=get_nvram_buffer(buffersize);
if(!buffer)
@@
-214,7
+214,7
@@
int set_env(partition_t part, char *envvar, char *value)
current++;
/* Write the new value */
current++;
/* Write the new value */
- for(i
=0; i<(int)strlen(value)
; i++) {
+ for(i
= 0; i < vallen
; i++) {
nvram_write_byte(current++, value[i]);
}
nvram_write_byte(current++, value[i]);
}