mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-21 22:53:37 +00:00
The presumption is that all file descriptors should be created with
the close-on-exec flag set. The only exception are file descriptors
that we want passed through to exec'd subprocesses (mainly pipes and
stdin/stdout/stderr).
For open calls, we pass O_CLOEXEC as an extra flag, eg:
fd = open ("foo", O_RDONLY|O_CLOEXEC);
This is a Linux-ism, but using a macro we can easily make it portable.
For sockets, similarly:
sock = socket (..., SOCK_STREAM|SOCK_CLOEXEC, ...);
For accepted sockets, we use the Linux accept4 system call which
allows flags to be supplied, but we use the Gnulib 'accept4' module to
make this portable.
For dup, dup2, we use the Linux dup3 system call, and the Gnulib
modules 'dup3' and 'cloexec'.
115 lines
1.8 KiB
Bash
Executable File
115 lines
1.8 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
usage() {
|
|
echo >&2 "\
|
|
Usage: $0 [OPTION]...
|
|
Bootstrap this package from the checked-out sources.
|
|
"
|
|
}
|
|
|
|
for option
|
|
do
|
|
case $option in
|
|
--help)
|
|
usage
|
|
exit;;
|
|
*)
|
|
echo >&2 "$0: $option: unknown option"
|
|
exit 1;;
|
|
esac
|
|
done
|
|
|
|
# Get gnulib files.
|
|
|
|
echo "$0: getting gnulib files..."
|
|
git submodule init || exit $?
|
|
git submodule update || exit $?
|
|
GNULIB_SRCDIR=.gnulib
|
|
|
|
ls po/*.po 2>/dev/null | sed 's|.*/||; s|\.po$||' > po/LINGUAS
|
|
|
|
# Run autopoint, to get po/Makevars.template:
|
|
# Also, released autopoint has the tendency to install macros that have
|
|
# been obsoleted in current gnulib, so run this before gnulib-tool.
|
|
autopoint --force
|
|
|
|
# Autoreconf runs aclocal before libtoolize, which causes spurious
|
|
# warnings if the initial aclocal is confused by the libtoolized
|
|
# (or worse out-of-date) macro directory.
|
|
libtoolize --copy --install
|
|
|
|
gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
|
|
<$gnulib_tool || exit
|
|
|
|
(cd daemon && mkdir -p tests lib && ../$gnulib_tool --update)
|
|
|
|
modules='
|
|
accept4
|
|
arpa_inet
|
|
byteswap
|
|
c-ctype
|
|
cloexec
|
|
closeout
|
|
connect
|
|
dup3
|
|
error
|
|
filevercmp
|
|
fsusage
|
|
fts
|
|
full-read
|
|
full-write
|
|
futimens
|
|
getaddrinfo
|
|
getline
|
|
gitlog-to-changelog
|
|
glob
|
|
gnu-make
|
|
gnumakefile
|
|
hash
|
|
hash-pjw
|
|
human
|
|
ignore-value
|
|
lock
|
|
maintainer-makefile
|
|
manywarnings
|
|
mkdtemp
|
|
netdb
|
|
netinet_in
|
|
openat
|
|
perror
|
|
pread
|
|
progname
|
|
read-file
|
|
readlink
|
|
select
|
|
setenv
|
|
sleep
|
|
socket
|
|
strchrnul
|
|
strerror
|
|
strndup
|
|
symlinkat
|
|
sys_select
|
|
sys_wait
|
|
vasprintf
|
|
vc-list-files
|
|
warnings
|
|
xalloc
|
|
xalloc-die
|
|
xstrtol
|
|
xstrtoll
|
|
xvasprintf
|
|
'
|
|
|
|
$gnulib_tool \
|
|
--avoid=dummy \
|
|
--with-tests \
|
|
--m4-base=m4 \
|
|
--source-base=gnulib/lib \
|
|
--tests-base=gnulib/tests \
|
|
--libtool \
|
|
--import $modules
|
|
|
|
# Disable autopoint and libtoolize, since they were already done above.
|
|
AUTOPOINT=true LIBTOOLIZE=true autoreconf --verbose --install
|