fix, finalise (i.e. \nul-terminate) the first prepend if no PATH is set

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
cosmetics, fputs() error string components instead of fputc()ing them

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
chore, don't close stderr in diff subprocess so we can see errors when execvp() fails

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
cosmetics, provide better diagnostics for when execvp() or execl() fails

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
hygiene, as a means to pass on the failed differ child, unlink the fifo files so the open()'s in the parent wake up

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
cosmetics, one error message is enough, use the parent process to print it

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
hygiene, run the differ (setting up the diff child) before any other descriptors are opened

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
chore, lose xclosefrom(), no extraneous descriptors should be open

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
minor, import Raphael Javaux's fast_strstr.c (and refiddle it to xmemmem())

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
chore, check for splice() during configure

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
chore, build without GNU_SOURCE, as there are no GNUisms in the code

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
Merge branch 'code/hygiene'

* code/hygiene:
  chore, build without GNU_SOURCE, as there are no GNUisms in the code
  chore, check for splice() during configure
  minor, import Raphael Javaux's fast_strstr.c (and refiddle it to xmemmem())
  chore, lose xclosefrom(), no extraneous descriptors should be open
  hygiene, run the differ (setting up the diff child) before any other descriptors are opened
  cosmetics, one error message is enough, use the parent process to print it
  hygiene, as a means to pass on the failed differ child, unlink the fifo files so the open()'s in the parent wake up
  cosmetics, provide better diagnostics for when execvp() or execl() fails
  chore, don't close stderr in diff subprocess so we can see errors when execvp() fails
  cosmetics, fputs() error string components instead of fputc()ing them
  fix, finalise (i.e. \nul-terminate) the first prepend if no PATH is set
hygiene, use memccpy() to sanitise pointer to env string in prepend_path()

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
hygiene, check for failed malloc() in prepend_path()

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
hygiene, check for failed malloc() in bufexp()

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
Merge branch 'code/hygiene'

* code/hygiene:
  hygiene, check for failed malloc() in bufexp()
  hygiene, check for failed malloc() in prepend_path()
  hygiene, use memccpy() to sanitise pointer to env string in prepend_path()