aboutsummaryrefslogtreecommitdiffstats
path: root/win/rfb_win32/Win32Util.cxx
Commit message (Collapse)AuthorAgeFilesLines
* Use standard library naming for exceptionsPierre Ossman2024-11-061-3/+3
| | | | | This makes things more consistent since we mix with the standard library exceptions so often.
* Use standard exception classesPierre Ossman2024-11-061-1/+1
| | | | | Use the more specific already included exception classes for common errors to keep things more understandable.
* Split SystemException to handle WindowsPierre Ossman2024-10-091-3/+3
| | | | | | | | | | | | | Windows has (at least) two error namespaces, both errno and GetLastResult(). These overlap, so it is important we keep track of which one we are dealing with. To make things extra problematic, the BSD socket API normally uses errno, but on Windows it has been mapped in to the GetLastResult() namespace. Try to keep better control of this by using separate classes for the namespaces.
* Use nullptr in all C++ codePierre Ossman2024-06-241-4/+4
| | | | | It's more readable than 0, and a bit safer than NULL, so let's try to follow modern norms.
* Remove "str" prefix from string helpersPierre Ossman2023-02-041-1/+1
| | | | | This matches the naming in STL, which is what we are mostly mimicing now that we are using std::string for these functions.
* Use std::string instead of CharArrayPierre Ossman2023-02-041-4/+4
| | | | | Let's use a more common type instead of something homegrown. Should be more familiar to new developers.
* Free char buffer directlyPierre Ossman2023-02-041-0/+5
| | | | | It's extreme overkill to inherit from CharArray just to get the automatic freeing of the buffer when the object is destroyed.
* Make strSplit() simpler and saferPierre Ossman2023-02-041-5/+0
| | | | | | | Get rid of all the magical re-allocation and shuffling and instead just return a new set of strings that is fully splitted. Will consume a bit more memory, but is a lot safer to use as there is less confusion about ownership of memory.
* Return std::string instead of dynamic allocationsPierre Ossman2023-02-041-3/+3
| | | | | | We mostly use classical C strings, but the memory management around them can get confusing and error prone. Let's use std::string for the cases where we need to return a newly allocated string.
* Get rid of TCHAR magicPierre Ossman2023-02-041-11/+11
| | | | | We never use Windows' "UNICODE" mode anyway, so let's get rid of this complexity.
* Move hex conversion helpers to utilPierre Ossman2023-02-041-3/+3
| | | | | These are used here and there so let's make them more general rather than hiding them in the stream classes.
* Be consistent in including config.hPierre Ossman2021-12-301-0/+4
| | | | | | The generally recommended way is to include it from source files, not headers. We had a mix of both. Let's try to be consistent and follow the recommended way.
* printf does not accept CStr()sPeter Åstrand2008-12-101-1/+1
| | | | git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@3366 3789f03b-4d11-0410-bbf8-ca57d06f2519
* MinGW tweak: Constructs such as:Peter Åstrand2008-12-091-1/+1
| | | | | | | | | | | | | | | | | | CharArray somevariable = "somestring" ...are not allowed. It seems like MSVC does not correctly check accessibility for temporaries. Chapter 12.2 of ISO/IEC 14882:2003(E): > Even when the creation of the temporary object is avoided (12.8), > all the semantic restrictions must be respected as if the temporary > object was created. [Example: even if the copy constructor is not > called, all the semantic restrictions, such as accessibility > (clause 11), shall be satisfied. ] git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@3344 3789f03b-4d11-0410-bbf8-ca57d06f2519
* We are using printf - stdio.h must be includedPeter Åstrand2008-12-021-0/+1
| | | | git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@3278 3789f03b-4d11-0410-bbf8-ca57d06f2519
* Migrating to new directory structure adopted from the RealVNC's source tree. ↵Constantin Kaplinsky2006-05-251-0/+114
More changes will follow. git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@591 3789f03b-4d11-0410-bbf8-ca57d06f2519
*/ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<parent>
		<groupId>org.aspectj</groupId>
		<artifactId>aspectj-parent</artifactId>
		<version>1.9.9</version>
	</parent>

	<artifactId>aspectjrt</artifactId>

	<name>AspectJ Runtime</name>
	<description>
		The AspectJ runtime is a small library necessary to run Java programs enhanced by AspectJ aspects during a previous
		compile-time or post-compile-time (binary weaving) build step.
	</description>
	<url>https://www.eclipse.org/aspectj/</url>

	<licenses>
		<license>
			<name>Eclipse Public License - v 2.0</name>
			<url>https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt</url>
			<distribution>repo</distribution>
		</license>
	</licenses>

	<developers>
		<developer>
			<id>aclement</id>
			<name>Andy Clement</name>
			<email>aclement@vmware.com</email>
		</developer>
		<developer>
			<id>kriegaex</id>
			<name>Alexander Kriegisch</name>
			<email>kriegaex@aspectj.dev</email>
		</developer>
	</developers>

	<scm>
		<url>https://github.com/eclipse/org.aspectj</url>
		<connection>scm:git:https://github.com/eclipse/org.aspectj.git</connection>
		<developerConnection>scm:git:ssh://git@github.com:eclipse/org.aspectj.git</developerConnection>
	</scm>

	<properties>
		<!-- By default, do not deploy artifacts - but deploy this public one -->
		<maven.deploy.skip>false</maven.deploy.skip>
		<!-- By default, do not sign artifacts - but sign this public one -->
		<maven.gpg.skip>false</maven.gpg.skip>
	</properties>

	<build>
		<plugins>

			<!-- Skip creation of main + test JARs -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<executions>
					<execution>
						<id>default-jar</id>
						<phase>none</phase>
					</execution>
					<execution>
						<id>test-jar</id>
						<phase>none</phase>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-assembly-plugin</artifactId>
				<executions>
					<execution>
						<id>aspectjrt-assembly</id>
						<phase>package</phase>
						<goals>
							<goal>single</goal>
						</goals>
						<configuration>
							<finalName>aspectjrt-${project.version}</finalName>
							<appendAssemblyId>false</appendAssemblyId>
							<archive>
								<manifestEntries>
									<Automatic-Module-Name>org.aspectj.runtime</Automatic-Module-Name>
								</manifestEntries>

								<manifestSections>
									<manifestSection>
										<name>org/aspectj/lang/</name>
										<manifestEntries>

											<Specification-Title>AspectJ Runtime Classes</Specification-Title>
											<Specification-Version>${project.version}</Specification-Version>
											<Specification-Vendor>https://www.eclipse.org/aspectj/</Specification-Vendor>

											<Implementation-Title>org.aspectj.runtime</Implementation-Title>
											<Implementation-Version>${project.version}</Implementation-Version>
											<Implementation-Vendor>https://www.eclipse.org/aspectj/</Implementation-Vendor>

											<Bundle-Name>AspectJ Runtime</Bundle-Name>
											<Bundle-Version>${project.version}</Bundle-Version>
											<!--
												WARNING: Please avoid line breaks in manifest values! They are passed on like this:
												Assembly Plugin -> Plexus Archiver -> JRE java.util.jar.Manifest.write(OutputStream).

												The JRE Manifest class inserts hard line breaks always after 72 characters, no matter if those
												72 characters contain line feeds, tabs or spaces. Hence, it can happen that unwanted blank lines
												end up in the middle of a manifest section, making the manifest invalid. Calls like e.g.
												'java -cp aspectjtools.jar org.aspectj.tools.ajc.Main' can then fail with the absolutely
												unexpected error 'Could not find or load main class org.aspectj.tools.ajc.Main'.

												Alexander Kriegisch created this bug ticket:
												https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8263924

												In IntelliJ IDEA you can deactivate wrapping text inside XML tags like this:
												File | Settings | Editor | Code Style | XML | Wrap text -> deactivate
											-->
											<Bundle-Copyright>(C) Copyright 1999-2001 Xerox Corporation, 2002 Palo Alto Research Center, Incorporated (PARC), 2003-2020 Contributors. All Rights Reserved</Bundle-Copyright>
										</manifestEntries>
									</manifestSection>
								</manifestSections>
							</archive>

							<descriptors>
								<descriptor>aspectjrt-assembly.xml</descriptor>
							</descriptors>
						</configuration>
					</execution>

					<execution>
						<id>aspectjrt-sources-assembly</id>
						<phase>package</phase>
						<goals>
							<goal>single</goal>
						</goals>
						<configuration>
							<!-- The assembly ID 'sources' becomes the artifact classifier, exactly what we want -->
							<appendAssemblyId>true</appendAssemblyId>
							<skipAssembly>${maven.source.skip}</skipAssembly>
							<archive>
							</archive>
							<descriptors>
								<descriptor>aspectjrt-sources-assembly.xml</descriptor>
							</descriptors>
						</configuration>
					</execution>

				</executions>
			</plugin>

			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>truezip-maven-plugin</artifactId>
				<executions>
					<execution>
						<id>unzip-relocated-sources</id>
						<phase>package</phase>
						<goals>
							<goal>copy</goal>
						</goals>
						<configuration>
							<!--
								Skip, if javadoc generation is also meant to be skipped, which is the default unless the 'release'
								profile is active or the property is overridden manually to be false. See property definitions in parent
								POM for default case and release profile.
							-->
							<skip>${maven.javadoc.skip}</skip>
							<verbose>true</verbose>
							<fileset>
								<directory>${project.build.directory}/${project.build.finalName}-sources.jar</directory>
								<outputDirectory>${project.build.directory}/unpacked-sources</outputDirectory>
							</fileset>
						</configuration>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-javadoc-plugin</artifactId>
				<executions>
					<execution>
						<id>javadoc-jar</id>
						<phase>package</phase>
						<goals>
							<goal>jar</goal>
						</goals>
						<configuration>
							<sourcepath>${project.build.directory}/unpacked-sources</sourcepath>
							<!-- TODO: Include 'aj' package for ASM-renamed contained in aspectjtools? -->
							<subpackages>org.aspectj</subpackages>
							<!-- Deactivate doclint checks in order to suppress errors -->
							<doclint>none</doclint>
							<!-- Generate class use xref, making javadocs considerably bigger, but also more informative -->
							<use>true</use>
							<!-- FIXME: Why does it fail without this parameter? -->
							<javadocVersion>8</javadocVersion>
						</configuration>
					</execution>
				</executions>
			</plugin>

			<!-- Caveat: Attaching the flattened POM needs packaging=jar, so do not use packaging=pom for this module -->
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>flatten-maven-plugin</artifactId>
				<executions>
					<!-- Remove dependencies declared in this POM (if any) from uber JAR and strip down POM -->
					<execution>
						<id>flatten</id>
						<phase>process-resources</phase>
						<goals>
							<goal>flatten</goal>
						</goals>
						<configuration>
							<flattenMode>oss</flattenMode>
							<pomElements>
								<dependencies>remove</dependencies>
								<repositories>remove</repositories>
							</pomElements>
							<outputDirectory>${project.build.directory}</outputDirectory>
							<flattenedPomFilename>flattened-pom.xml</flattenedPomFilename>
						</configuration>
					</execution>
				</executions>
			</plugin>

			<!-- Deploy this module to Nexus (Sonatype OSSRH, releases promotable to Maven Central) -->
			<plugin>
				<groupId>org.sonatype.plugins</groupId>
				<artifactId>nexus-staging-maven-plugin</artifactId>
			</plugin>

		</plugins>
		<pluginManagement>
			<plugins>
				<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
				<plugin>
					<groupId>org.eclipse.m2e</groupId>
					<artifactId>lifecycle-mapping</artifactId>
					<version>1.0.0</version>
					<configuration>
						<lifecycleMappingMetadata>
							<pluginExecutions>
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>
											org.codehaus.mojo
										</groupId>
										<artifactId>
											flatten-maven-plugin
										</artifactId>
										<versionRange>
											[1.2.2,)
										</versionRange>
										<goals>
											<goal>flatten</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<ignore></ignore>
									</action>
								</pluginExecution>
							</pluginExecutions>
						</lifecycleMappingMetadata>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>

	<dependencies>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>runtime</artifactId>
			<version>${project.version}</version>
		</dependency>
	</dependencies>

</project>