CPS_NTP_Source data;
CPS_Status status;
IPAddr ip_addr;
+ char str[64];
int result = 0;
status = CPS_ParseNTPSourceAdd(line, &data);
result = 1;
break;
- case CPS_BadOption:
- fprintf(stderr, "Unrecognized subcommand\n");
- break;
- case CPS_BadHost:
- fprintf(stderr, "Invalid host/IP address\n");
- break;
- case CPS_BadPort:
- fprintf(stderr, "Unreadable port number\n");
- break;
- case CPS_BadMinpoll:
- fprintf(stderr, "Unreadable minpoll value\n");
- break;
- case CPS_BadMaxpoll:
- fprintf(stderr, "Unreadable maxpoll value\n");
- break;
- case CPS_BadPresend:
- fprintf(stderr, "Unreadable presend value\n");
- break;
- case CPS_BadMaxdelaydevratio:
- fprintf(stderr, "Unreadable max delay dev ratio value\n");
- break;
- case CPS_BadMaxdelayratio:
- fprintf(stderr, "Unreadable max delay ratio value\n");
- break;
- case CPS_BadMaxdelay:
- fprintf(stderr, "Unreadable max delay value\n");
- break;
- case CPS_BadKey:
- fprintf(stderr, "Unreadable key value\n");
- break;
- case CPS_BadMinstratum:
- fprintf(stderr, "Unreadable minstratum value\n");
- break;
- case CPS_BadPolltarget:
- fprintf(stderr, "Unreadable polltarget value\n");
- break;
- case CPS_BadVersion:
- fprintf(stderr, "Unreadable version value\n");
- break;
- case CPS_BadMaxsources:
- fprintf(stderr, "Unreadable maxsources value\n");
- break;
- case CPS_BadMinsamples:
- fprintf(stderr, "Unreadable minsamples value\n");
- break;
- case CPS_BadMaxsamples:
- fprintf(stderr, "Unreadable maxsamples value\n");
+ default:
+ CPS_StatusToString(status, str, sizeof (str));
+ fprintf(stderr, "%s\n", str);
break;
}
/* ================================================== */
+void
+CPS_StatusToString(CPS_Status status, char *dest, int len)
+{
+ const char *s = NULL;
+
+ if (len > 0)
+ dest[0] = '\0';
+
+ switch (status) {
+ case CPS_Success:
+ return;
+ case CPS_BadOption:
+ s = "server/peer/pool option";
+ break;
+ case CPS_BadHost:
+ s = "address";
+ break;
+ case CPS_BadPort:
+ s = "port";
+ break;
+ case CPS_BadMinpoll:
+ s = "minpoll";
+ break;
+ case CPS_BadMaxpoll:
+ s = "maxpoll";
+ break;
+ case CPS_BadPresend:
+ s = "presend";
+ break;
+ case CPS_BadMaxdelaydevratio:
+ s = "maxdelaydevratio";
+ break;
+ case CPS_BadMaxdelayratio:
+ s = "maxdelayratio";
+ break;
+ case CPS_BadMaxdelay:
+ s = "maxdelay";
+ break;
+ case CPS_BadKey:
+ s = "key";
+ break;
+ case CPS_BadMinstratum:
+ s = "minstratum";
+ break;
+ case CPS_BadPolltarget:
+ s = "polltarget";
+ break;
+ case CPS_BadVersion:
+ s = "version";
+ break;
+ case CPS_BadMaxsources:
+ s = "maxsources";
+ break;
+ case CPS_BadMinsamples:
+ s = "minsamples";
+ break;
+ case CPS_BadMaxsamples:
+ s = "maxsamples";
+ break;
+ }
+
+ snprintf(dest, len, "Invalid %s", s);
+}
+
+/* ================================================== */
+
void
CPS_NormalizeLine(char *line)
{
/* Parse a command to add an NTP server or peer */
extern CPS_Status CPS_ParseNTPSourceAdd(char *line, CPS_NTP_Source *src);
+/* Get a string describing error status */
+extern void CPS_StatusToString(CPS_Status status, char *dest, int len);
+
/* Remove extra white-space and comments */
extern void CPS_NormalizeLine(char *line);
{
CPS_Status status;
NTP_Source source;
+ char str[64];
source.type = type;
source.pool = pool;
status = CPS_ParseNTPSourceAdd(line, &source.params);
- switch (status) {
- case CPS_Success:
- source.params.name = Strdup(source.params.name);
- ARR_AppendElement(ntp_sources, &source);
- break;
- case CPS_BadOption:
- other_parse_error("Invalid server/peer parameter");
- break;
- case CPS_BadHost:
- other_parse_error("Invalid host/IP address");
- break;
- case CPS_BadPort:
- other_parse_error("Unreadable port");
- break;
- case CPS_BadMinpoll:
- other_parse_error("Unreadable minpoll");
- break;
- case CPS_BadMaxpoll:
- other_parse_error("Unreadable maxpoll");
- break;
- case CPS_BadPresend:
- other_parse_error("Unreadable presend");
- break;
- case CPS_BadMaxdelaydevratio:
- other_parse_error("Unreadable maxdelaydevratio");
- break;
- case CPS_BadMaxdelayratio:
- other_parse_error("Unreadable maxdelayratio");
- break;
- case CPS_BadMaxdelay:
- other_parse_error("Unreadable maxdelay");
- break;
- case CPS_BadKey:
- other_parse_error("Unreadable key");
- break;
- case CPS_BadMinstratum:
- other_parse_error("Unreadable minstratum");
- break;
- case CPS_BadPolltarget:
- other_parse_error("Unreadable polltarget");
- break;
- case CPS_BadVersion:
- other_parse_error("Unreadable version");
- break;
- case CPS_BadMaxsources:
- other_parse_error("Unreadable maxsources");
- break;
- case CPS_BadMinsamples:
- other_parse_error("Unreadable minsamples");
- break;
- case CPS_BadMaxsamples:
- other_parse_error("Unreadable maxsamples");
- break;
+ if (status != CPS_Success) {
+ CPS_StatusToString(status, str, sizeof (str));
+ other_parse_error(str);
+ return;
}
+
+ source.params.name = Strdup(source.params.name);
+ ARR_AppendElement(ntp_sources, &source);
}
/* ================================================== */