Update to xsm 1.0.4

This commit is contained in:
matthieu 2018-05-21 18:33:48 +00:00
parent 84bc3460e2
commit 3a44be172c
15 changed files with 593 additions and 75 deletions

View File

@ -1,3 +1,109 @@
commit cae8e0a4db186da3556bdab944b61eb540e6685c
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Fri Mar 9 20:24:29 2018 -0800
xsm 1.0.4
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
commit 52016a5efdf549ffb2a3fb54ce0d0e4e110957f2
Author: Mihail Konev <k.mvc@ya.ru>
Date: Thu Jan 26 14:00:21 2017 +1000
autogen: add default patch prefix
Signed-off-by: Mihail Konev <k.mvc@ya.ru>
commit 730ae572b17c0d54798033375a7a6b1999ca7ef5
Author: Emil Velikov <emil.l.velikov@gmail.com>
Date: Mon Mar 9 12:00:52 2015 +0000
autogen.sh: use quoted string variables
Place quotes around the $srcdir, $ORIGDIR and $0 variables to prevent
fall-outs, when they contain space.
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
commit 2eb104d487546dac7c257f0f359d5f050fc1cdcc
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue Jan 24 10:32:07 2017 +1000
autogen.sh: use exec instead of waiting for configure to finish
Syncs the invocation of configure with the one from the server.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
commit 6c335e1c315a68283b1303afb06a3d5a34adab83
Author: Thomas Klausner <wiz@NetBSD.org>
Date: Wed Feb 25 22:22:50 2015 +0100
Close file descriptors on exec.
Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Signed-off-by: Thomas Klausner <wiz@NetBSD.org>
commit 0caed2fbce401e48d55ebfeda968e9ea8012f01d
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Tue Jun 3 23:28:38 2014 -0700
Print which option was in error along with usage message
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
commit cf3acd85392869ff35dc4869d66455363890e05d
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Tue Jun 3 23:23:34 2014 -0700
autogen.sh: Honor NOCONFIGURE=1
See http://people.gnome.org/~walters/docs/build-api.txt
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
commit 23ed6c7d6d0f13788a30ed6fe13c0cb2e15d9124
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Tue Jun 3 23:23:34 2014 -0700
configure: Drop AM_MAINTAINER_MODE
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
commit ab1fd5041b784747bec58f4c8ccf069c8920402b
Author: Gaetan Nadon <memsize@videotron.ca>
Date: Tue Dec 17 11:08:50 2013 -0500
Remove obsolete Imake SIGNALRETURNSINT
Assume signal handlers return void, as C89 requires
Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
commit 9f4bee64da58ed95923ceee4abfe56d5125974f6
Author: Stéphane Aulery <lkppo@free.fr>
Date: Thu Jul 4 00:53:43 2013 +0200
Improve help messages & man page
Signed-off-by: Stéphane Aulery <lkppo@free.fr>
Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
commit 9a7429ed7734531ca313d8c1f724bcb07c33ff54
Author: Stéphane Aulery <lkppo@free.fr>
Date: Sat Jul 6 15:40:56 2013 +0200
Drop CRAY support
Signed-off-by: Stéphane Aulery <lkppo@free.fr>
Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
commit 5eaa2f649cf594f55bae32a46ae6e65a68656bf8 commit 5eaa2f649cf594f55bae32a46ae6e65a68656bf8
Author: Alan Coopersmith <alan.coopersmith@oracle.com> Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Sun Feb 10 15:55:57 2013 -0800 Date: Sun Feb 10 15:55:57 2013 -0800

View File

@ -77,8 +77,8 @@ subdir = .
DIST_COMMON = README $(am__configure_deps) $(dist_appdefault_DATA) \ DIST_COMMON = README $(am__configure_deps) $(dist_appdefault_DATA) \
$(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
$(srcdir)/config.h.in $(top_srcdir)/configure COPYING \ $(srcdir)/config.h.in $(top_srcdir)/configure COPYING \
ChangeLog INSTALL config.guess config.sub depcomp install-sh \ ChangeLog INSTALL compile config.guess config.sub depcomp \
missing install-sh missing
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \

64
app/xsm/aclocal.m4 vendored
View File

@ -1242,7 +1242,7 @@ AC_SUBST([am__untar])
dnl xorg-macros.m4. Generated from xorg-macros.m4.in xorgversion.m4 by configure. dnl xorg-macros.m4. Generated from xorg-macros.m4.in xorgversion.m4 by configure.
dnl dnl
dnl Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. dnl Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
dnl dnl
dnl Permission is hereby granted, free of charge, to any person obtaining a dnl Permission is hereby granted, free of charge, to any person obtaining a
dnl copy of this software and associated documentation files (the "Software"), dnl copy of this software and associated documentation files (the "Software"),
@ -1279,7 +1279,7 @@ dnl DEALINGS IN THE SOFTWARE.
# See the "minimum version" comment for each macro you use to see what # See the "minimum version" comment for each macro you use to see what
# version you require. # version you require.
m4_defun([XORG_MACROS_VERSION],[ m4_defun([XORG_MACROS_VERSION],[
m4_define([vers_have], [1.19.0]) m4_define([vers_have], [1.19.2])
m4_define([maj_have], m4_substr(vers_have, 0, m4_index(vers_have, [.]))) m4_define([maj_have], m4_substr(vers_have, 0, m4_index(vers_have, [.])))
m4_define([maj_needed], m4_substr([$1], 0, m4_index([$1], [.]))) m4_define([maj_needed], m4_substr([$1], 0, m4_index([$1], [.])))
m4_if(m4_cmp(maj_have, maj_needed), 0,, m4_if(m4_cmp(maj_have, maj_needed), 0,,
@ -1357,6 +1357,17 @@ AC_DEFUN([XORG_MANPAGE_SECTIONS],[
AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_CANONICAL_HOST])
AC_REQUIRE([AC_PROG_SED]) AC_REQUIRE([AC_PROG_SED])
case $host_os in
solaris*)
# Solaris 2.0 - 11.3 use SysV man page section numbers, so we
# check for a man page file found in later versions that use
# traditional section numbers instead
AC_CHECK_FILE([/usr/share/man/man7/attributes.7],
[SYSV_MAN_SECTIONS=false], [SYSV_MAN_SECTIONS=true])
;;
*) SYSV_MAN_SECTIONS=false ;;
esac
if test x$APP_MAN_SUFFIX = x ; then if test x$APP_MAN_SUFFIX = x ; then
APP_MAN_SUFFIX=1 APP_MAN_SUFFIX=1
fi fi
@ -1372,9 +1383,9 @@ if test x$LIB_MAN_DIR = x ; then
fi fi
if test x$FILE_MAN_SUFFIX = x ; then if test x$FILE_MAN_SUFFIX = x ; then
case $host_os in case $SYSV_MAN_SECTIONS in
solaris*) FILE_MAN_SUFFIX=4 ;; true) FILE_MAN_SUFFIX=4 ;;
*) FILE_MAN_SUFFIX=5 ;; *) FILE_MAN_SUFFIX=5 ;;
esac esac
fi fi
if test x$FILE_MAN_DIR = x ; then if test x$FILE_MAN_DIR = x ; then
@ -1382,9 +1393,9 @@ if test x$FILE_MAN_DIR = x ; then
fi fi
if test x$MISC_MAN_SUFFIX = x ; then if test x$MISC_MAN_SUFFIX = x ; then
case $host_os in case $SYSV_MAN_SECTIONS in
solaris*) MISC_MAN_SUFFIX=5 ;; true) MISC_MAN_SUFFIX=5 ;;
*) MISC_MAN_SUFFIX=7 ;; *) MISC_MAN_SUFFIX=7 ;;
esac esac
fi fi
if test x$MISC_MAN_DIR = x ; then if test x$MISC_MAN_DIR = x ; then
@ -1392,9 +1403,9 @@ if test x$MISC_MAN_DIR = x ; then
fi fi
if test x$DRIVER_MAN_SUFFIX = x ; then if test x$DRIVER_MAN_SUFFIX = x ; then
case $host_os in case $SYSV_MAN_SECTIONS in
solaris*) DRIVER_MAN_SUFFIX=7 ;; true) DRIVER_MAN_SUFFIX=7 ;;
*) DRIVER_MAN_SUFFIX=4 ;; *) DRIVER_MAN_SUFFIX=4 ;;
esac esac
fi fi
if test x$DRIVER_MAN_DIR = x ; then if test x$DRIVER_MAN_DIR = x ; then
@ -1402,9 +1413,9 @@ if test x$DRIVER_MAN_DIR = x ; then
fi fi
if test x$ADMIN_MAN_SUFFIX = x ; then if test x$ADMIN_MAN_SUFFIX = x ; then
case $host_os in case $SYSV_MAN_SECTIONS in
solaris*) ADMIN_MAN_SUFFIX=1m ;; true) ADMIN_MAN_SUFFIX=1m ;;
*) ADMIN_MAN_SUFFIX=8 ;; *) ADMIN_MAN_SUFFIX=8 ;;
esac esac
fi fi
if test x$ADMIN_MAN_DIR = x ; then if test x$ADMIN_MAN_DIR = x ; then
@ -1665,13 +1676,24 @@ m4_ifval([$1],
fi]) fi])
# Test for the ability of xmlto to generate a text target # Test for the ability of xmlto to generate a text target
#
# NOTE: xmlto 0.0.27 or higher return a non-zero return code in the
# following test for empty XML docbook files.
# For compatibility reasons use the following empty XML docbook file and if
# it fails try it again with a non-empty XML file.
have_xmlto_text=no have_xmlto_text=no
cat > conftest.xml << "EOF" cat > conftest.xml << "EOF"
EOF EOF
AS_IF([test "$have_xmlto" = yes], AS_IF([test "$have_xmlto" = yes],
[AS_IF([$XMLTO --skip-validation txt conftest.xml >/dev/null 2>&1], [AS_IF([$XMLTO --skip-validation txt conftest.xml >/dev/null 2>&1],
[have_xmlto_text=yes], [have_xmlto_text=yes],
[AC_MSG_WARN([xmlto cannot generate text format, this format skipped])])]) [# Try it again with a non-empty XML file.
cat > conftest.xml << "EOF"
<x></x>
EOF
AS_IF([$XMLTO --skip-validation txt conftest.xml >/dev/null 2>&1],
[have_xmlto_text=yes],
[AC_MSG_WARN([xmlto cannot generate text format, this format skipped])])])])
rm -f conftest.xml rm -f conftest.xml
AM_CONDITIONAL([HAVE_XMLTO_TEXT], [test $have_xmlto_text = yes]) AM_CONDITIONAL([HAVE_XMLTO_TEXT], [test $have_xmlto_text = yes])
AM_CONDITIONAL([HAVE_XMLTO], [test "$have_xmlto" = yes]) AM_CONDITIONAL([HAVE_XMLTO], [test "$have_xmlto" = yes])
@ -3067,8 +3089,9 @@ AC_REQUIRE([PKG_PROG_PKG_CONFIG])
macros_datadir=`$PKG_CONFIG --print-errors --variable=pkgdatadir xorg-macros` macros_datadir=`$PKG_CONFIG --print-errors --variable=pkgdatadir xorg-macros`
INSTALL_CMD="(cp -f "$macros_datadir/INSTALL" \$(top_srcdir)/.INSTALL.tmp && \ INSTALL_CMD="(cp -f "$macros_datadir/INSTALL" \$(top_srcdir)/.INSTALL.tmp && \
mv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \ mv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \
|| (rm -f \$(top_srcdir)/.INSTALL.tmp; touch \$(top_srcdir)/INSTALL; \ || (rm -f \$(top_srcdir)/.INSTALL.tmp; test -e \$(top_srcdir)/INSTALL || ( \
echo 'util-macros \"pkgdatadir\" from xorg-macros.pc not found: installing possibly empty INSTALL.' >&2)" touch \$(top_srcdir)/INSTALL; \
echo 'failed to copy INSTALL from util-macros: installing empty INSTALL.' >&2))"
AC_SUBST([INSTALL_CMD]) AC_SUBST([INSTALL_CMD])
]) # XORG_INSTALL ]) # XORG_INSTALL
dnl Copyright 2005 Red Hat, Inc dnl Copyright 2005 Red Hat, Inc
@ -3129,10 +3152,11 @@ AC_DEFUN([XORG_RELEASE_VERSION],[
# #
# #
AC_DEFUN([XORG_CHANGELOG], [ AC_DEFUN([XORG_CHANGELOG], [
CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp && \ CHANGELOG_CMD="((GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp) 2>/dev/null && \
mv \$(top_srcdir)/.changelog.tmp \$(top_srcdir)/ChangeLog) \ mv \$(top_srcdir)/.changelog.tmp \$(top_srcdir)/ChangeLog) \
|| (rm -f \$(top_srcdir)/.changelog.tmp; touch \$(top_srcdir)/ChangeLog; \ || (rm -f \$(top_srcdir)/.changelog.tmp; test -e \$(top_srcdir)/ChangeLog || ( \
echo 'git directory not found: installing possibly empty changelog.' >&2)" touch \$(top_srcdir)/ChangeLog; \
echo 'git failed to create ChangeLog: installing empty ChangeLog.' >&2))"
AC_SUBST([CHANGELOG_CMD]) AC_SUBST([CHANGELOG_CMD])
]) # XORG_CHANGELOG ]) # XORG_CHANGELOG

View File

@ -156,24 +156,28 @@ SetAuthentication(int count, IceListenObj *listenObjs,
if (!(addfp = fopen (addAuthFile, "w"))) if (!(addfp = fopen (addAuthFile, "w")))
goto bad; goto bad;
fcntl(fileno(addfp), F_SETFD, FD_CLOEXEC);
if ((remAuthFile = unique_filename (path, ".xsm")) == NULL) if ((remAuthFile = unique_filename (path, ".xsm")) == NULL)
goto bad; goto bad;
if (!(removefp = fopen (remAuthFile, "w"))) if (!(removefp = fopen (remAuthFile, "w")))
goto bad; goto bad;
fcntl(fileno(removefp), F_SETFD, FD_CLOEXEC);
#else #else
if ((addAuthFile = unique_filename (path, ".xsm", &fd)) == NULL) if ((addAuthFile = unique_filename (path, ".xsm", &fd)) == NULL)
goto bad; goto bad;
if (!(addfp = fdopen(fd, "wb"))) if (!(addfp = fdopen(fd, "wb")))
goto bad; goto bad;
fcntl(fileno(addfp), F_SETFD, FD_CLOEXEC);
if ((remAuthFile = unique_filename (path, ".xsm", &fd)) == NULL) if ((remAuthFile = unique_filename (path, ".xsm", &fd)) == NULL)
goto bad; goto bad;
if (!(removefp = fdopen(fd, "wb"))) if (!(removefp = fdopen(fd, "wb")))
goto bad; goto bad;
fcntl(fileno(removefp), F_SETFD, FD_CLOEXEC);
#endif #endif
if ((*authDataEntries = (IceAuthDataEntry *) XtMalloc ( if ((*authDataEntries = (IceAuthDataEntry *) XtMalloc (

View File

@ -98,6 +98,8 @@ GetSessionNames(int *count_ret, String **short_names_ret,
if ((dir = opendir (path)) == NULL) if ((dir = opendir (path)) == NULL)
return 0; return 0;
fcntl(dirfd(dir), F_SETFD, FD_CLOEXEC);
count = 0; count = 0;
while ((entry = readdir (dir)) != NULL) while ((entry = readdir (dir)) != NULL)

347
app/xsm/compile Normal file
View File

@ -0,0 +1,347 @@
#! /bin/sh
# Wrapper for compilers which do not understand '-c -o'.
scriptversion=2012-10-14.11; # UTC
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# This file is maintained in Automake, please report
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
nl='
'
# We need space, tab and new line, in precisely that order. Quoting is
# there to prevent tools from complaining about whitespace usage.
IFS=" "" $nl"
file_conv=
# func_file_conv build_file lazy
# Convert a $build file to $host form and store it in $file
# Currently only supports Windows hosts. If the determined conversion
# type is listed in (the comma separated) LAZY, no conversion will
# take place.
func_file_conv ()
{
file=$1
case $file in
/ | /[!/]*) # absolute file, and not a UNC file
if test -z "$file_conv"; then
# lazily determine how to convert abs files
case `uname -s` in
MINGW*)
file_conv=mingw
;;
CYGWIN*)
file_conv=cygwin
;;
*)
file_conv=wine
;;
esac
fi
case $file_conv/,$2, in
*,$file_conv,*)
;;
mingw/*)
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
;;
cygwin/*)
file=`cygpath -m "$file" || echo "$file"`
;;
wine/*)
file=`winepath -w "$file" || echo "$file"`
;;
esac
;;
esac
}
# func_cl_dashL linkdir
# Make cl look for libraries in LINKDIR
func_cl_dashL ()
{
func_file_conv "$1"
if test -z "$lib_path"; then
lib_path=$file
else
lib_path="$lib_path;$file"
fi
linker_opts="$linker_opts -LIBPATH:$file"
}
# func_cl_dashl library
# Do a library search-path lookup for cl
func_cl_dashl ()
{
lib=$1
found=no
save_IFS=$IFS
IFS=';'
for dir in $lib_path $LIB
do
IFS=$save_IFS
if $shared && test -f "$dir/$lib.dll.lib"; then
found=yes
lib=$dir/$lib.dll.lib
break
fi
if test -f "$dir/$lib.lib"; then
found=yes
lib=$dir/$lib.lib
break
fi
if test -f "$dir/lib$lib.a"; then
found=yes
lib=$dir/lib$lib.a
break
fi
done
IFS=$save_IFS
if test "$found" != yes; then
lib=$lib.lib
fi
}
# func_cl_wrapper cl arg...
# Adjust compile command to suit cl
func_cl_wrapper ()
{
# Assume a capable shell
lib_path=
shared=:
linker_opts=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as 'compile cc -o foo foo.c'.
eat=1
case $2 in
*.o | *.[oO][bB][jJ])
func_file_conv "$2"
set x "$@" -Fo"$file"
shift
;;
*)
func_file_conv "$2"
set x "$@" -Fe"$file"
shift
;;
esac
;;
-I)
eat=1
func_file_conv "$2" mingw
set x "$@" -I"$file"
shift
;;
-I*)
func_file_conv "${1#-I}" mingw
set x "$@" -I"$file"
shift
;;
-l)
eat=1
func_cl_dashl "$2"
set x "$@" "$lib"
shift
;;
-l*)
func_cl_dashl "${1#-l}"
set x "$@" "$lib"
shift
;;
-L)
eat=1
func_cl_dashL "$2"
;;
-L*)
func_cl_dashL "${1#-L}"
;;
-static)
shared=false
;;
-Wl,*)
arg=${1#-Wl,}
save_ifs="$IFS"; IFS=','
for flag in $arg; do
IFS="$save_ifs"
linker_opts="$linker_opts $flag"
done
IFS="$save_ifs"
;;
-Xlinker)
eat=1
linker_opts="$linker_opts $2"
;;
-*)
set x "$@" "$1"
shift
;;
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
func_file_conv "$1"
set x "$@" -Tp"$file"
shift
;;
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
func_file_conv "$1" mingw
set x "$@" "$file"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -n "$linker_opts"; then
linker_opts="-link$linker_opts"
fi
exec "$@" $linker_opts
exit 1
}
eat=
case $1 in
'')
echo "$0: No command. Try '$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: compile [--help] [--version] PROGRAM [ARGS]
Wrapper for compilers which do not understand '-c -o'.
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
arguments, and rename the output as expected.
If you are trying to build a whole package this is not the
right script to run: please start by reading the file 'INSTALL'.
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "compile $scriptversion"
exit $?
;;
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
func_cl_wrapper "$@" # Doesn't return...
;;
esac
ofile=
cfile=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as 'compile cc -o foo foo.c'.
# So we strip '-o arg' only if arg is an object.
eat=1
case $2 in
*.o | *.obj)
ofile=$2
;;
*)
set x "$@" -o "$2"
shift
;;
esac
;;
*.c)
cfile=$1
set x "$@" "$1"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -z "$ofile" || test -z "$cfile"; then
# If no '-o' option was seen then we might have been invoked from a
# pattern rule where we don't need one. That is ok -- this is a
# normal compilation that the losing compiler can handle. If no
# '.c' file was seen then we are probably linking. That is also
# ok.
exec "$@"
fi
# Name of file we expect compiler to create.
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
# Create the lock directory.
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
# that we are using for the .o file. Also, base the name on the expected
# object file name, since that is what matters with a parallel build.
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
while true; do
if mkdir "$lockdir" >/dev/null 2>&1; then
break
fi
sleep 1
done
# FIXME: race condition here if user kills between mkdir and trap.
trap "rmdir '$lockdir'; exit 1" 1 2 15
# Run the compile.
"$@"
ret=$?
if test -f "$cofile"; then
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
elif test -f "${cofile}bj"; then
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
fi
rmdir "$lockdir"
exit $ret
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:

86
app/xsm/configure vendored
View File

@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for xsm 1.0.3. # Generated by GNU Autoconf 2.69 for xsm 1.0.4.
# #
# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>. # Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
# #
@ -581,8 +581,8 @@ MAKEFLAGS=
# Identity of this package. # Identity of this package.
PACKAGE_NAME='xsm' PACKAGE_NAME='xsm'
PACKAGE_TARNAME='xsm' PACKAGE_TARNAME='xsm'
PACKAGE_VERSION='1.0.3' PACKAGE_VERSION='1.0.4'
PACKAGE_STRING='xsm 1.0.3' PACKAGE_STRING='xsm 1.0.4'
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg' PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
PACKAGE_URL='' PACKAGE_URL=''
@ -1315,7 +1315,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures xsm 1.0.3 to adapt to many kinds of systems. \`configure' configures xsm 1.0.4 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1385,7 +1385,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of xsm 1.0.3:";; short | recursive ) echo "Configuration of xsm 1.0.4:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@ -1500,7 +1500,7 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
xsm configure 1.0.3 xsm configure 1.0.4
generated by GNU Autoconf 2.69 generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc. Copyright (C) 2012 Free Software Foundation, Inc.
@ -1824,7 +1824,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by xsm $as_me 1.0.3, which was It was created by xsm $as_me 1.0.4, which was
generated by GNU Autoconf 2.69. Invocation command line was generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@ $ $0 $@
@ -2653,7 +2653,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE='xsm' PACKAGE='xsm'
VERSION='1.0.3' VERSION='1.0.4'
cat >>confdefs.h <<_ACEOF cat >>confdefs.h <<_ACEOF
@ -10320,10 +10320,11 @@ _ACEOF
CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp && \ CHANGELOG_CMD="((GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp) 2>/dev/null && \
mv \$(top_srcdir)/.changelog.tmp \$(top_srcdir)/ChangeLog) \ mv \$(top_srcdir)/.changelog.tmp \$(top_srcdir)/ChangeLog) \
|| (rm -f \$(top_srcdir)/.changelog.tmp; touch \$(top_srcdir)/ChangeLog; \ || (rm -f \$(top_srcdir)/.changelog.tmp; test -e \$(top_srcdir)/ChangeLog || ( \
echo 'git directory not found: installing possibly empty changelog.' >&2)" touch \$(top_srcdir)/ChangeLog; \
echo 'git failed to create ChangeLog: installing empty ChangeLog.' >&2))"
@ -10331,14 +10332,45 @@ echo 'git directory not found: installing possibly empty changelog.' >&2)"
macros_datadir=`$PKG_CONFIG --print-errors --variable=pkgdatadir xorg-macros` macros_datadir=`$PKG_CONFIG --print-errors --variable=pkgdatadir xorg-macros`
INSTALL_CMD="(cp -f "$macros_datadir/INSTALL" \$(top_srcdir)/.INSTALL.tmp && \ INSTALL_CMD="(cp -f "$macros_datadir/INSTALL" \$(top_srcdir)/.INSTALL.tmp && \
mv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \ mv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \
|| (rm -f \$(top_srcdir)/.INSTALL.tmp; touch \$(top_srcdir)/INSTALL; \ || (rm -f \$(top_srcdir)/.INSTALL.tmp; test -e \$(top_srcdir)/INSTALL || ( \
echo 'util-macros \"pkgdatadir\" from xorg-macros.pc not found: installing possibly empty INSTALL.' >&2)" touch \$(top_srcdir)/INSTALL; \
echo 'failed to copy INSTALL from util-macros: installing empty INSTALL.' >&2))"
case $host_os in
solaris*)
# Solaris 2.0 - 11.3 use SysV man page section numbers, so we
# check for a man page file found in later versions that use
# traditional section numbers instead
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /usr/share/man/man7/attributes.7" >&5
$as_echo_n "checking for /usr/share/man/man7/attributes.7... " >&6; }
if ${ac_cv_file__usr_share_man_man7_attributes_7+:} false; then :
$as_echo_n "(cached) " >&6
else
test "$cross_compiling" = yes &&
as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
if test -r "/usr/share/man/man7/attributes.7"; then
ac_cv_file__usr_share_man_man7_attributes_7=yes
else
ac_cv_file__usr_share_man_man7_attributes_7=no
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__usr_share_man_man7_attributes_7" >&5
$as_echo "$ac_cv_file__usr_share_man_man7_attributes_7" >&6; }
if test "x$ac_cv_file__usr_share_man_man7_attributes_7" = xyes; then :
SYSV_MAN_SECTIONS=false
else
SYSV_MAN_SECTIONS=true
fi
;;
*) SYSV_MAN_SECTIONS=false ;;
esac
if test x$APP_MAN_SUFFIX = x ; then if test x$APP_MAN_SUFFIX = x ; then
APP_MAN_SUFFIX=1 APP_MAN_SUFFIX=1
fi fi
@ -10354,9 +10386,9 @@ if test x$LIB_MAN_DIR = x ; then
fi fi
if test x$FILE_MAN_SUFFIX = x ; then if test x$FILE_MAN_SUFFIX = x ; then
case $host_os in case $SYSV_MAN_SECTIONS in
solaris*) FILE_MAN_SUFFIX=4 ;; true) FILE_MAN_SUFFIX=4 ;;
*) FILE_MAN_SUFFIX=5 ;; *) FILE_MAN_SUFFIX=5 ;;
esac esac
fi fi
if test x$FILE_MAN_DIR = x ; then if test x$FILE_MAN_DIR = x ; then
@ -10364,9 +10396,9 @@ if test x$FILE_MAN_DIR = x ; then
fi fi
if test x$MISC_MAN_SUFFIX = x ; then if test x$MISC_MAN_SUFFIX = x ; then
case $host_os in case $SYSV_MAN_SECTIONS in
solaris*) MISC_MAN_SUFFIX=5 ;; true) MISC_MAN_SUFFIX=5 ;;
*) MISC_MAN_SUFFIX=7 ;; *) MISC_MAN_SUFFIX=7 ;;
esac esac
fi fi
if test x$MISC_MAN_DIR = x ; then if test x$MISC_MAN_DIR = x ; then
@ -10374,9 +10406,9 @@ if test x$MISC_MAN_DIR = x ; then
fi fi
if test x$DRIVER_MAN_SUFFIX = x ; then if test x$DRIVER_MAN_SUFFIX = x ; then
case $host_os in case $SYSV_MAN_SECTIONS in
solaris*) DRIVER_MAN_SUFFIX=7 ;; true) DRIVER_MAN_SUFFIX=7 ;;
*) DRIVER_MAN_SUFFIX=4 ;; *) DRIVER_MAN_SUFFIX=4 ;;
esac esac
fi fi
if test x$DRIVER_MAN_DIR = x ; then if test x$DRIVER_MAN_DIR = x ; then
@ -10384,9 +10416,9 @@ if test x$DRIVER_MAN_DIR = x ; then
fi fi
if test x$ADMIN_MAN_SUFFIX = x ; then if test x$ADMIN_MAN_SUFFIX = x ; then
case $host_os in case $SYSV_MAN_SECTIONS in
solaris*) ADMIN_MAN_SUFFIX=1m ;; true) ADMIN_MAN_SUFFIX=1m ;;
*) ADMIN_MAN_SUFFIX=8 ;; *) ADMIN_MAN_SUFFIX=8 ;;
esac esac
fi fi
if test x$ADMIN_MAN_DIR = x ; then if test x$ADMIN_MAN_DIR = x ; then
@ -11135,7 +11167,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" ac_log="
This file was extended by xsm $as_me 1.0.3, which was This file was extended by xsm $as_me 1.0.4, which was
generated by GNU Autoconf 2.69. Invocation command line was generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@ -11201,7 +11233,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\ ac_cs_version="\\
xsm config.status 1.0.3 xsm config.status 1.0.4
configured by $0, generated by GNU Autoconf 2.69, configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\" with options \\"\$ac_cs_config\\"

View File

@ -23,7 +23,7 @@ dnl Process this file with autoconf to create configure.
# Initialize Autoconf # Initialize Autoconf
AC_PREREQ([2.60]) AC_PREREQ([2.60])
AC_INIT([xsm], [1.0.3], AC_INIT([xsm], [1.0.4],
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xsm]) [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xsm])
AC_CONFIG_SRCDIR([Makefile.am]) AC_CONFIG_SRCDIR([Makefile.am])
AC_CONFIG_HEADERS([config.h]) AC_CONFIG_HEADERS([config.h])

View File

@ -121,6 +121,7 @@ GetLockId(const char *session_name)
{ {
return (NULL); return (NULL);
} }
fcntl(fileno(fp), F_SETFD, FD_CLOEXEC);
buf[0] = '\0'; buf[0] = '\0';
fscanf (fp, "%255s\n", buf); fscanf (fp, "%255s\n", buf);

View File

@ -31,7 +31,7 @@
xsm \- X Session Manager xsm \- X Session Manager
.SH SYNOPSIS .SH SYNOPSIS
.B xsm .B xsm
[-display display] [-session sessionName] [-verbose] [-display \fIdisplay\fP] [-session \fIsessionName\fP] [-verbose]
.SH DESCRIPTION .SH DESCRIPTION
.PP .PP
\fIxsm\fP is a session manager. A session is a group of applications, each \fIxsm\fP is a session manager. A session is a group of applications, each
@ -113,8 +113,8 @@ When \fIxsm\fP starts up, it first checks to see if the user previously
saved any sessions. If no saved sessions exist, \fIxsm\fP starts up a set saved any sessions. If no saved sessions exist, \fIxsm\fP starts up a set
of default applications (as described above in the section titled of default applications (as described above in the section titled
\fIDefault Startup Applications\fP). If at least one session exists, a \fIDefault Startup Applications\fP). If at least one session exists, a
session menu is presented. The \fB[-session sessionName]\fR option forces the session menu is presented. The \fB-session\fR option forces the
specified session to be loaded, bypassing the session menu. specified \fIsessionName\fP session to be loaded, bypassing the session menu.
.SS The session menu .SS The session menu
The session menu presents the user with a list of sessions to choose from. The session menu presents the user with a list of sessions to choose from.
The user can change the currently selected session with the mouse, or by The user can change the currently selected session with the mouse, or by

View File

@ -111,7 +111,8 @@ remote_start(const char *restart_protocol, const char *restart_machine,
default: /* parent */ default: /* parent */
close (pipefd[0]); close (pipefd[0]);
fp = (FILE *) fdopen (pipefd[1], "w"); fcntl(pipefd[1], F_SETFD, FD_CLOEXEC);
fp = fdopen (pipefd[1], "w");
fprintf (fp, "CONTEXT X\n"); fprintf (fp, "CONTEXT X\n");
fprintf (fp, "DIR %s\n", cwd); fprintf (fp, "DIR %s\n", cwd);

View File

@ -543,6 +543,7 @@ StartDefaultApps (void)
exit (1); exit (1);
} }
} }
fcntl(fileno(f), F_SETFD, FD_CLOEXEC);
buf = NULL; buf = NULL;
buflen = 0; buflen = 0;

View File

@ -72,6 +72,7 @@ ReadSave(const char *session_name, char **sm_id)
*sm_id = NULL; *sm_id = NULL;
return 0; return 0;
} }
fcntl(fileno(f), F_SETFD, FD_CLOEXEC);
if (verbose) if (verbose)
printf("Reading session save file...\n"); printf("Reading session save file...\n");
@ -319,6 +320,7 @@ WriteSave(const char *sm_id)
} }
else else
{ {
fcntl(fileno(f), F_SETFD, FD_CLOEXEC);
fprintf (f, "%d\n", SAVEFILE_VERSION); fprintf (f, "%d\n", SAVEFILE_VERSION);
fprintf (f, "%s\n", sm_id); fprintf (f, "%s\n", sm_id);
@ -431,6 +433,7 @@ DeleteSession(const char *session_name)
if(!f) { if(!f) {
return (0); return (0);
} }
fcntl(fileno(f), F_SETFD, FD_CLOEXEC);
buf = NULL; buf = NULL;
buflen = 0; buflen = 0;

View File

@ -74,12 +74,6 @@ in this Software without prior written authorization from The Open Group.
#include "list.h" #include "list.h"
#include "save.h" #include "save.h"
#if defined(X_NOT_POSIX) && defined(SIGNALRETURNSINT)
#define SIGVAL int
#else
#define SIGVAL void
#endif
#ifndef X_NOT_POSIX #ifndef X_NOT_POSIX
#define USE_POSIX_WAIT #define USE_POSIX_WAIT
#endif #endif
@ -103,8 +97,8 @@ in this Software without prior written authorization from The Open Group.
int checkpoint_from_signal = 0; int checkpoint_from_signal = 0;
static SIGVAL static void
Signal(int sig, SIGVAL (*handler)(int)) Signal(int sig, void (*handler)(int))
{ {
#ifndef X_NOT_POSIX #ifndef X_NOT_POSIX
struct sigaction sigact, osigact; struct sigaction sigact, osigact;
@ -112,13 +106,7 @@ Signal(int sig, SIGVAL (*handler)(int))
sigemptyset(&sigact.sa_mask); sigemptyset(&sigact.sa_mask);
sigact.sa_flags = 0; sigact.sa_flags = 0;
sigaction(sig, &sigact, &osigact); sigaction(sig, &sigact, &osigact);
# if defined(SIGNALRETURNSINT)
return osigact.sa_handler;
# endif
#else #else
# if defined(SIGNALRETURNSINT)
return
# endif
signal(sig, handler); signal(sig, handler);
#endif #endif
} }
@ -130,8 +118,7 @@ sig_child_handler (int sig)
{ {
int pid, olderrno = errno; int pid, olderrno = errno;
#if !defined(USE_POSIX_WAIT) && (defined(USE_SYSV_SIGNALS) && \ #if !defined(USE_POSIX_WAIT) && defined(USE_SYSV_SIGNALS) && !defined(SIGTSTP)
(defined(CRAY) || !defined(SIGTSTP)))
wait (NULL); wait (NULL);
#endif #endif
@ -151,7 +138,7 @@ sig_child_handler (int sig)
#ifdef USE_POSIX_WAIT #ifdef USE_POSIX_WAIT
pid = waitpid (-1, NULL, WNOHANG); pid = waitpid (-1, NULL, WNOHANG);
#else #else
#if defined(USE_SYSV_SIGNALS) && (defined(CRAY) || !defined(SIGTSTP)) #if defined(USE_SYSV_SIGNALS) && !defined(SIGTSTP)
/* cannot do non-blocking wait */ /* cannot do non-blocking wait */
pid = 0; pid = 0;
#else #else
@ -260,7 +247,7 @@ execute_system_command (char *s)
Signal (SIGCHLD, sig_child_handler); Signal (SIGCHLD, sig_child_handler);
#if !(defined(USE_SYSV_SIGNALS) && (defined(CRAY) || !defined(SIGTSTP))) #if !(defined(USE_SYSV_SIGNALS) && !defined(SIGTSTP))
do do
{ {
union wait status; union wait status;

View File

@ -175,12 +175,20 @@ main(int argc, char *argv[])
switch (argv[i][1]) switch (argv[i][1])
{ {
case 'd': /* -display */ case 'd': /* -display */
if (++i >= argc) goto usage; if (++i >= argc) {
fprintf (stderr, "%s: -display requires an argument\n",
argv[0]);
goto usage;
}
cmd_line_display = (char *) XtNewString (argv[i]); cmd_line_display = (char *) XtNewString (argv[i]);
continue; continue;
case 's': /* -session */ case 's': /* -session */
if (++i >= argc) goto usage; if (++i >= argc) {
fprintf (stderr, "%s: -session requires an argument\n",
argv[0]);
goto usage;
}
session_name = XtNewString (argv[i]); session_name = XtNewString (argv[i]);
continue; continue;
@ -190,9 +198,11 @@ main(int argc, char *argv[])
} }
} }
fprintf (stderr, "%s: unrecognized argument '%s'\n", argv[0], argv[i]);
usage: usage:
fprintf (stderr, fprintf (stderr,
"usage: xsm [-display display] [-session session_name] [-verbose]\n"); "Usage: xsm [-display display] [-session sessionName] [-verbose]\n");
exit (1); exit (1);
} }