Actual source code: fdate.c

  1: #define PETSC_DLL

 3:  #include petsc.h
 4:  #include petscsys.h
  5: #include "petscfix.h"
  6: #if defined(PETSC_HAVE_SYS_TIME_H)
  7: #include <sys/types.h>
  8: #include <sys/time.h>
  9: #endif
 10: #include <time.h>
 11: #if defined(PETSC_NEEDS_GETTIMEOFDAY_PROTO)
 13: EXTERN int gettimeofday(struct timeval *,struct timezone *);
 15: #endif
 16: 
 17: /*
 18:   This function is called once during the initialize stage.
 19:   It stashes the timestamp, and uses it when needed. This is so that 
 20:   error handlers may report the date without generating possible
 21:   additional system errors during the call to get the date.

 23: */
 26: /*@C
 27:     PetscGetDate - Gets the current date.

 29:    Not collective

 31:   Input Parameter:
 32: .  len - length of string to hold date

 34:   Output Parameter:
 35: .  date - the date

 37:   Level: beginner

 39:     This function DOES make a system call and thus SHOULD NOT be called
 40:     from an error handler. 

 42: @*/
 43: PetscErrorCode  PetscGetDate(char date[],size_t len)
 44: {
 45:   char           *str=PETSC_NULL;
 46: #if defined(PETSC_HAVE_TIME)
 47:   time_t         aclock;
 48: #else
 49:   struct timeval tp;
 50: #endif

 54: #if defined(PETSC_HAVE_TIME)
 55:   time(&aclock);
 56:   PetscStrncpy(date,asctime(localtime(&aclock)),len);
 57: #else
 58:   gettimeofday(&tp,(struct timezone *)0);
 59:   PetscStrncpy(date,asctime(localtime((time_t*)&tp.tv_sec)),len);
 60: #endif
 61:   /* now strip out the new-line chars at the end of the string */
 62:   PetscStrstr(date,"\n",&str);
 63:   if (str) str[0] = 0;
 64:   return(0);
 65: }