Actual source code: fdate.c

petsc-3.7.7 2017-09-25
Report Typos and Errors
  2: #include <petscsys.h>
  3: #if defined(PETSC_HAVE_SYS_TIME_H)
  4: #include <sys/time.h>
  5: #endif
  6: #include <time.h>
  7: #if defined(PETSC_NEEDS_GETTIMEOFDAY_PROTO)
  8: PETSC_EXTERN int gettimeofday(struct timeval*,struct timezone*);
  9: #endif

 11: /*
 12:   This function is called once during the initialize stage.
 13:   It stashes the timestamp, and uses it when needed. This is so that
 14:   error handlers may report the date without generating possible
 15:   additional system errors during the call to get the date.

 17: */
 20: /*@C
 21:     PetscGetDate - Gets the current date.

 23:    Not collective

 25:   Input Parameter:
 26: .  len - length of string to hold date

 28:   Output Parameter:
 29: .  date - the date

 31:   Level: beginner

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

 36: @*/
 37: PetscErrorCode  PetscGetDate(char date[],size_t len)
 38: {
 39:   char           *str=NULL;
 40: #if defined(PETSC_HAVE_TIME)
 41:   time_t         aclock;
 42: #else
 43:   struct timeval tp;
 44: #endif

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