From a182affdd948423d4779f848954e411c94f41a54 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Thu, 22 Feb 1996 15:52:20 +0000 Subject: Wed Feb 21 02:25:07 1996 Roland McGrath * Rules (others): Depend on $(extra-objs), $(install-lib), $(install-bin), $(install-sbin), in object directory. * Makeconfig (link-libc): Don't pass -rpath option with default path, since ld.so should use the same default. * Makerules (build-shlib): Likewise. * Makerules (make-target-directory): Use mkinstalldirs. * sysdeps/mach/i386/sysdep.h: Include unix/i386/sysdep.h to redefine ENTRY et al. * sysdeps/unix/sysv/linux/i386/sysdep.h (NO_UNDERSCORES, ENTRY): Macros removed. The code in unix/i386/sysdep.h should now suffice. * sysdeps/unix/i386/sysdep.h (ALIGNARG): New macro, defns for [HAVE_ELF] and not. (ENTRY): Use it in .align directive. (CALL_MCOUNT): New macro, empty unless [PROF]. (ENTRY): Do CALL_MCOUNT just after the label. * Makeconfig (CPPFLAGS-.po): New variable, use -DPROF so assembly code can call mcount. Tue Feb 20 23:05:16 1996 Roland McGrath * time/private.h, time/zdump.c, time/zic.c: Updated verbatim from ADO; translation markings are now integrated in his distribution. * stdlib/strtod.c (round_and_return): Add missing (mp_limb) 1 cast. * po: New directory where `LANG.po' files for message translations will reside. * po/SYS_libc.pot: New file, template of message strings as in source. * MakeTAGS: New rules to build po/SYS_libc.pot automatically from the source using xgettext. * Makerules ($(..)po/%.pot): New rule. * manual/Makefile (../po/manual.pot): New target, make it empty. * sysdeps/unix/bsd/alarm.c: Moved to sysdeps/unix/alarm.c. * sysdeps/unix/bsd/nice.c: Moved to sysdeps/unix/nice.c. * sysdeps/unix/bsd/stime.c: Moved to sysdeps/unix/stime.c. * sysdeps/unix/bsd/time.c: Moved to sysdeps/unix/time.c. * sysdeps/unix/bsd/utime.c: Moved to sysdeps/unix/utime.c. --- sysdeps/ieee754/dbl2mpn.c | 8 +++--- sysdeps/ieee754/ldbl2mpn.c | 6 ++--- sysdeps/ieee754/mpn2dbl.c | 8 +++--- sysdeps/mach/i386/sysdep.h | 18 ++++++------- sysdeps/unix/alarm.c | 43 ++++++++++++++++++++++++++++++ sysdeps/unix/bsd/alarm.c | 43 ------------------------------ sysdeps/unix/bsd/nice.c | 45 ------------------------------- sysdeps/unix/bsd/stime.c | 39 --------------------------- sysdeps/unix/bsd/time.c | 40 ---------------------------- sysdeps/unix/bsd/utime.c | 50 ----------------------------------- sysdeps/unix/i386/sysdep.h | 40 +++++++++++++++++++++++----- sysdeps/unix/nice.c | 45 +++++++++++++++++++++++++++++++ sysdeps/unix/stime.c | 39 +++++++++++++++++++++++++++ sysdeps/unix/sysv/linux/i386/sysdep.h | 14 +--------- sysdeps/unix/time.c | 40 ++++++++++++++++++++++++++++ sysdeps/unix/utime.c | 50 +++++++++++++++++++++++++++++++++++ 16 files changed, 270 insertions(+), 258 deletions(-) create mode 100644 sysdeps/unix/alarm.c delete mode 100644 sysdeps/unix/bsd/alarm.c delete mode 100644 sysdeps/unix/bsd/nice.c delete mode 100644 sysdeps/unix/bsd/stime.c delete mode 100644 sysdeps/unix/bsd/time.c delete mode 100644 sysdeps/unix/bsd/utime.c create mode 100644 sysdeps/unix/nice.c create mode 100644 sysdeps/unix/stime.c create mode 100644 sysdeps/unix/time.c create mode 100644 sysdeps/unix/utime.c (limited to 'sysdeps') diff --git a/sysdeps/ieee754/dbl2mpn.c b/sysdeps/ieee754/dbl2mpn.c index 6b690f711e..bbac525a07 100644 --- a/sysdeps/ieee754/dbl2mpn.c +++ b/sysdeps/ieee754/dbl2mpn.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1994, 1995, 1996 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -45,7 +45,7 @@ __mpn_extract_double (mp_ptr res_ptr, mp_size_t size, #elif BITS_PER_MP_LIMB == 64 /* Hopefully the compiler will combine the two bitfield extracts and this composition into just the original quadword extract. */ - res_ptr[0] = (u.ieee.mantissa0 << 32) | u.ieee.mantissa1; + res_ptr[0] = ((unsigned long int) u.ieee.mantissa0 << 32) | u.ieee.mantissa1; #define N 1 #else #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for" @@ -87,7 +87,7 @@ __mpn_extract_double (mp_ptr res_ptr, mp_size_t size, if (cnt >= NUM_LEADING_ZEROS) { res_ptr[N - 1] = res_ptr[0] << (cnt - NUM_LEADING_ZEROS); - res_ptr[0] = 0; + res_ptr[0] = 0; } else { @@ -101,7 +101,7 @@ __mpn_extract_double (mp_ptr res_ptr, mp_size_t size, } else /* Add the implicit leading one bit for a normalized number. */ - res_ptr[N - 1] |= 1 << (DBL_MANT_DIG - 1 - ((N - 1) * BITS_PER_MP_LIMB)); + res_ptr[N - 1] |= 1L << (DBL_MANT_DIG - 1 - ((N - 1) * BITS_PER_MP_LIMB)); return N; } diff --git a/sysdeps/ieee754/ldbl2mpn.c b/sysdeps/ieee754/ldbl2mpn.c index 029a92a556..8db73cd27b 100644 --- a/sysdeps/ieee754/ldbl2mpn.c +++ b/sysdeps/ieee754/ldbl2mpn.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -46,7 +46,7 @@ __mpn_extract_long_double (mp_ptr res_ptr, mp_size_t size, #elif BITS_PER_MP_LIMB == 64 /* Hopefully the compiler will combine the two bitfield extracts and this composition into just the original quadword extract. */ - res_ptr[0] = (u.ieee.mantissa0 << 32) | u.ieee.mantissa1; + res_ptr[0] = ((unsigned long int) u.ieee.mantissa0 << 32) | u.ieee.mantissa1; #define N 1 #else #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for" @@ -70,7 +70,7 @@ __mpn_extract_long_double (mp_ptr res_ptr, mp_size_t size, for denormalized number. If it is one, the number is according to Intel's specification an invalid number. We make the representation unique by explicitly clearing this bit. */ - res_ptr[N - 1] &= ~(1 << ((LDBL_MANT_DIG - 1) % BITS_PER_MP_LIMB)); + res_ptr[N - 1] &= ~(1L << ((LDBL_MANT_DIG - 1) % BITS_PER_MP_LIMB)); if (res_ptr[N - 1] != 0) { diff --git a/sysdeps/ieee754/mpn2dbl.c b/sysdeps/ieee754/mpn2dbl.c index 85148ad63e..e05d849b61 100644 --- a/sysdeps/ieee754/mpn2dbl.c +++ b/sysdeps/ieee754/mpn2dbl.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -23,20 +23,20 @@ Cambridge, MA 02139, USA. */ /* Convert a multi-precision integer of the needed number of bits (53 for double) and an integral power of two to a `double' in IEEE754 double- - precision format. */ + precision format. */ double __mpn_construct_double (mp_srcptr frac_ptr, int expt, int negative) { union ieee754_double u; - + u.ieee.negative = negative; u.ieee.exponent = expt + IEEE754_DOUBLE_BIAS; #if BITS_PER_MP_LIMB == 32 u.ieee.mantissa1 = frac_ptr[0]; u.ieee.mantissa0 = frac_ptr[1] & ((1 << (DBL_MANT_DIG - 32)) - 1); #elif BITS_PER_MP_LIMB == 64 - u.ieee.mantissa1 = frac_ptr[0] & ((1 << 32) - 1); + u.ieee.mantissa1 = frac_ptr[0] & ((1L << 32) - 1); u.ieee.mantissa0 = (frac_ptr[0] >> 32) & ((1 << (DBL_MANT_DIG - 32)) - 1); #else #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for" diff --git a/sysdeps/mach/i386/sysdep.h b/sysdeps/mach/i386/sysdep.h index f467fef24b..5f08608314 100644 --- a/sysdeps/mach/i386/sysdep.h +++ b/sysdeps/mach/i386/sysdep.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. +/* Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -16,8 +16,6 @@ License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#define MOVE(x,y) movl x , y - #define LOSE asm volatile ("hlt") #define SNARF_ARGS(entry_sp, argc, argv, envp) \ @@ -51,12 +49,12 @@ Cambridge, MA 02139, USA. */ #define STACK_GROWTH_DOWN - -#ifdef PIC -#define JUMPTARGET(name) name##@PLT -#else -#define JUMPTARGET(name) name -#endif +/* Get the machine-independent Mach definitions. */ +#include_next -#include_next +/* This should be rearranged, but at the moment this file provides + the most useful definitions for assembler syntax details. */ +#undef ENTRY +#undef ALIGN +#include diff --git a/sysdeps/unix/alarm.c b/sysdeps/unix/alarm.c new file mode 100644 index 0000000000..7743256a09 --- /dev/null +++ b/sysdeps/unix/alarm.c @@ -0,0 +1,43 @@ +/* Copyright (C) 1991, 1992, 1994 Free Software Foundation, Inc. +This file is part of the GNU C Library. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +The GNU C Library 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +#include +#include +#include + +/* Schedule an alarm. In SECONDS seconds, the process will get a SIGALRM. + If SECONDS is zero, any currently scheduled alarm will be cancelled. + The function returns the number of seconds remaining until the last + alarm scheduled would have signaled, or zero if there wasn't one. + There is no return value to indicate an error, but you can set `errno' + to 0 and check its value after calling `alarm', and this might tell you. + The signal may come late due to processor scheduling. */ +unsigned int +DEFUN(alarm, (seconds), unsigned int seconds) +{ + struct itimerval old, new; + + new.it_interval.tv_usec = 0; + new.it_interval.tv_sec = 0; + new.it_value.tv_usec = 0; + new.it_value.tv_sec = (long int) seconds; + if (__setitimer(ITIMER_REAL, &new, &old) < 0) + return 0; + + return (old.it_value.tv_sec + (old.it_value.tv_usec + 999999) / 1000000); +} diff --git a/sysdeps/unix/bsd/alarm.c b/sysdeps/unix/bsd/alarm.c deleted file mode 100644 index 7743256a09..0000000000 --- a/sysdeps/unix/bsd/alarm.c +++ /dev/null @@ -1,43 +0,0 @@ -/* Copyright (C) 1991, 1992, 1994 Free Software Foundation, Inc. -This file is part of the GNU C Library. - -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The GNU C Library 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 -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ - -#include -#include -#include - -/* Schedule an alarm. In SECONDS seconds, the process will get a SIGALRM. - If SECONDS is zero, any currently scheduled alarm will be cancelled. - The function returns the number of seconds remaining until the last - alarm scheduled would have signaled, or zero if there wasn't one. - There is no return value to indicate an error, but you can set `errno' - to 0 and check its value after calling `alarm', and this might tell you. - The signal may come late due to processor scheduling. */ -unsigned int -DEFUN(alarm, (seconds), unsigned int seconds) -{ - struct itimerval old, new; - - new.it_interval.tv_usec = 0; - new.it_interval.tv_sec = 0; - new.it_value.tv_usec = 0; - new.it_value.tv_sec = (long int) seconds; - if (__setitimer(ITIMER_REAL, &new, &old) < 0) - return 0; - - return (old.it_value.tv_sec + (old.it_value.tv_usec + 999999) / 1000000); -} diff --git a/sysdeps/unix/bsd/nice.c b/sysdeps/unix/bsd/nice.c deleted file mode 100644 index 01f1412adf..0000000000 --- a/sysdeps/unix/bsd/nice.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright (C) 1992 Free Software Foundation, Inc. -This file is part of the GNU C Library. - -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The GNU C Library 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 -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ - -#include -#include -#include -#include - -/* Increment the scheduling priority of the calling process by INCR. - The superuser may use a negative INCR to decrement the priority. */ -int -DEFUN(nice, (incr), int incr) -{ - int save; - int prio; - - /* -1 is a valid priority, so we use errno to check for an error. */ - save = errno; - errno = 0; - prio = getpriority (PRIO_PROCESS, 0); - if (prio == -1) - { - if (errno != 0) - return -1; - else - errno = save; - } - - return setpriority (PRIO_PROCESS, 0, prio + incr); -} diff --git a/sysdeps/unix/bsd/stime.c b/sysdeps/unix/bsd/stime.c deleted file mode 100644 index be928e8f39..0000000000 --- a/sysdeps/unix/bsd/stime.c +++ /dev/null @@ -1,39 +0,0 @@ -/* Copyright (C) 1992 Free Software Foundation, Inc. -This file is part of the GNU C Library. - -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The GNU C Library 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 -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ - -#include -#include -#include - -/* Set the system clock to *WHEN. */ - -int -DEFUN(stime, (when), CONST time_t *when) -{ - struct timeval tv; - - if (when == NULL) - { - errno = EINVAL; - return -1; - } - - tv.tv_sec = *when; - tv.tv_usec = 0; - return __settimeofday (&tv, (struct timezone *) 0); -} diff --git a/sysdeps/unix/bsd/time.c b/sysdeps/unix/bsd/time.c deleted file mode 100644 index 8f8a46f830..0000000000 --- a/sysdeps/unix/bsd/time.c +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright (C) 1991, 1992 Free Software Foundation, Inc. -This file is part of the GNU C Library. - -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The GNU C Library 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 -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ - -#include -#include -#include - - -/* Return the current time as a `time_t' and also put it in *T if T is - not NULL. Time is represented as seconds from Jan 1 00:00:00 1970. */ -time_t -DEFUN(time, (t), time_t *t) -{ - struct timeval tv; - time_t result; - - if (__gettimeofday (&tv, (struct timezone *) NULL)) - result = (time_t) -1; - else - result = (time_t) tv.tv_sec; - - if (t != NULL) - *t = result; - return result; -} diff --git a/sysdeps/unix/bsd/utime.c b/sysdeps/unix/bsd/utime.c deleted file mode 100644 index c7ed20ffe3..0000000000 --- a/sysdeps/unix/bsd/utime.c +++ /dev/null @@ -1,50 +0,0 @@ -/* Copyright (C) 1991, 1994 Free Software Foundation, Inc. -This file is part of the GNU C Library. - -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The GNU C Library 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 -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ - -#include -#include -#include -#include -#include -#include -#include - - -/* Set the access and modification times of FILE to those given in TIMES. - If TIMES is NULL, set them to the current time. */ -int -DEFUN(utime, (file, times), CONST char *file AND CONST struct utimbuf *times) -{ - struct timeval timevals[2]; - - if (times != NULL) - { - timevals[0].tv_sec = (long int) times->actime; - timevals[0].tv_usec = 0L; - timevals[1].tv_sec = (long int) times->modtime; - timevals[1].tv_usec = 0L; - } - else - { - if (__gettimeofday (&timevals[0], NULL) < 0) - return -1; - timevals[1] = timevals[0]; - } - - return __utimes (file, timevals); -} diff --git a/sysdeps/unix/i386/sysdep.h b/sysdeps/unix/i386/sysdep.h index fb1781b156..16a76b1d5f 100644 --- a/sysdeps/unix/i386/sysdep.h +++ b/sysdeps/unix/i386/sysdep.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992, 1993, 1995 Free Software Foundation, Inc. +/* Copyright (C) 1991, 92, 93, 95, 96 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -20,18 +20,43 @@ Cambridge, MA 02139, USA. */ #ifdef ASSEMBLER +/* Syntactic details of assembler. */ + +#ifdef HAVE_ELF + +/* ELF uses byte-counts for .align, most others use log2 of count of bytes. */ +#define ALIGNARG(log2) 1< +#include +#include +#include + +/* Increment the scheduling priority of the calling process by INCR. + The superuser may use a negative INCR to decrement the priority. */ +int +DEFUN(nice, (incr), int incr) +{ + int save; + int prio; + + /* -1 is a valid priority, so we use errno to check for an error. */ + save = errno; + errno = 0; + prio = getpriority (PRIO_PROCESS, 0); + if (prio == -1) + { + if (errno != 0) + return -1; + else + errno = save; + } + + return setpriority (PRIO_PROCESS, 0, prio + incr); +} diff --git a/sysdeps/unix/stime.c b/sysdeps/unix/stime.c new file mode 100644 index 0000000000..be928e8f39 --- /dev/null +++ b/sysdeps/unix/stime.c @@ -0,0 +1,39 @@ +/* Copyright (C) 1992 Free Software Foundation, Inc. +This file is part of the GNU C Library. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +The GNU C Library 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +#include +#include +#include + +/* Set the system clock to *WHEN. */ + +int +DEFUN(stime, (when), CONST time_t *when) +{ + struct timeval tv; + + if (when == NULL) + { + errno = EINVAL; + return -1; + } + + tv.tv_sec = *when; + tv.tv_usec = 0; + return __settimeofday (&tv, (struct timezone *) 0); +} diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h index f6da272c75..c77bbbbf86 100644 --- a/sysdeps/unix/sysv/linux/i386/sysdep.h +++ b/sysdeps/unix/sysv/linux/i386/sysdep.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1992, 1993, 1995 Free Software Foundation, Inc. +/* Copyright (C) 1992, 93, 95, 96 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper, , August 1995. @@ -17,9 +17,6 @@ License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* In the Linux/ELF world, C symbols are asm symbols. */ -#define NO_UNDERSCORES - /* There is some commonality. */ #include @@ -64,15 +61,6 @@ syscall_error: \ ret; #endif -/* We define our own ENTRY macro because the alignment should be 16 for - ELF. */ -#undef ENTRY -#define ENTRY(name) \ - ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (name); \ - ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME (name), @function) \ - .align 16; \ - C_LABEL (name) - /* Linux takes system call arguments in registers: syscall number %eax call-clobbered diff --git a/sysdeps/unix/time.c b/sysdeps/unix/time.c new file mode 100644 index 0000000000..8f8a46f830 --- /dev/null +++ b/sysdeps/unix/time.c @@ -0,0 +1,40 @@ +/* Copyright (C) 1991, 1992 Free Software Foundation, Inc. +This file is part of the GNU C Library. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +The GNU C Library 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +#include +#include +#include + + +/* Return the current time as a `time_t' and also put it in *T if T is + not NULL. Time is represented as seconds from Jan 1 00:00:00 1970. */ +time_t +DEFUN(time, (t), time_t *t) +{ + struct timeval tv; + time_t result; + + if (__gettimeofday (&tv, (struct timezone *) NULL)) + result = (time_t) -1; + else + result = (time_t) tv.tv_sec; + + if (t != NULL) + *t = result; + return result; +} diff --git a/sysdeps/unix/utime.c b/sysdeps/unix/utime.c new file mode 100644 index 0000000000..c7ed20ffe3 --- /dev/null +++ b/sysdeps/unix/utime.c @@ -0,0 +1,50 @@ +/* Copyright (C) 1991, 1994 Free Software Foundation, Inc. +This file is part of the GNU C Library. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +The GNU C Library 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +#include +#include +#include +#include +#include +#include +#include + + +/* Set the access and modification times of FILE to those given in TIMES. + If TIMES is NULL, set them to the current time. */ +int +DEFUN(utime, (file, times), CONST char *file AND CONST struct utimbuf *times) +{ + struct timeval timevals[2]; + + if (times != NULL) + { + timevals[0].tv_sec = (long int) times->actime; + timevals[0].tv_usec = 0L; + timevals[1].tv_sec = (long int) times->modtime; + timevals[1].tv_usec = 0L; + } + else + { + if (__gettimeofday (&timevals[0], NULL) < 0) + return -1; + timevals[1] = timevals[0]; + } + + return __utimes (file, timevals); +} -- cgit v1.2.3