Add test for union semun to configure
Remove references to NEED_UNION_SEMUN from include/config.h.in and from include/storage/ipc.h, replacing it with a single HAVE_UNION_SEMUN
This commit is contained in:
parent
321d42c6d0
commit
e72b1ccd30
101
src/configure
vendored
101
src/configure
vendored
@ -2614,35 +2614,64 @@ EOF
|
||||
fi
|
||||
|
||||
|
||||
echo $ac_n "checking for int timezone""... $ac_c" 1>&6
|
||||
echo "configure:2619: checking for int timezone" >&5
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2619 "configure"
|
||||
#line 2621 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <time.h>
|
||||
int main() {
|
||||
int res = timezone / 60;
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2626: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||
if { (eval echo configure:2628: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||
rm -rf conftest*
|
||||
cat >> confdefs.h <<\EOF
|
||||
#define HAVE_INT_TIMEZONE 1
|
||||
EOF
|
||||
|
||||
, echo "$ac_t""yes" 1>&6
|
||||
else
|
||||
echo "configure: failed program was:" >&5
|
||||
cat conftest.$ac_ext >&5
|
||||
rm -rf conftest*
|
||||
echo "$ac_t""no" 1>&6
|
||||
fi
|
||||
rm -f conftest*
|
||||
|
||||
echo $ac_n "checking for union semun""... $ac_c" 1>&6
|
||||
echo "configure:2643: checking for union semun" >&5
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2645 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/sem.h>
|
||||
int main() {
|
||||
union semun semun;
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||
rm -rf conftest*
|
||||
cat >> confdefs.h <<\EOF
|
||||
#define HAVE_UNION_SEMUN 1
|
||||
EOF
|
||||
echo "$ac_t""yes" 1>&6
|
||||
else
|
||||
echo "configure: failed program was:" >&5
|
||||
cat conftest.$ac_ext >&5
|
||||
rm -rf conftest*
|
||||
echo "$ac_t""no" 1>&6
|
||||
fi
|
||||
rm -f conftest*
|
||||
|
||||
if test $ac_cv_prog_gcc = yes; then
|
||||
echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6
|
||||
echo "configure:2640: checking whether ${CC-cc} needs -traditional" >&5
|
||||
echo "configure:2669: checking whether ${CC-cc} needs -traditional" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
ac_pattern="Autoconf.*'x'"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2646 "configure"
|
||||
#line 2675 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sgtty.h>
|
||||
Autoconf TIOCGETP
|
||||
@ -2660,7 +2689,7 @@ rm -f conftest*
|
||||
|
||||
if test $ac_cv_prog_gcc_traditional = no; then
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2664 "configure"
|
||||
#line 2693 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <termio.h>
|
||||
Autoconf TCGETA
|
||||
@ -2682,7 +2711,7 @@ echo "$ac_t""$ac_cv_prog_gcc_traditional" 1>&6
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
|
||||
echo "configure:2686: checking for 8-bit clean memcmp" >&5
|
||||
echo "configure:2715: checking for 8-bit clean memcmp" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2690,7 +2719,7 @@ else
|
||||
ac_cv_func_memcmp_clean=no
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2694 "configure"
|
||||
#line 2723 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
main()
|
||||
@ -2700,7 +2729,7 @@ main()
|
||||
}
|
||||
|
||||
EOF
|
||||
if { (eval echo configure:2704: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
|
||||
if { (eval echo configure:2733: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
|
||||
then
|
||||
ac_cv_func_memcmp_clean=yes
|
||||
else
|
||||
@ -2718,12 +2747,12 @@ echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6
|
||||
test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.o"
|
||||
|
||||
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
|
||||
echo "configure:2722: checking return type of signal handlers" >&5
|
||||
echo "configure:2751: checking return type of signal handlers" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2727 "configure"
|
||||
#line 2756 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#include <signal.h>
|
||||
@ -2740,7 +2769,7 @@ int main() {
|
||||
int i;
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2744: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:2773: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
ac_cv_type_signal=void
|
||||
else
|
||||
@ -2759,12 +2788,12 @@ EOF
|
||||
|
||||
|
||||
echo $ac_n "checking for vprintf""... $ac_c" 1>&6
|
||||
echo "configure:2763: checking for vprintf" >&5
|
||||
echo "configure:2792: checking for vprintf" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2768 "configure"
|
||||
#line 2797 "configure"
|
||||
#include "confdefs.h"
|
||||
/* System header to define __stub macros and hopefully few prototypes,
|
||||
which can conflict with char vprintf(); below. */
|
||||
@ -2787,7 +2816,7 @@ vprintf();
|
||||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2791: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||
if { (eval echo configure:2820: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_func_vprintf=yes"
|
||||
else
|
||||
@ -2811,12 +2840,12 @@ fi
|
||||
|
||||
if test "$ac_cv_func_vprintf" != yes; then
|
||||
echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
|
||||
echo "configure:2815: checking for _doprnt" >&5
|
||||
echo "configure:2844: checking for _doprnt" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2820 "configure"
|
||||
#line 2849 "configure"
|
||||
#include "confdefs.h"
|
||||
/* System header to define __stub macros and hopefully few prototypes,
|
||||
which can conflict with char _doprnt(); below. */
|
||||
@ -2839,7 +2868,7 @@ _doprnt();
|
||||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2843: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||
if { (eval echo configure:2872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_func__doprnt=yes"
|
||||
else
|
||||
@ -2866,12 +2895,12 @@ fi
|
||||
for ac_func in isinf tzset getrusage vfork memmove sigsetjmp kill sysconf
|
||||
do
|
||||
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
|
||||
echo "configure:2870: checking for $ac_func" >&5
|
||||
echo "configure:2899: checking for $ac_func" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2875 "configure"
|
||||
#line 2904 "configure"
|
||||
#include "confdefs.h"
|
||||
/* System header to define __stub macros and hopefully few prototypes,
|
||||
which can conflict with char $ac_func(); below. */
|
||||
@ -2894,7 +2923,7 @@ $ac_func();
|
||||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2898: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||
if { (eval echo configure:2927: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_func_$ac_func=yes"
|
||||
else
|
||||
@ -2919,12 +2948,12 @@ fi
|
||||
done
|
||||
|
||||
echo $ac_n "checking for inet_aton""... $ac_c" 1>&6
|
||||
echo "configure:2923: checking for inet_aton" >&5
|
||||
echo "configure:2952: checking for inet_aton" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_func_inet_aton'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2928 "configure"
|
||||
#line 2957 "configure"
|
||||
#include "confdefs.h"
|
||||
/* System header to define __stub macros and hopefully few prototypes,
|
||||
which can conflict with char inet_aton(); below. */
|
||||
@ -2947,7 +2976,7 @@ inet_aton();
|
||||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2951: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||
if { (eval echo configure:2980: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_func_inet_aton=yes"
|
||||
else
|
||||
@ -2972,12 +3001,12 @@ fi
|
||||
|
||||
|
||||
echo $ac_n "checking for cbrt""... $ac_c" 1>&6
|
||||
echo "configure:2976: checking for cbrt" >&5
|
||||
echo "configure:3005: checking for cbrt" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_func_cbrt'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2981 "configure"
|
||||
#line 3010 "configure"
|
||||
#include "confdefs.h"
|
||||
/* System header to define __stub macros and hopefully few prototypes,
|
||||
which can conflict with char cbrt(); below. */
|
||||
@ -3000,7 +3029,7 @@ cbrt();
|
||||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:3004: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||
if { (eval echo configure:3033: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_func_cbrt=yes"
|
||||
else
|
||||
@ -3021,7 +3050,7 @@ EOF
|
||||
else
|
||||
echo "$ac_t""no" 1>&6
|
||||
echo $ac_n "checking for cbrt in -lm""... $ac_c" 1>&6
|
||||
echo "configure:3025: checking for cbrt in -lm" >&5
|
||||
echo "configure:3054: checking for cbrt in -lm" >&5
|
||||
ac_lib_var=`echo m'_'cbrt | sed 'y%./+-%__p_%'`
|
||||
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
@ -3029,7 +3058,7 @@ else
|
||||
ac_save_LIBS="$LIBS"
|
||||
LIBS="-lm $LIBS"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 3033 "configure"
|
||||
#line 3062 "configure"
|
||||
#include "confdefs.h"
|
||||
/* Override any gcc2 internal prototype to avoid an error. */
|
||||
/* We use char because int might match the return type of a gcc2
|
||||
@ -3040,7 +3069,7 @@ int main() {
|
||||
cbrt()
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:3044: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||
if { (eval echo configure:3073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||
else
|
||||
@ -3066,12 +3095,12 @@ fi
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for rint""... $ac_c" 1>&6
|
||||
echo "configure:3070: checking for rint" >&5
|
||||
echo "configure:3099: checking for rint" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_func_rint'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 3075 "configure"
|
||||
#line 3104 "configure"
|
||||
#include "confdefs.h"
|
||||
/* System header to define __stub macros and hopefully few prototypes,
|
||||
which can conflict with char rint(); below. */
|
||||
@ -3094,7 +3123,7 @@ rint();
|
||||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:3098: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||
if { (eval echo configure:3127: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_func_rint=yes"
|
||||
else
|
||||
@ -3115,7 +3144,7 @@ EOF
|
||||
else
|
||||
echo "$ac_t""no" 1>&6
|
||||
echo $ac_n "checking for rint in -lm""... $ac_c" 1>&6
|
||||
echo "configure:3119: checking for rint in -lm" >&5
|
||||
echo "configure:3148: checking for rint in -lm" >&5
|
||||
ac_lib_var=`echo m'_'rint | sed 'y%./+-%__p_%'`
|
||||
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
@ -3123,7 +3152,7 @@ else
|
||||
ac_save_LIBS="$LIBS"
|
||||
LIBS="-lm $LIBS"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 3127 "configure"
|
||||
#line 3156 "configure"
|
||||
#include "confdefs.h"
|
||||
/* Override any gcc2 internal prototype to avoid an error. */
|
||||
/* We use char because int might match the return type of a gcc2
|
||||
@ -3134,7 +3163,7 @@ int main() {
|
||||
rint()
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:3138: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||
if { (eval echo configure:3167: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||
else
|
||||
|
@ -133,8 +133,18 @@ AC_HEADER_TIME
|
||||
AC_STRUCT_TM
|
||||
|
||||
dnl Check for any "odd" conditions
|
||||
AC_MSG_CHECKING(for int timezone)
|
||||
AC_TRY_LINK([#include <time.h>],
|
||||
[int res = timezone / 60; ], AC_DEFINE(HAVE_INT_TIMEZONE))
|
||||
[int res = timezone / 60; ],
|
||||
[AC_DEFINE(HAVE_INT_TIMEZONE), AC_MSG_RESULT(yes)],
|
||||
AC_MSG_RESULT(no))
|
||||
|
||||
AC_MSG_CHECKING(for union semun)
|
||||
AC_TRY_LINK([#include <sys/types.h>
|
||||
#include <sys/sem.h>],
|
||||
[union semun semun;],
|
||||
[AC_DEFINE(HAVE_UNION_SEMUN) AC_MSG_RESULT(yes)],
|
||||
AC_MSG_RESULT(no))
|
||||
|
||||
dnl Checks for library functions.
|
||||
AC_PROG_GCC_TRADITIONAL
|
||||
|
@ -71,6 +71,9 @@
|
||||
/* Set to 1 if you have libhistory.a */
|
||||
#undef HAVE_LIBHISTORY
|
||||
|
||||
/* Set to 1 if you have union semun */
|
||||
#undef HAVE_UNION_SEMUN
|
||||
|
||||
/*
|
||||
* Code below this point should not require changes
|
||||
*/
|
||||
@ -78,7 +81,6 @@
|
||||
#if defined(aix)
|
||||
# define CLASS_CONFLICT
|
||||
# define DISABLE_XOPEN_NLS
|
||||
# define NEED_UNION_SEMUN
|
||||
# define HAVE_SYS_SELECT_H
|
||||
# define HAVE_ANSI_CPP
|
||||
# define HAS_TEST_AND_SET
|
||||
@ -90,7 +92,6 @@
|
||||
# define USE_POSIX_SIGNALS
|
||||
# define DISABLE_XOPEN_NLS
|
||||
# define HAS_LONG_LONG
|
||||
# define NEED_UNION_SEMUN
|
||||
# define HAS_TEST_AND_SET
|
||||
# include <sys/mman.h> /* for msemaphore */
|
||||
typedef msemaphore slock_t;
|
||||
@ -113,9 +114,6 @@
|
||||
# if defined(sparc)
|
||||
# define NEED_SPARC_TAS_ASM
|
||||
# endif
|
||||
# if defined(PRE_BSDI_2_1)
|
||||
# define NEED_UNION_SEMUN
|
||||
# endif
|
||||
# define USE_POSIX_TIME
|
||||
# define HAS_TEST_AND_SET
|
||||
typedef unsigned char slock_t;
|
||||
@ -124,14 +122,12 @@
|
||||
|
||||
#if defined(dgux)
|
||||
# define LINUX_ELF
|
||||
# define NEED_UNION_SEMUN
|
||||
# define USE_POSIX_SIGNALS
|
||||
#endif
|
||||
|
||||
#if defined(hpux)
|
||||
# define JMP_BUF
|
||||
# define USE_POSIX_TIME
|
||||
# define NEED_UNION_SEMUN
|
||||
# define HAS_TEST_AND_SET
|
||||
typedef struct { int sem[4]; } slock_t;
|
||||
#endif
|
||||
@ -141,7 +137,6 @@
|
||||
# define USE_POSIX_SIGNALS
|
||||
# define NEED_RUSAGE
|
||||
# define NO_EMPTY_STMTS
|
||||
# define NEED_UNION_SEMUN
|
||||
# define SYSV_DIRENT
|
||||
# define HAS_TEST_AND_SET
|
||||
typedef unsigned char slock_t;
|
||||
@ -195,17 +190,12 @@
|
||||
typedef struct mutex slock_t;
|
||||
#endif
|
||||
|
||||
#if defined(sequent)
|
||||
# define NEED_UNION_SEMUN
|
||||
#endif
|
||||
|
||||
#if defined(sparc_solaris)
|
||||
# define USE_POSIX_TIME
|
||||
# define USE_POSIX_SIGNALS
|
||||
# define NEED_RUSAGE
|
||||
# define NO_EMPTY_STMTS
|
||||
# define USE_POSIX_TIME
|
||||
# define NEED_UNION_SEMUN
|
||||
# define SYSV_DIRENT
|
||||
# define HAS_TEST_AND_SET
|
||||
typedef unsigned char slock_t;
|
||||
@ -221,7 +211,6 @@ typedef unsigned char slock_t;
|
||||
# define USE_POSIX_SIGNALS
|
||||
# define NEED_RUSAGE
|
||||
# define NO_EMPTY_STMTS
|
||||
# define NEED_UNION_SEMUN
|
||||
# define SYSV_DIRENT
|
||||
#endif
|
||||
|
||||
@ -231,7 +220,6 @@ typedef unsigned char slock_t;
|
||||
# define NO_UNISTD_H
|
||||
# define USES_WINSOCK
|
||||
# define NOFILE 100
|
||||
# define NEED_UNION_SEMUN
|
||||
# ifndef MAXPATHLEN
|
||||
# define MAXPATHLEN 250
|
||||
# endif
|
||||
@ -239,7 +227,6 @@ typedef unsigned char slock_t;
|
||||
|
||||
#if defined(ultrix4)
|
||||
# define USE_POSIX_TIME
|
||||
# define NEED_UNION_SEMUN
|
||||
# define NEED_STRDUP
|
||||
#endif
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
*
|
||||
* Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: ipc.h,v 1.13 1997/01/26 20:15:26 momjian Exp $
|
||||
* $Id: ipc.h,v 1.14 1997/02/06 05:30:50 scrappy Exp $
|
||||
*
|
||||
* NOTES
|
||||
* This file is very architecture-specific. This stuff should actually
|
||||
@ -43,7 +43,7 @@ extern int S_LOCK_FREE(slock_t *lock);
|
||||
|
||||
#endif /* HAS_TEST_AND_SET */
|
||||
|
||||
#ifdef NEED_UNION_SEMUN
|
||||
#ifndef HAVE_UNION_SEMUN
|
||||
union semun {
|
||||
int val;
|
||||
struct semid_ds *buf;
|
||||
|
Loading…
Reference in New Issue
Block a user