Blame client/X11/cli/xfreerdp.c

Packit Service fa4841
/**
Packit Service fa4841
 * FreeRDP: A Remote Desktop Protocol Implementation
Packit Service fa4841
 * X11 Client
Packit Service fa4841
 *
Packit Service fa4841
 * Copyright 2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
Packit Service fa4841
 * Copyright 2012 HP Development Company, LLC
Packit Service fa4841
 *
Packit Service fa4841
 * Licensed under the Apache License, Version 2.0 (the "License");
Packit Service fa4841
 * you may not use this file except in compliance with the License.
Packit Service fa4841
 * You may obtain a copy of the License at
Packit Service fa4841
 *
Packit Service fa4841
 *     http://www.apache.org/licenses/LICENSE-2.0
Packit Service fa4841
 *
Packit Service fa4841
 * Unless required by applicable law or agreed to in writing, software
Packit Service fa4841
 * distributed under the License is distributed on an "AS IS" BASIS,
Packit Service fa4841
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Packit Service fa4841
 * See the License for the specific language governing permissions and
Packit Service fa4841
 * limitations under the License.
Packit Service fa4841
 */
Packit Service fa4841
Packit Service fa4841
#ifdef HAVE_CONFIG_H
Packit Service fa4841
#include "config.h"
Packit Service fa4841
#endif
Packit Service fa4841
Packit Service fa4841
#include <winpr/crt.h>
Packit Service fa4841
#include <winpr/synch.h>
Packit Service fa4841
#include <winpr/thread.h>
Packit Service fa4841
Packit Service fa4841
#include <freerdp/freerdp.h>
Packit Service fa4841
#include <freerdp/client/cmdline.h>
Packit Service fa4841
Packit Service fa4841
#include "../xf_client.h"
Packit Service fa4841
#include "../xfreerdp.h"
Packit Service fa4841
Packit Service fa4841
int main(int argc, char* argv[])
Packit Service fa4841
{
Packit Bot d5d4a6
	int rc = 1;
Packit Service fa4841
	int status;
Packit Service fa4841
	HANDLE thread;
Packit Service fa4841
	xfContext* xfc;
Packit Service fa4841
	DWORD dwExitCode;
Packit Service fa4841
	rdpContext* context;
Packit Service fa4841
	rdpSettings* settings;
Packit Service fa4841
	RDP_CLIENT_ENTRY_POINTS clientEntryPoints;
Packit Service fa4841
Packit Service fa4841
	ZeroMemory(&clientEntryPoints, sizeof(RDP_CLIENT_ENTRY_POINTS));
Packit Service fa4841
	clientEntryPoints.Size = sizeof(RDP_CLIENT_ENTRY_POINTS);
Packit Service fa4841
	clientEntryPoints.Version = RDP_CLIENT_INTERFACE_VERSION;
Packit Service fa4841
Packit Service fa4841
	RdpClientEntry(&clientEntryPoints);
Packit Service fa4841
Packit Service fa4841
	context = freerdp_client_context_new(&clientEntryPoints);
Packit Service fa4841
	if (!context)
Packit Service fa4841
		return 1;
Packit Service fa4841
Packit Service fa4841
	settings = context->settings;
Packit Service b1ea74
	xfc = (xfContext*)context;
Packit Service fa4841
Packit Service fa4841
	status = freerdp_client_settings_parse_command_line(context->settings, argc, argv, FALSE);
Packit Service fa4841
	if (status)
Packit Service fa4841
	{
Packit Service b1ea74
		BOOL list = settings->ListMonitors;
Packit Bot d5d4a6
Packit Bot d5d4a6
		rc = freerdp_client_settings_command_line_status_print(settings, status, argc, argv);
Packit Bot d5d4a6
Packit Service b1ea74
		if (list)
Packit Service fa4841
			xf_list_monitors(xfc);
Packit Service fa4841
Packit Bot d5d4a6
		goto out;
Packit Service fa4841
	}
Packit Service fa4841
Packit Bot d5d4a6
	if (freerdp_client_start(context) != 0)
Packit Bot d5d4a6
		goto out;
Packit Service fa4841
Packit Service fa4841
	thread = freerdp_client_get_thread(context);
Packit Service fa4841
Packit Service fa4841
	WaitForSingleObject(thread, INFINITE);
Packit Service fa4841
	GetExitCodeThread(thread, &dwExitCode);
Packit Bot d5d4a6
	rc = xf_exit_code_from_disconnect_reason(dwExitCode);
Packit Service fa4841
Packit Service fa4841
	freerdp_client_stop(context);
Packit Service fa4841
Packit Bot d5d4a6
out:
Packit Service fa4841
	freerdp_client_context_free(context);
Packit Service fa4841
Packit Bot d5d4a6
	return rc;
Packit Service fa4841
}