1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-09 17:38:00 +00:00
putty-source/cmake/cmake.h.in
Simon Tatham cfda9585ac Build option to disable scrollback compression.
This was requested by a downstream of the code, who wanted to change
the time/space tradeoff in the terminal. I currently have no plans to
change this setting for upstream PuTTY, although there is a cmake
option for it just to make testing it easy.

To avoid sprinkling ifdefs over the whole terminal code, the strategy
is to keep the separate type 'compressed_scrollback_line', and turn it
into a typedef for a 'termline *'. So compressline() becomes almost
trivial, and decompressline() even more so.

Memory management is the fiddly part. To make this work sensibly on
both sides, I've broken up each of compressline() and decompressline()
into two versions, one of which takes ownership of (and logically
speaking frees) its input, and the other doesn't. So at call sites
where a function was followed by a free, it's now calling the
'and_free' version of the function, and where the input object was
reused afterwards, it's calling the 'no_free' version. This means that
in different branches of the #if, I can make one function call the
other or vice versa, and no call site is stuck with having to do
things in a more roundabout way than necessary.

The freeing of the _return_ value from decompressline() is handled for
us, because termlines already have a 'temporary' flag which is set
when they're returned from the decompressor, and anyone receiving a
termline from lineptr() calls unlineptr() when they're finished with
it, which will _conditionally_ free it, depending on that 'temporary'
flag. So in the new mode, 'temporary' is never set at all, and all
those unlineptr() calls do nothing.

However, we also still need to free compressed lines properly when
they're actually being thrown away (scrolled off the top of the
scrollback, or cleaned up in term_free), and for that, I've made a new
special-purpose free_compressed_line() function.

(cherry picked from commit 5f2eff2fea)
2023-04-19 14:28:36 +01:00

62 lines
1.7 KiB
C

#cmakedefine NO_IPV6
#cmakedefine NO_GSSAPI
#cmakedefine STATIC_GSSAPI
#cmakedefine NO_SCROLLBACK_COMPRESSION
#cmakedefine NO_MULTIMON
#cmakedefine01 HAVE_WINRESRC_H
#cmakedefine01 HAVE_WINRES_H
#cmakedefine01 HAVE_WIN_H
#cmakedefine01 HAVE_NO_STDINT_H
#cmakedefine01 HAVE_AFUNIX_H
#cmakedefine01 HAVE_GCP_RESULTSW
#cmakedefine01 HAVE_ADDDLLDIRECTORY
#cmakedefine01 HAVE_GETNAMEDPIPECLIENTPROCESSID
#cmakedefine01 HAVE_SETDEFAULTDLLDIRECTORIES
#cmakedefine01 HAVE_STRTOUMAX
#cmakedefine01 HAVE_DWMAPI_H
#cmakedefine NOT_X_WINDOWS
#cmakedefine OMIT_UTMP
#cmakedefine01 HAVE_ASM_HWCAP_H
#cmakedefine01 HAVE_SYS_AUXV_H
#cmakedefine01 HAVE_SYS_SYSCTL_H
#cmakedefine01 HAVE_SYS_TYPES_H
#cmakedefine01 HAVE_GLOB_H
#cmakedefine01 HAVE_UTMP_H
#cmakedefine01 HAVE_FUTIMES
#cmakedefine01 HAVE_GETADDRINFO
#cmakedefine01 HAVE_POSIX_OPENPT
#cmakedefine01 HAVE_PTSNAME
#cmakedefine01 HAVE_SETRESUID
#cmakedefine01 HAVE_SETRESGID
#cmakedefine01 HAVE_STRSIGNAL
#cmakedefine01 HAVE_UPDWTMPX
#cmakedefine01 HAVE_FSTATAT
#cmakedefine01 HAVE_DIRFD
#cmakedefine01 HAVE_SETPWENT
#cmakedefine01 HAVE_ENDPWENT
#cmakedefine01 HAVE_GETAUXVAL
#cmakedefine01 HAVE_ELF_AUX_INFO
#cmakedefine01 HAVE_SYSCTLBYNAME
#cmakedefine01 HAVE_CLOCK_MONOTONIC
#cmakedefine01 HAVE_CLOCK_GETTIME
#cmakedefine01 HAVE_SO_PEERCRED
#cmakedefine01 HAVE_NULLARY_SETPGRP
#cmakedefine01 HAVE_BINARY_SETPGRP
#cmakedefine01 HAVE_PANGO_FONT_FAMILY_IS_MONOSPACE
#cmakedefine01 HAVE_PANGO_FONT_MAP_LIST_FAMILIES
#cmakedefine01 HAVE_AES_NI
#cmakedefine01 HAVE_SHA_NI
#cmakedefine01 HAVE_SHAINTRIN_H
#cmakedefine01 HAVE_CLMUL
#cmakedefine01 HAVE_NEON_CRYPTO
#cmakedefine01 HAVE_NEON_PMULL
#cmakedefine01 HAVE_NEON_VADDQ_P128
#cmakedefine01 HAVE_NEON_SHA512
#cmakedefine01 HAVE_NEON_SHA512_INTRINSICS
#cmakedefine01 USE_ARM64_NEON_H