int setup_ahst(struct query *q, char **argv, client *cl)
{
EXEC SQL BEGIN DECLARE SECTION;
- char *name;
+ char *name, oldname[41], vendor[17], model[25], os[17];
int value, id, saddr, mask, high, low, cnt;
EXEC SQL END DECLARE SECTION;
int row;
struct in_addr addr;
if (!strcmp(q->shortname, "uhst"))
- row = 1;
+ {
+ row = 1;
+ EXEC SQL SELECT name, vendor, model, os
+ INTO :oldname, :vendor, :model, :os
+ FROM machine WHERE mach_id = :id;
+ }
else
row = 0;
+ id = *(int *)argv[0];
+
/* sanity check name: must start with a letter, contain only
* letters, numerals, and hyphen, and not end with a hyphen.
*/
- if (row == 0 || strcmp(argv[1], cl->args->mr_argv[1]))
+ if (row == 0 || strcmp(argv[1], oldname))
{
char *p = argv[row];
/* sanity check host vendor: must start with a letter, contain only
* letters, numerals, and hyphen, and end with an alphanumeric.
*/
- if (*argv[row + 1] && (row == 0 || strcmp(argv[2], cl->args->mr_argv[2])))
+ if (*argv[row + 1] && (row == 0 || strcmp(argv[2], vendor)))
{
char *p = argv[row + 1];
/* sanity check host type: must start with a letter, contain only
* letters, numerals, and hyphen, and end with an alphanumeric.
*/
- if (*argv[row + 2] && (row == 0 || strcmp(argv[3], cl->args->mr_argv[3])))
+ if (*argv[row + 2] && (row == 0 || strcmp(argv[3], model)))
{
char *p = argv[row + 2];
return MR_BAD_CHAR;
}
- /* sanity check host vendor: must start with a letter, contain only
+ /* sanity check host os: must start with a letter, contain only
* letters, numerals, and hyphen, and end with an hyphen alphanumeric.
*/
- if (*argv[row + 3] && (row == 0 || strcmp(argv[4], cl->args->mr_argv[4])))
+ if (*argv[row + 3] && (row == 0 || strcmp(argv[4], os)))
{
char *p = argv[row + 3];