MCPcopy Create free account
hub / github.com/Hamlib/Hamlib / rig_settings_save

Function rig_settings_save

src/settings.c:1095–1223  ·  view source on GitHub ↗

* \brief Save setting parameter * \param setting * \param value * \return RIG_OK or error * * \sa rig_setting_load() */

Source from the content-addressed store, hash-verified

1093 * \sa rig_setting_load()
1094 */
1095HAMLIB_EXPORT(int) rig_settings_save(const char *setting, void *value,
1096 settings_value_t valuetype)
1097{
1098 FILE *fp;
1099 FILE *fptmp;
1100 char path[4096];
1101 char buf[4096];
1102 const char *cvalue = (char *)value;
1103 const int *ivalue = (int *)value;
1104 int n = 0;
1105 const long *lvalue = (long *) value;
1106 const float *fvalue = (float *) value;
1107 const double *dvalue = (double *) value;
1108 const char *vformat = "Unknown format??";
1109 char template[64];
1110
1111 rig_settings_get_path(path, sizeof(path));
1112 fp = fopen(path, "r");
1113
1114 if (fp == NULL)
1115 {
1116 rig_debug(RIG_DEBUG_WARN, "%s: %s not found\n", __func__, path);
1117 return -RIG_EIO;
1118 }
1119
1120 strcpy(template, "hamlib_settings_XXXXXX");
1121
1122 switch (valuetype)
1123 {
1124 case e_CHAR: cvalue = (char *)value; vformat = "%s=%s\n"; break;
1125
1126 case e_INT: ivalue = (int *)value; vformat = "%s=%d\n"; break;
1127
1128 case e_LONG: lvalue = (long *)value; vformat = "%s=%l\n"; break;
1129
1130 case e_FLOAT: fvalue = (float *)value; vformat = "%s=%f\n"; break;
1131
1132 case e_DOUBLE: dvalue = (double *)value; vformat = "%s=%f\n"; break;
1133
1134 default:
1135 rig_debug(RIG_DEBUG_ERR, "%s: Unknown valuetype=%d\n", __func__, valuetype);
1136 }
1137
1138 if (fp == NULL)
1139 {
1140 // first time for this file
1141 fp = fopen(settings_file, "w");
1142
1143 switch (valuetype)
1144 {
1145 case e_CHAR: fprintf(fp, vformat, setting, cvalue); break;
1146
1147 case e_INT: fprintf(fp, vformat, setting, *ivalue); break;
1148
1149 case e_LONG: fprintf(fp, vformat, setting, *lvalue); break;
1150
1151 case e_FLOAT: fprintf(fp, vformat, setting, *fvalue); break;
1152

Callers 2

mainFunction · 0.85
mainFunction · 0.85

Calls 2

rig_settings_get_pathFunction · 0.85
rig_debugFunction · 0.85

Tested by

no test coverage detected