aboutsummaryrefslogtreecommitdiff
path: root/compat
AgeCommit message (Collapse)Author
2023-08-27compat: probe for strcasestr more thoroughlyMichael J Gruber
Depending on compiler (gcc, g++, clang) and standard options (c99, c11), string.h may or may not include strings.h, leading to possibly missing or conflicting declarations of strcasestr. Include both so that both detection and compilation phases use the same (possibly optimised) implementations. Suggested-by: Thomas Schneider <qsx@chaotikum.eu> Suggested-by: Florian Weimer <fweimer@redhat.com> Suggested-by: Tomi Ollila <tomi.ollila@iki.fi>
2021-04-24compat: rename {,notmuch_}canonicalize_file_nameĐoàn Trần Công Danh
When compat canonicalize_file_name was introduced, it was limited to C code only because it was used by C code only during that time. >From 5ec6fd4d, (lib/open: check for split configuration when creating database., 2021-02-16), lib/open.cc, which is C++, relies on the existent of canonicalize_file_name. However, we can't blindly enable canonicalize_file_name for C++ code, because different implementation has different additional signature for C++ and users can arbitrarily add -DHAVE_CANONICALIZE_FILE_NAME=0 to {C,CXX}FLAGS. Let's move our implementation into a util library. Helped-by: Tomi Ollila <tomi.ollila@iki.fi> Signed-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>
2020-08-09emacs: Use makefile-gmake-mode in Makefile*sJonas Bernoulli
Use `makefile-gmake-mode' instead of `makefile-mode' because the former also highlights ifdef et al. while the latter does not. "./Makefile.global" and one "Makefile.local" failed to specify any major mode at all but doing so is necessary because Emacs does not automatically figure out that these are Makefiles (of any flavor).
2019-06-14compat: run uncrustifyuncrustify
This is the result of running $ uncrustify --replace --config ../devel/uncrustify.cfg *.c *.h in the compat directory
2017-08-18Use rooted paths in .gitignore filesVladimir Panteleev
A leading / in paths in a .gitignore file matches the beginning of the path, meaning that for patterns without slashes, git will match files only in the current directory as opposed to in any subdirectory. Prefix relevant paths with / in .gitignore files, to prevent accidentally ignoring files in subdirectories and possibly slightly improve the performance of "git status".
2017-05-11compat: don't include compat.h from the feature test sourceJani Nikula
The feature test code should test the build environment, and none of the compat code should interfere with that. Don't include compat.h from the feature test source. There should be no functional changes here, but this is just the right thing to do.
2016-06-05Use https instead of http where possibleDaniel Kahn Gillmor
Many of the external links found in the notmuch source can be resolved using https instead of http. This changeset addresses as many as i could find, without touching the e-mail corpus or expected outputs found in tests.
2014-06-21configure: add workaround for systems without zlib.pcFelipe Contreras
Some systems (e.g. FreeBSD) might not have installed the appropriate pkg-config file as they should. We can workaround the issue by creating the .pc file they should have distributed. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
2014-04-08compat: add canonicalize_file_nameDavid Bremner
the POSIX 2008 behaviour of realpath is not available everywhere so we provide a simple wrapper function. We use (and provide) the gnu extension canonicalize_file_name to make it cleaner to test for the feature we need; otherwise we have to rely on realpath segfaulting if the second argument is null.
2014-02-14new: Detect dirent.d_type support at configure timeAustin Clements
Support for dirent.d_type is OS-specific. Previously, we used _DIRENT_HAVE_D_TYPE to detect support for this, but this is apparently a glic-ism (FreeBSD, for example, supports d_type, but does not define this). Since there's no cross-platform way to detect support for dirent.d_type, detect it using a test compile at configure time.
2013-08-23timegm: add portable implementation (Solaris support)Blake Jones
The timegm(3) function is a non-standard extension to libc which is available in GNU libc and on some BSDs. Although SunOS had this function in its libc, Solaris (unfortunately) removed it. This patch implements a very simple version of timegm() which is good enough for parse-time-string.c. Signed-off-by: Vladimir Marek <vlmarek@volny.cz>
2013-08-23strsep: check for availability (Solaris support)Blake Jones
Solaris does not ship a version of the strsep() function. This change adds a check to "configure" to see whether notmuch needs to provide its own implementation, and if so, it uses the new version in "compat/strsep.c" (which was copied from Mutt, and apparently before that from glibc). Signed-off-by: Vladimir Marek <vlmarek@volny.cz>
2013-08-23asctime: check for standards compliance (Solaris support)Vladimir Marek
Add checks to "configure" to see whether _POSIX_PTHREAD_SEMANTICS needs to be defined to get the right number of arguments in the prototypes for asctime_r(). Solaris' default implementation conforms to POSIX.1c Draft 6, rather than the final POSIX.1c spec. The standards-compliant version can be used by defining _POSIX_PTHREAD_SEMANTICS. This change also adds the file "compat/check_asctime.c", which configure uses to perform its check, and modifies compat/compat.h to define _POSIX_PTHREAD_SEMANTICS if configure detected it was needed. Signed-off-by: Vladimir Marek <vlmarek@volny.cz>
2013-08-23getpwuid: check for standards compliance (Solaris support)Blake Jones
Add checks to "configure" to see whether _POSIX_PTHREAD_SEMANTICS needs to be defined to get the right number of arguments in the prototypes for getpwuid_r(). Solaris' default implementation conforms to POSIX.1c Draft 6, rather than the final POSIX.1c spec. The standards-compliant version can be used by defining _POSIX_PTHREAD_SEMANTICS. This change also adds the file "compat/check_getpwuid.c", which configure uses to perform its check, and modifies compat/compat.h to define _POSIX_PTHREAD_SEMANTICS if configure detected it was needed. Signed-off-by: Vladimir Marek <vlmarek@volny.cz>
2012-09-27Extend compat/READMEJustus Winter
Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de>
2012-09-27Provide a NORETURN_ATTRIBUTE macro similar to PRINTF_ATTRIBUTEJustus Winter
This attribute is understood by gcc since version 2.5. clang provides support for testing for function attributes using __has_attribute. For other compilers this macro evaluates to the empty string. Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de>
2012-09-27Provide a __has_attribute compatibility macroJustus Winter
__has_attribute is defined by clang and tests whether a given function attribute is supported by clang. Add a compatibility macro for other compilers. Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de>
2012-01-21Silence buildbot warnings about unused resultsAustin Clements
This ignores the results of the two writes in sigint handlers even harder than before. While my libc lacks the declarations that trigger these warnings, this can be tested by adding the following to notmuch.h: __attribute__((warn_unused_result)) ssize_t write(int fd, const void *buf, size_t count);
2012-01-19Fix dependency generation for compat, test, and utilAustin Clements
This adds source files in compat, test, and util to SRCS so that the top-level Makefile.local will generate dependency files for them.
2011-06-23fix sum moar typos [text files]Pieter Praet
Various typo fixes in auxiliary text files included with the source, (README, TODO, etc.). Signed-off-by: Pieter Praet <pieter@praet.org> Edited-by: Carl Worth <cworth@cworth.org> Restricted to just text files.
2011-03-09build: Add support for non-source-directory builds.Carl Worth
Such as: mkdir build cd build ../configure make This is implemented by having the configure script set a srcdir variable in Makefile.config, and then sprinkling $(srcdir) into various make rules. We also use vpath directives to convince GNU make to find the source files from the original source directory.
2010-04-27Wrap the compat header in extern "C" { } when compiling C++ sourcesTomas Carnecky
This fixes a build error on OpenSolaris where the final liking of notmuch fails because the linker can't find strcasestr() referenced from thread.cc.
2010-04-14Add simplistic reimplementation of strcasestr to compat libraryDirk Hohndel
While all systems that I have access to support strcasestr, it is in fact not part of POSIX. So here's a fallback reimplementation based on POSIX functions. Signed-off-by: Dirk Hohndel <hohndel@infradead.org> Tested-by: Tomas Carnecky <tom@dbservice.com> (on OpenSolaris snv_134)
2010-04-14Fix up Makefile for build.Aaron Ecay
Must set extra_c(xx)flags before including subdir Makefile.local's, so that there is a blank slate that the subdirs can add on to. Must include subdir Makefile.local's before global one, otherwise the compat sources are not added to the list of those to be compiled. Signed-off-by: Aaron Ecay <aaronecay@gmail.com>
2010-04-06Move "config" test programs to "compat".Carl Worth
It makes sense to me to have the little tests for functionality right next to the comptability implementations of that same functionality. But also, this means I can now tab-complete ./configure from the three initial characters (rather than the seven required previously).
2010-04-03Makefile.local: Automatically use makefile modeDavid Edmondson
We add a magic line to the beginning of each Makefile.local file to help the editor know that it should use makefile mode for editing the file, (even though the filename isn't exactly "Makefile"). Edited-by: Carl Worth <cworth@cworth.org>: Expand treatment from emacs/Makefile.local to each instance of Makefile.local.
2010-03-10Makefile: Fix Makefiles to depend on all child Makefile fragments.Carl Worth
We were previously maintaining two lists of the child Makefile fragments---one for the includes and another for the dependencies. So, of course, they drifted and the dependency list wasn't up to date. We fix this by adding a single subdirs variable, and then using GNU Makefile substitution to generate both the include and the dependency lists. Some side effect of this change caused the '=' assignment of the dir variable to not work anymore. I'm not sure why that is, but using ':=' makes sense here and fixes the problem.
2010-01-06Makefiles: Use .DEFAULT to support arbitrary targets from sub directories.Carl Worth
Taking advantage of the .DEFAULT construct means that we won't need to explicitly list targets such as "clean", etc. in each sub-Makefile.
2009-12-01getdelim: Silence a (bogus) compiler warning.Carl Worth
Some compilers complain that result might be used uninitialized in this function. I believe such compilers simply aren't looking hard enough, but it's easy enough to silence them.
2009-12-01Makefile: Incorporate getline implementation into the build.Carl Worth
It's unconditional for a very short time. We expect to soon be building it only if necessary.
2009-12-01compat/getdelim: Silence a warning about mixing of signed/unsigned.Carl Worth
If the length is ever so large as to overflow, then we'll end up returning a negative value (which indicates an error anyway).
2009-12-01compat: Change includes from config.h to compat.h.Carl Worth
We may switch to using an autoconf-like config.h, but we're not doing that just yet.
2009-12-01compat: Add implementation of getline from gnulib.Carl Worth
These were copied from the gnulib git repository as of: commit 563c779682040ed4b89c9b4bbe428dcd8157c90a They come under the GNU GPL v3 (or later) exactly as notmuch is licensed.