Lines Matching refs:command
107 static cmd_line_t command;
374 if (command.function != NULL)
375 free(command.function);
377 command.function = malloc(strlen($1) + 1);
378 if (command.function == NULL)
380 strcpy(command.function, $1);
770 command.function, str, enum_names[arg_type], arg_type);
797 temp = realloc(command.args, sizeof(*temp) * (command.nargs + 1));
800 command.args = temp;
801 memcpy(&command.args[command.nargs], &cur, sizeof(args_t));
802 command.nargs++;
844 temp = realloc(command.returns, sizeof(*temp) * (command.nrets + 1));
847 command.returns = temp;
848 memcpy(&command.returns[command.nrets], &cur, sizeof(ct_data_t));
849 command.nrets++;
1083 do_input = check_function_table(command.function, input_functions,
1209 enum_names[command.returns[i].data_type]);
1214 if (command.returns[i].data_type != data_var) {
1217 vars[command.returns[i].data_index].len =
1221 vars[command.returns[i].data_index].cchar =
1224 vars[command.returns[i].data_index].value =
1228 vars[command.returns[i].data_index].type =
1241 * Write the function and command arguments to the command pipe.
1249 fprintf(stderr, "calling function >%s<\n", command.function);
1252 write_cmd_pipe(command.function);
1253 for (i = 0; i < command.nargs; i++) {
1254 if (command.args[i].arg_type == data_var)
1255 write_cmd_pipe_args(command.args[i].arg_type,
1256 &vars[command.args[i].var_index]);
1258 write_cmd_pipe_args(command.args[i].arg_type,
1259 &command.args[i]);
1271 if (command.returns[0].data_index == -1)
1275 if (command.returns[1].data_type == data_var) {
1276 vptr = &vars[command.returns[1].data_index];
1277 command.returns[1].data_type = vptr->type;
1278 command.returns[1].data_len = vptr->len;
1280 command.returns[1].data_value = vptr->value;
1282 command.returns[1].data_value = &vptr->cchar;
1287 vars[command.returns[0].data_index].name,
1288 enum_names[command.returns[1].data_type]);
1294 if (((command.returns[1].data_type == data_byte) &&
1295 (vars[command.returns[0].data_index].type != data_byte)))
1297 enum_names[vars[command.returns[0].data_index].type],
1298 vars[command.returns[0].data_index].type,
1299 enum_names[command.returns[1].data_type],
1300 command.returns[1].data_type);
1302 switch (command.returns[1].data_type) {
1305 validate_type(vars[command.returns[0].data_index].type,
1306 &command.returns[1], 0);
1311 command.returns[0].data_index, 0);
1316 command.returns[0].data_index, 1);
1323 (const char *)command.returns[1].data_value,
1325 vars[command.returns[0].data_index].value);
1328 command.returns[1].data_value,
1329 command.returns[0].data_index, 0);
1333 vptr = &vars[command.returns[0].data_index];
1337 validate_byte(&retvar, &command.returns[1], 0);
1341 validate_cchar(&vars[command.returns[0].data_index].cchar,
1342 (cchar_t *) command.returns[1].data_value, 0);
1346 validate_wchar((wchar_t *) vars[command.returns[0].data_index].value,
1347 (wchar_t *) command.returns[1].data_value, 0);
1411 * Initialise the command structure - if initial is non-zero then just set
1422 free(command.function);
1423 for (i = 0; i < command.nrets; i++) {
1424 if (command.returns[i].data_type == data_number)
1425 free(command.returns[i].data_value);
1427 free(command.returns);
1429 for (i = 0; i < command.nargs; i++) {
1430 if (command.args[i].arg_type != data_var)
1431 free(command.args[i].arg_string);
1433 free(command.args);
1447 command.function = NULL;
1448 command.nargs = 0;
1449 command.args = NULL;
1450 command.nrets = 0;
1451 command.returns = NULL;
1472 * i is the i into the rets array in command.
1481 if ((command.returns[i].data_type != data_byte) &&
1482 (command.returns[i].data_type != data_err) &&
1483 (command.returns[i].data_type != data_ok)) {
1490 enum_names[command.returns[i].data_type],
1496 switch (command.returns[i].data_type) {
1515 validate_return(command.returns[i].data_value,
1524 validate_byte(&command.returns[i], byte_response, 0);
1543 varp = &vars[command.returns[i].data_index];
1546 if (command.returns[i].data_type != data_byte)
1841 retval = &command.returns[ret];
1842 varptr = &vars[command.returns[ret].data_index];
1895 * Write a string to the command pipe - we feed the number of bytes coming
1971 fprintf(stderr, "Writing type %s to command pipe\n",
1976 err(1, "command pipe write for type failed");
1981 "Writing cchar to command pipe\n");
1984 "Writing wchar(%d sized) to command pipe\n", len);
1987 "Writing length %d to command pipe\n", len);
1991 err(1, "command pipe write for length failed");
1995 fprintf(stderr, "Writing data >%s< to command pipe\n",
1999 err(1, "command pipe write of data failed");
2004 * Read a response from the command pipe, first we will receive the
2041 err(1, "command pipe read for type failed");
2046 err(1, "command pipe read for length failed");
2051 "Reading %d bytes from command pipe\n", len);
2058 err(1, "command pipe read of data failed");
2073 err(1, "command pipe read for number of "