1a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#!/usr/bin/perl
2a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#
3a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat# This script has been (or is hereby) released into the public domain by
4a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat# its author, Karl J. Runge <runge@karlrunge.com>. This applies worldwide.
5a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat# 
6a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat# In case this is not legally possible: Karl J. Runge grants anyone the
7a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat# right to use this work for any purpose, without any conditions, unless
8a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat# such conditions are required by law.
9a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
10a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehatwhile (<>) {
11a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat	if (/^#include.*"rfb.h"/) {
12a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat		print <<END;
13a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#include <rfb/rfb.h>
14a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define Bool rfbBool
15a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define CARD32 uint32_t
16a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define CARD16 uint16_t
17a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define CARD8 uint8_t
18a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define xalloc malloc
19a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define xrealloc realloc
20a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define rfbTightNoZlib 0x0A
21a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define tightSubsampLevel correMaxWidth
22a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
23a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if LIBVNCSERVER_HAVE_LIBPTHREAD && LIBVNCSERVER_HAVE_TLS
24a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define TLS __thread
25a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
26a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define TLS
27a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
28a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
29a430b2b5ca4f0967836f5820e8f03adc17fc0a24San MehatEND
30a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat		next;
31a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat	}
32a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat	foreach $func (qw(FindBestSolidArea ExtendSolidArea CheckSolidTile CheckSolidTile##bpp CheckSolidTile8 CheckSolidTile16 CheckSolidTile32 Pack24)) {
33a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat		if (/static.*\b\Q$func\E\b/ && !exists $did_static{$func}) {
34a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat			$_ =~ s/\b\Q$func\E\b(\s*)\(/$func$1(rfbClientPtr cl, /;
35a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat			$did_static{$func} = 1;
36a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat		} elsif (/\b\Q$func\E\b\s*\(/) {
37a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat			$_ =~ s/\b\Q$func\E\b(\s*)\(/$func$1(cl, /;
38a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat		}
39a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat	}
40a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
41a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#	if (/^\s*subsampLevel\s*=\s*cl/) {
42a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#		$_ = "//$_";
43a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#		print "subsampLevel = 0;\n";
44a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#	}
45a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
46a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#	$_ =~ s/cl->tightQualityLevel;/cl->tightQualityLevel * 10;/;
47a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
48a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat	if (/^static\s+(Bool|int|CARD32|PALETTE|char|unsigned|tjhandle)\s+[^()]*;\s*$/) {
49a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat		$_ =~ s/^static/static TLS /;
50a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat	}
51a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
52a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat	$_ =~ s/rfbScreen.pfbMemory/cl->scaledScreen->frameBuffer/g;
53a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat	$_ =~ s/rfbScreen.paddedWidthInBytes/cl->scaledScreen->paddedWidthInBytes/g;
54a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat	$_ =~ s/rfbScreen.bitsPerPixel/cl->scaledScreen->bitsPerPixel/g;
55a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat	$_ =~ s/rfbServerFormat/cl->screen->serverFormat/g;
56a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
57a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat	if (/^(FindBestSolidArea|ExtendSolidArea|static void Pack24|CheckSolidTile)\(cl/) {
58a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat		$_ .= "rfbClientPtr cl;\n";
59a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat	}
60a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat	if (/^(CheckSolidTile##bpp)\(cl/) {
61a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat		$_ .= "rfbClientPtr cl; \\\n";
62a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat	}
63a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat	$_ =~ s/\bublen\b/cl->ublen/;
64a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat	$_ =~ s/\bupdateBuf\b/cl->updateBuf/;
65a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
66a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat	if (/cl->(rfbRectanglesSent|rfbBytesSent)/) {
67a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat		$_ = "//$_";
68a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat	}
69a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat	print;
70a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat}
71a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
72a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehatprint <<END;
73a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
74a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehatvoid rfbTightCleanup(rfbScreenInfoPtr screen) {
75a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat}
76a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
77a430b2b5ca4f0967836f5820e8f03adc17fc0a24San MehatEND
78a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
79a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
80