(root)/
strace-6.5/
src/
utimes.c
       1  /*
       2   * Copyright (c) 1991, 1992 Paul Kranenburg <pk@cs.few.eur.nl>
       3   * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
       4   * Copyright (c) 1993-1996 Rick Sladkey <jrs@world.std.com>
       5   * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
       6   * Copyright (c) 2006-2007 Ulrich Drepper <drepper@redhat.com>
       7   * Copyright (c) 2006 Bernhard Kaindl <bk@suse.de>
       8   * Copyright (c) 2006-2015 Dmitry V. Levin <ldv@strace.io>
       9   * Copyright (c) 2014-2021 The strace developers.
      10   * All rights reserved.
      11   *
      12   * SPDX-License-Identifier: LGPL-2.1-or-later
      13   */
      14  
      15  #include "defs.h"
      16  
      17  SYS_FUNC(utimes)
      18  {
      19  	/* pathname */
      20  	printpath(tcp, tcp->u_arg[0]);
      21  	tprint_arg_next();
      22  
      23  	/* times */
      24  	print_timeval_utimes(tcp, tcp->u_arg[1]);
      25  
      26  	return RVAL_DECODED;
      27  }
      28  
      29  SYS_FUNC(futimesat)
      30  {
      31  	/* dirfd */
      32  	print_dirfd(tcp, tcp->u_arg[0]);
      33  	tprint_arg_next();
      34  
      35  	/* pathname */
      36  	printpath(tcp, tcp->u_arg[1]);
      37  	tprint_arg_next();
      38  
      39  	/* times */
      40  	print_timeval_utimes(tcp, tcp->u_arg[2]);
      41  
      42  	return RVAL_DECODED;
      43  }
      44  
      45  static int
      46  do_utimensat(struct tcb *const tcp, const print_obj_by_addr_fn print_ts)
      47  {
      48  	/* dirfd */
      49  	print_dirfd(tcp, tcp->u_arg[0]);
      50  	tprint_arg_next();
      51  
      52  	/* pathname */
      53  	printpath(tcp, tcp->u_arg[1]);
      54  	tprint_arg_next();
      55  
      56  	/* times */
      57  	print_ts(tcp, tcp->u_arg[2]);
      58  	tprint_arg_next();
      59  
      60  	/* flags */
      61  	printflags(at_flags, tcp->u_arg[3], "AT_???");
      62  
      63  	return RVAL_DECODED;
      64  }
      65  
      66  #if HAVE_ARCH_TIME32_SYSCALLS
      67  SYS_FUNC(utimensat_time32)
      68  {
      69  	return do_utimensat(tcp, print_timespec32_utime_pair);
      70  }
      71  #endif
      72  
      73  SYS_FUNC(utimensat_time64)
      74  {
      75  	return do_utimensat(tcp, print_timespec64_utime_pair);
      76  }
      77  
      78  #ifdef ALPHA
      79  SYS_FUNC(osf_utimes)
      80  {
      81  	/* pathname */
      82  	printpath(tcp, tcp->u_arg[0]);
      83  	tprint_arg_next();
      84  
      85  	/* times */
      86  	print_timeval32_utimes(tcp, tcp->u_arg[1]);
      87  
      88  	return RVAL_DECODED;
      89  }
      90  #endif /* ALPHA */