Files
paolo.iocco ab6f495c89
2023-03-09 10:24:21 +00:00

103 lines
1.9 KiB
C

// -*- Mode: Eagle -*-
/* nonvolatile.h
* Copyright 2004-2009 by John Johnson Software, LLC.
* See readme.html for copyright information.
*/
string STORAGE_NAME = g_path + "/storage.nv";
int NAME_FIELD = 0;
int VALUE_FIELD = 1;
char SEPARATOR = '=';
string m_params[];
string empty[];
if (filetime(STORAGE_NAME) == 0) {
output(STORAGE_NAME, "wt") {
printf("created%c%s\s", SEPARATOR, t2string(time()));
}
}
void empty_m_params()
{
int i;
while (m_params[i] != "")
m_params[i++] = "";
}
int read_nv_file(int can_abort)
{
int num_params;
empty_m_params();
fileerror();
num_params = fileread(m_params, STORAGE_NAME);
if(fileerror()) {
if(can_abort) {
exit(1);
}
else {
return 0;
}
}
/* string t;
sprintf(t, "there are %d params", num_params);
dlgMessageBox(t);
*/ return num_params;
}
string get_nv_param(string name, string def, int can_abort)
{
string value;
read_nv_file(can_abort);
value = lookup(m_params, name, VALUE_FIELD, SEPARATOR);
if (value == "") {
return def;
}
return value;
}
void set_nv_param(string name, string value)
{
int num_params;
int i;
string record[];
num_params = read_nv_file(0);
if (lookup(m_params, name, VALUE_FIELD, SEPARATOR) == "") {
m_params[num_params] = name + SEPARATOR + value;
num_params++;
}
else {
for (i=0; i < num_params; i++) {
strsplit(record, m_params[i], SEPARATOR);
if (record[NAME_FIELD] == name) {
record[VALUE_FIELD] = value;
m_params[i] = record[NAME_FIELD] + SEPARATOR + record[VALUE_FIELD];
break;
}
}
}
output(STORAGE_NAME, "wt") {
for (i = 0; i < num_params; i++) {
printf("%s\n", m_params[i]);
}
}
}
void set_real_nv_param(string name, real value)
{
string str;
sprintf(str, "%f", value);
set_nv_param(name, str);
}
real get_real_nv_param(string name)
{
string str;
str = get_nv_param(name, "0.000", YES);
return strtod(str);
}