コード例 #1
0
ファイル: file.c プロジェクト: kldmurshed/FreeRDP
BOOL freerdp_client_write_rdp_file(const rdpFile* file, const char* name, BOOL unicode)
{
	FILE* fp;
	int length;
	char* buffer;
	int status = 0;
	WCHAR* unicodestr = NULL;

	length = (int) freerdp_client_write_rdp_file_buffer(file, NULL, 0);

	if (length < 0)
	{
		DEBUG_WARN( "freerdp_client_write_rdp_file: error determining buffer size.\n");
		return FALSE;
	}

	buffer = (char*) malloc((length + 1) * sizeof(char));

	if (freerdp_client_write_rdp_file_buffer(file, buffer, length + 1) != length)
	{
		DEBUG_WARN( "freerdp_client_write_rdp_file: error writing to output buffer\n");
		free(buffer);
		return FALSE;
	}

	fp = fopen(name, "w+b");

	if (fp)
	{
		if (unicode)
		{
			ConvertToUnicode(CP_UTF8, 0, buffer, length, &unicodestr, 0);

			/* Write multi-byte header */
			fwrite(BOM_UTF16_LE, sizeof(BYTE), 2, fp);
			fwrite(unicodestr, 2, length, fp);

			free(unicodestr);
		}
		else
		{
			fwrite(buffer, 1, length, fp);
		}

		status = fflush(fp);
		status = fclose(fp);
	}

	if (buffer)
		free(buffer);

	return (status == 0) ? TRUE : FALSE;
}
コード例 #2
0
ファイル: file.c プロジェクト: C-o-r-E/FreeRDP
BOOL freerdp_client_write_rdp_file(rdpFile* file, const char* name, BOOL unicode)
{
    int rc = 0;
    char* buffer;
    int len, len2;
    FILE* fp = NULL;
    WCHAR* unicodestr = NULL;

    len = freerdp_client_write_rdp_file_buffer(file, NULL, 0);

    if (len <= 0)
    {
        fprintf(stderr, "freerdp_client_write_rdp_file: Error determining buffer size.\n");
        return FALSE;
    }

    buffer = (char*) malloc((len + 1) * sizeof(char));
    len2 = freerdp_client_write_rdp_file_buffer(file, buffer, len + 1);

    if (len2 == len)
    {
        fp = fopen(name, "w+b");

        if (fp != NULL)
        {
            if (unicode)
            {
                ConvertToUnicode(CP_UTF8, 0, buffer, len, &unicodestr, 0);

                // Write multi-byte header
                fwrite(BOM_UTF16_LE, sizeof(BYTE), 2, fp);
                fwrite(unicodestr, 2, len, fp);

                free(unicodestr);
            }
            else
            {
                fwrite(buffer, 1, len, fp);
            }

            rc = fflush(fp);
            rc = fclose(fp);
        }
    }

    if (buffer != NULL)
        free(buffer);

    return (rc == 0);
}