blob: 23b57c559d95a367bca0044661ef0ac1809bdc29 [file] [log] [blame]
Tim Peters22a51ef2001-12-04 01:11:32 +00001#include "Python.h"
Guido van Rossum49bff651997-05-20 22:40:26 +00002
Guido van Rossum5bd919b1997-10-08 15:26:56 +00003#ifdef macintosh
4#include "macbuildno.h"
5#endif
6
Guido van Rossumff7e83d1999-08-27 20:39:37 +00007#ifndef DONT_HAVE_STDIO_H
Guido van Rossum2fff2e61997-01-20 18:34:26 +00008#include <stdio.h>
Guido van Rossumff7e83d1999-08-27 20:39:37 +00009#endif
Guido van Rossum2fff2e61997-01-20 18:34:26 +000010
11#ifndef DATE
12#ifdef __DATE__
13#define DATE __DATE__
14#else
15#define DATE "xx/xx/xx"
16#endif
17#endif
18
19#ifndef TIME
20#ifdef __TIME__
21#define TIME __TIME__
22#else
23#define TIME "xx:xx:xx"
24#endif
25#endif
26
27#ifndef BUILD
28#define BUILD 0
29#endif
30
Martin v. Löwis79acb9e2002-12-06 12:48:53 +000031#ifdef __VMS
32# ifdef __DECC
33# pragma extern_model save
34# pragma extern_model strict_refdef
35extern long ctl$gl_imghdrbf;
36# pragma extern_model restore
37# endif
38
39# ifdef __ALPHA
40# define EIHD$L_IMGIDOFF 24
41# define EIHI$Q_LINKTIME 8
42# define _IMGIDOFF EIHD$L_IMGIDOFF
43# define _LINKTIME EIHI$Q_LINKTIME
44# else
45# define IHD$W_IMGIDOFF 6
46# define IHI$Q_LINKTIME 56
47# define _IMGIDOFF IHD$W_IMGIDOFF
48# define _LINKTIME IHI$Q_LINKTIME
49# endif /* __VMS */
50
51long*
52vms__get_linktime (void)
53{
54 long* al_imghdrbf;
55 unsigned short* aw_imgidoff;
56 unsigned short w_imgidoff;
57 long* aq_linktime;
58 unsigned char* ab_ihi;
59
60 al_imghdrbf = &ctl$gl_imghdrbf;
61
62 al_imghdrbf = (long *)*al_imghdrbf;
63 al_imghdrbf = (long *)*al_imghdrbf;
64
65 aw_imgidoff = (unsigned short *)
66 ((unsigned char *)al_imghdrbf + _IMGIDOFF);
67
68 w_imgidoff = *aw_imgidoff;
69
70 ab_ihi = (unsigned char *)al_imghdrbf + w_imgidoff;
71
72 aq_linktime = (long *) (ab_ihi + _LINKTIME);
73
74 return aq_linktime;
75} /* vms__get_linktime (void) */
76extern void vms__cvt_v2u_time (long * aq_vmstime, time_t * al_unixtime);
77 /* input , output */
78#endif /* __VMS */
79
Guido van Rossum2fff2e61997-01-20 18:34:26 +000080
81const char *
Thomas Woutersf3f33dc2000-07-21 06:00:07 +000082Py_GetBuildInfo(void)
Guido van Rossum2fff2e61997-01-20 18:34:26 +000083{
Guido van Rossum54ecc3d1999-01-27 17:53:11 +000084 static char buildinfo[50];
Martin v. Löwis79acb9e2002-12-06 12:48:53 +000085#ifdef __VMS
86 time_t l_unixtime;
87
88 vms__cvt_v2u_time(vms__get_linktime (), &l_unixtime );
89
90 memset(buildinfo, 0, 40);
91 sprintf(buildinfo, "#%d, %.24s", BUILD, ctime (&l_unixtime));
92#else
Tim Peters22a51ef2001-12-04 01:11:32 +000093 PyOS_snprintf(buildinfo, sizeof(buildinfo),
94 "#%d, %.20s, %.9s", BUILD, DATE, TIME);
Martin v. Löwis79acb9e2002-12-06 12:48:53 +000095#endif
Guido van Rossum2fff2e61997-01-20 18:34:26 +000096 return buildinfo;
97}