int rail_client_execute(RailClientContext* context, RAIL_EXEC_ORDER* exec) { railPlugin* rail = (railPlugin*) context->handle; char* exeOrFile; exeOrFile = exec->RemoteApplicationProgram; if (!exeOrFile) return -1; if (strlen(exeOrFile) >= 2) { if (strncmp(exeOrFile, "||", 2) != 0) exec->flags |= RAIL_EXEC_FLAG_FILE; } rail_string_to_unicode_string(exec->RemoteApplicationProgram, &exec->exeOrFile); /* RemoteApplicationProgram */ rail_string_to_unicode_string(exec->RemoteApplicationWorkingDir, &exec->workingDir); /* ShellWorkingDirectory */ rail_string_to_unicode_string(exec->RemoteApplicationArguments, &exec->arguments); /* RemoteApplicationCmdLine */ rail_send_client_exec_order(rail, exec); return 0; }
static void rail_process_plugin_data(rdpRailOrder* rail_order, RDP_PLUGIN_DATA* data) { char* exeOrFile; exeOrFile = (char*) data->data[0]; if (strlen(exeOrFile) >= 2) { if (strncmp(exeOrFile, "||", 2) != 0) rail_order->exec.flags |= RAIL_EXEC_FLAG_FILE; } rail_string_to_unicode_string(rail_order, (char*) data->data[0], &rail_order->exec.exeOrFile); rail_string_to_unicode_string(rail_order, (char*) data->data[1], &rail_order->exec.workingDir); rail_string_to_unicode_string(rail_order, (char*) data->data[2], &rail_order->exec.arguments); rail_send_client_exec_order(rail_order); }
static void rail_process_addin_args(rdpRailOrder* rail_order, rdpSettings* settings) { char* exeOrFile; exeOrFile = settings->RemoteApplicationProgram; if (strlen(exeOrFile) >= 2) { if (strncmp(exeOrFile, "||", 2) != 0) rail_order->exec.flags |= RAIL_EXEC_FLAG_FILE; } rail_string_to_unicode_string(rail_order, settings->RemoteApplicationProgram, &rail_order->exec.exeOrFile); rail_string_to_unicode_string(rail_order, settings->ShellWorkingDirectory, &rail_order->exec.workingDir); rail_string_to_unicode_string(rail_order, settings->RemoteApplicationCmdLine, &rail_order->exec.arguments); rail_send_client_exec_order(rail_order); }