Implement exit status according to manual page:

1 if there was an invalid command line option or argument;
  2 if an error was returned by Hamlib.


git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@3009 7ae35d74-ebe9-4afe-98af-79ac388436b8
Hamlib-1.2.13
Stéphane Fillod, F8CFE 2010-12-01 21:41:55 +00:00
rodzic 9270c122e7
commit 8690fb0594
6 zmienionych plików z 50 dodań i 20 usunięć

Wyświetl plik

@ -96,6 +96,7 @@ int main (int argc, char *argv[])
rig_model_t my_model = RIG_MODEL_DUMMY;
int retcode; /* generic return code from functions */
int exitcode;
int verbose = 0;
int show_conf = 0;
@ -320,15 +321,19 @@ int main (int argc, char *argv[])
rig_debug(RIG_DEBUG_VERBOSE, "Backend version: %s, Status: %s\n",
my_rig->caps->version, rig_strstatus(my_rig->caps->status));
exitcode = 0;
do {
retcode = rigctl_parse(my_rig, stdin, stdout, argv, argc);
if (retcode == 2)
exitcode = 2;
}
while (retcode == 0);
while (retcode == 0 || retcode == 2);
rig_close(my_rig); /* close port */
rig_cleanup(my_rig); /* if you care about memory */
return 0;
return exitcode;
}

Wyświetl plik

@ -406,7 +406,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc)
if (!argv[optind]) {
fprintf(stderr, "Invalid arg for command '%s'\n",
cmd_entry->name);
exit(2);
exit(1);
}
vfo = rig_parse_vfo(argv[optind++]);
}
@ -430,7 +430,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc)
if (!argv[optind]) {
fprintf(stderr, "Invalid arg for command '%s'\n",
cmd_entry->name);
exit(2);
exit(1);
}
p1 = argv[optind++];
}
@ -446,7 +446,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc)
if (!argv[optind]) {
fprintf(stderr, "Invalid arg for command '%s'\n",
cmd_entry->name);
exit(2);
exit(1);
}
p1 = argv[optind++];
}
@ -462,7 +462,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc)
if (!argv[optind]) {
fprintf(stderr, "Invalid arg for command '%s'\n",
cmd_entry->name);
exit(2);
exit(1);
}
p2 = argv[optind++];
}
@ -478,7 +478,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc)
if (!argv[optind]) {
fprintf(stderr, "Invalid arg for command '%s'\n",
cmd_entry->name);
exit(2);
exit(1);
}
p3 = argv[optind++];
}
@ -493,7 +493,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc)
#endif
if (!prompt)
rig_debug(RIG_DEBUG_TRACE, "rigctl(d): %c '0x%02x' '%s' '%s' '%s'\n",
rig_debug(RIG_DEBUG_TRACE, "rigctl(d): %c '%s' '%s' '%s' '%s'\n",
cmd, rig_strvfo(vfo), p1?p1:"", p2?p2:"", p3?p3:"");
/*
@ -554,7 +554,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc)
fflush(fout);
return 0;
return retcode != RIG_OK ? 2 : 0;
}
@ -1198,12 +1198,15 @@ declare_proto_rig(set_level)
}
level = rig_parse_level(arg1);
if (RIG_LEVEL_NONE == level)
return -RIG_EINVAL;
if (!rig_has_set_level(rig, level)) {
const struct confparams *cfp;
cfp = rig_ext_lookup(rig, arg1);
if (!cfp)
return -RIG_EINVAL; /* no such parameter */
return -RIG_ENAVAIL; /* no such parameter */
switch (cfp->type) {
case RIG_CONF_BUTTON:
@ -1248,6 +1251,9 @@ declare_proto_rig(get_level)
}
level = rig_parse_level(arg1);
if (RIG_LEVEL_NONE == level)
return -RIG_EINVAL;
if (!rig_has_get_level(rig, level)) {
const struct confparams *cfp;
@ -1310,6 +1316,9 @@ declare_proto_rig(set_func)
}
func = rig_parse_func(arg1);
if (RIG_FUNC_NONE == func)
return -RIG_EINVAL;
CHKSCN1ARG(sscanf(arg2, "%d", &func_stat));
return rig_set_func(rig, vfo, func, func_stat);
}
@ -1329,6 +1338,9 @@ declare_proto_rig(get_func)
}
func = rig_parse_func(arg1);
if (RIG_FUNC_NONE == func)
return -RIG_EINVAL;
status = rig_get_func(rig, vfo, func, &func_stat);
if (status != RIG_OK)
return status;
@ -1353,6 +1365,8 @@ declare_proto_rig(set_parm)
}
parm = rig_parse_parm(arg1);
if (RIG_PARM_NONE == parm)
return -RIG_EINVAL;
if (!rig_has_set_parm(rig, parm)) {
const struct confparams *cfp;
@ -1404,6 +1418,9 @@ declare_proto_rig(get_parm)
}
parm = rig_parse_parm(arg1);
if (RIG_PARM_NONE == parm)
return -RIG_EINVAL;
if (!rig_has_get_parm(rig, parm)) {
const struct confparams *cfp;
@ -1498,6 +1515,9 @@ declare_proto_rig(vfo_op)
}
op = rig_parse_vfo_op(arg1);
if (RIG_OP_NONE == op)
return -RIG_EINVAL;
return rig_vfo_op(rig, vfo, op);
}

Wyświetl plik

@ -479,7 +479,7 @@ void * handle_socket(void *arg)
if (ferror(fsockin) || ferror(fsockout))
retcode = 1;
}
while (retcode == 0);
while (retcode == 0 || retcode == 2);
rig_debug(RIG_DEBUG_VERBOSE, "Connection closed from %s:%d\n",
inet_ntoa(handle_data_arg->cli_addr.sin_addr),

Wyświetl plik

@ -81,6 +81,7 @@ int main (int argc, char *argv[])
rot_model_t my_model = ROT_MODEL_DUMMY;
int retcode; /* generic return code from functions */
int exitcode;
int verbose = 0;
int show_conf = 0;
@ -228,15 +229,19 @@ int main (int argc, char *argv[])
rig_debug(RIG_DEBUG_VERBOSE, "Backend version: %s, Status: %s\n",
my_rot->caps->version, rig_strstatus(my_rot->caps->status));
exitcode = 0;
do {
retcode = rotctl_parse(my_rot, stdin, stdout, argv, argc);
if (retcode == 2)
exitcode = 2;
}
while (retcode == 0);
while (retcode == 0 || retcode == 2);
rot_close(my_rot); /* close port */
rot_cleanup(my_rot); /* if you care about memory */
return 0;
return exitcode;
}
void usage()

Wyświetl plik

@ -318,7 +318,7 @@ int rotctl_parse(ROT *my_rot, FILE *fin, FILE *fout, char *argv[], int argc)
if (!argv[optind]) {
fprintf(stderr, "Invalid arg for command '%s'\n",
cmd_entry->name);
exit(2);
exit(1);
}
p1 = argv[optind++];
}
@ -333,7 +333,7 @@ int rotctl_parse(ROT *my_rot, FILE *fin, FILE *fout, char *argv[], int argc)
if (!argv[optind]) {
fprintf(stderr, "Invalid arg for command '%s'\n",
cmd_entry->name);
exit(2);
exit(1);
}
p1 = argv[optind++];
}
@ -349,7 +349,7 @@ int rotctl_parse(ROT *my_rot, FILE *fin, FILE *fout, char *argv[], int argc)
if (!argv[optind]) {
fprintf(stderr, "Invalid arg for command '%s'\n",
cmd_entry->name);
exit(2);
exit(1);
}
p2 = argv[optind++];
}
@ -365,7 +365,7 @@ int rotctl_parse(ROT *my_rot, FILE *fin, FILE *fout, char *argv[], int argc)
if (!argv[optind]) {
fprintf(stderr, "Invalid arg for command '%s'\n",
cmd_entry->name);
exit(2);
exit(1);
}
p3 = argv[optind++];
}
@ -382,7 +382,7 @@ int rotctl_parse(ROT *my_rot, FILE *fin, FILE *fout, char *argv[], int argc)
if (!argv[optind]) {
fprintf(stderr, "Invalid arg for command '%s'\n",
cmd_entry->name);
exit(2);
exit(1);
}
p4 = argv[optind++];
}
@ -457,7 +457,7 @@ int rotctl_parse(ROT *my_rot, FILE *fin, FILE *fout, char *argv[], int argc)
fflush(fout);
return 0;
return retcode != RIG_OK ? 2 : 0;
}

Wyświetl plik

@ -394,7 +394,7 @@ void * handle_socket(void *arg)
if (ferror(fsockin) || ferror(fsockout))
retcode = 1;
}
while (retcode == 0);
while (retcode == 0 || retcode == 2);
rig_debug(RIG_DEBUG_VERBOSE, "Connection closed from %s:%d\n",
inet_ntoa(handle_data_arg->cli_addr.sin_addr),