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: PetscErrorCodePetscGetDate(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: }