tm_mon in `struct tm` uses 0 for January.
`struct session_data` and `struct SCP_DISCONNECTED_SESSION` don't specify
how dates are stored. But considering the code in sestest and sesadmin,
all date components are stored as displayed.
libdir is for shared and static libraries. Some xrdp libraries are loaded
dynamically from a non-standard directory, so they are used like modules.
Having separate libdir and moduledir would eventually allow to separate
dynamically loaded modules from shared libraries.
That can cause unexpected behavior, especially with third party tools.
The ignored files will be lost if the source tree is re-imported to
another git repository, unless special care is taken.
Whitelist all non-generated makefiles.
To whitelist instfiles/pam.d/xrdp-sesman, add path to all generated
executables listed in the top-level .gitignore, sort .gitignore
alphabetically.
Add mkinstalldir, it's used by Automake on some systems.
Automake 1.6.x cannot deal with conditional EXTRA_LIBS. Automake 1.7 and
1.7.1 cannot deal with line continuation in SUBDIRS.
It is important to have correct requirements to know what Automake
features can be used.
Strictly speaking, both existence and readability should be checked.
However, chances of ~/.profile being a directory or a FIFO are very small
compared to its chances of being non-readable due to some
misconfiguration.
Put "if" and "then" on the same line for consistency with other checks.
Improve comment and pseudocode formatting.
Markdown is easily readable in text editors. Unlike ODT, markdown can be
patched. GitHub shows markdown with pretty formatting.
Remove bad examples. Improve explanations for good examples.
Use Unicode finger sign to work around the issue of code block after a
list.
Make coding_style.md distributable.
AC_CONFIG_MACRO_DIRS requires a very recent Automake, much newer than the
declared version 1.6 (even 1.11 doesn't work). AC_CONFIG_MACRO_DIR is
defined by Autoconf starting with version 2.58, so it's within the
currently declared constraints.
Notes about software design should not be shown as warnings to everybody
who compiles the code. Warnings should be about unexpected conditions
detected at the compile time.
Use AC_PATH_XTRA to search for X11 in configure.ac. In Makefiles, add
X_CFLAGS to AM_CFLAGS for the source compilation. Add X_LIBS to LDFLAGS.
Add X_PRE_LIBS and X_EXTRA_LIBS to LDADD.
With this patch, X Windows system is correctly detected on Mac OS X.
"make distcheck" sets prefix to a user-owned directory, compiles code and
runs "make install". That fails if systemd files need to be installed, as
their location if not relative to the prefix.
configure.ac already exists. Its timestamp doesn't need to be updated.
autoreconf takes care of the timestamps.
Since "foreign" is used in Makefile.am, no standard GNU files are
required. Distributing empty files like README could be disappointing for
the users.
Keeping separate files is more maintainable than merging them into a
single aclocal.m4 file. It is easier for users to understand where those
files come from.
Automake knows how to distribute files in the m4 directory.
AM_CPPFLAGS is for flags passed to the preprocessor, such as defines and
includes. AM_CFLAGS is for flags affecting the compiler, such as debug
and optimization settings.
INCLUDES is an obsolete name. Users can pass INCLUDES and break
compilation. AM_CPPFLAGS is more explicit that the flags come from
Automake and should not be overridden.
Absolute symlinks break when the source is moved to another location. In
the best case, the symlink will be replaced with a copy, but that creates
code duplication. A user who got the packaged source may decide to change
one config.c without realizing that another config.c will get the same
changes.
Don't ignore config.c, it's a regular source file now, albeit very
short.
Testing done: compiled inside and outside build directory.
To add flags to the compiler, CFLAGS, CPPFLAGS or LDFLAGS can be used on
the configure command line.
The need to add flags depends on the location of the headers and
libraries of the dependencies, which is orthogonal to the directory where
xrdp will be installed.
The implementation in configure.ac has a stray closing bracket, making
GOT_PREFIX true even if --prefix is not passed.
The implementation is inconsistent - the only affected makefiles are for
xrdp and libxrdp.
Changing rpath manually is wrong in most cases. Libtool should be able to
set rpath correctly on its own.
Using $(prefix)/lib ignores the libdir setting. For many 64-bit systems,
/usr/lib is used for 32-bit libraries. Adding 32-bit libraries to the
rpath slows down 64-bit executables, as the dynamic loader searches for
libraries in a wrong directory.
There is no way to disable GOT_PREFIX if --prefix has to be passed.
Fedora RPM patches configure.ac and needs to rerun autoconf and automake
after that.