Rewrite the scrolling part in the man page so that each key become clearer on
what it does. Also officially document the Alt+{h,j,k,l} key alternatives and
Ctrl+A, Ctrl+E, '^', '$' keys (see issue #508).
__attribute__((nonnull)) will help catching "calling with NULL" mistake on
compile time.
I also convert xStrdup into a macro, that will do assert() inline when the
code is *not* built with -DNDEBUG . For release builds (with -DNDEBUG),
preprocessor trick will ensure that generated code remains the same.
This effectively reverts "Stricter strdup." 4674b4a732
If str is NULL upon the calling of strdup(), it should crash with SIGSEGV.
Just let it crash. Adding the "if (!str) fail();" code serves nothing but
bloat.
3 effects in this commit, with the first being the main one:
1. Fix the "`missing' script is too old or missing" warning. See:
<https://lists.gnu.org/archive/html/automake/2010-08/msg00108.html>
2. By moving AC_CANONICAL_TARGET down in order, we are now able to
set the directory for auxiliary scripts. For now it's still './'.
I added the line "AC_CONFIG_AUX_DIR([.])" to show that the directory
change is possible.
3. AC_USE_SYSTEM_EXTENSIONS includes checks from AC_PROG_CC, by moving
the former macro down, we can save size in 'configure' by not
generating repeated checks.
AC_HELP_STRING -> AS_HELP_STRING
AC_TRY_COMPILE -> AC_COMPILE_IFELSE([AC_LANG_PROGRAM([...])],...)
AC_CONFIG_HEADER -> AC_CONFIG_HEADERS
AC_PROG_LIBTOOL -> LT_INIT
Note: There might be more deprecated macros that I haven't noticed.
I just wish to avoid painful highlighting from my text editor (gedit)
that complains about them. :)
The (this_) token was not expanded properly, but the bug was not caught
because all uses of this macro specifies (this_)=this .
Also parenthesize macro tokens to prevent further problems.
Rationale (copied from htop issue #471):
The function name "setValues" is misleading. For most OOP (object-
oriented programming) contexts, setXXX functions mean they will change
some member variables of an object into something specified in
function arguments. But in the *Meter_setValues() case, the new values
are not from the arguments, but from a hard-coded source. The caller
is not supposed to change the values[] to anything it likes, but
rather to "update" the values from the source. Hence, updateValues is
a better name for this family of functions.