Fossil

Hex Artifact Content
Login

Artifact 6e606c3a895f71b35a878e817104b5e5eb056ce47925e341fde567f2448e9aa7:


0000: 2f 2a 0a 2a 2a 20 54 68 69 73 20 43 20 70 72 6f  /*.** This C pro
0010: 67 72 61 6d 20 67 65 6e 65 72 61 74 65 73 20 74  gram generates t
0020: 68 65 20 22 56 45 52 53 49 4f 4e 2e 68 22 20 68  he "VERSION.h" h
0030: 65 61 64 65 72 20 66 69 6c 65 20 66 72 6f 6d 20  eader file from 
0040: 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 2a 2a 20 65  information.** e
0050: 78 74 72 61 63 74 65 64 20 6f 75 74 20 6f 66 20  xtracted out of 
0060: 74 68 65 20 22 6d 61 6e 69 66 65 73 74 22 2c 20  the "manifest", 
0070: 22 6d 61 6e 69 66 65 73 74 2e 75 75 69 64 22 2c  "manifest.uuid",
0080: 20 61 6e 64 20 22 56 45 52 53 49 4f 4e 22 20 66   and "VERSION" f
0090: 69 6c 65 73 2e 0a 2a 2a 20 43 61 6c 6c 20 74 68  iles..** Call th
00a0: 69 73 20 70 72 6f 67 72 61 6d 20 77 69 74 68 20  is program with 
00b0: 74 68 72 65 65 20 61 72 67 75 6d 65 6e 74 73 3a  three arguments:
00c0: 0a 2a 2a 0a 2a 2a 20 20 20 20 20 2e 2f 61 2e 6f  .**.**     ./a.o
00d0: 75 74 20 6d 61 6e 69 66 65 73 74 2e 75 75 69 64  ut manifest.uuid
00e0: 20 6d 61 6e 69 66 65 73 74 20 56 45 52 53 49 4f   manifest VERSIO
00f0: 4e 0a 2a 2a 0a 2a 2a 20 4e 6f 74 65 20 74 68 61  N.**.** Note tha
0100: 74 20 74 68 65 20 6d 61 6e 69 66 65 73 74 2e 75  t the manifest.u
0110: 75 69 64 20 61 6e 64 20 6d 61 6e 69 66 65 73 74  uid and manifest
0120: 20 66 69 6c 65 73 20 61 72 65 20 67 65 6e 65 72   files are gener
0130: 61 74 65 64 20 62 79 20 46 6f 73 73 69 6c 2e 0a  ated by Fossil..
0140: 2a 2f 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 64  */.#include <std
0150: 69 6f 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c  io.h>.#include <
0160: 73 74 72 69 6e 67 2e 68 3e 0a 23 69 6e 63 6c 75  string.h>.#inclu
0170: 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 0a 0a 73  de <stdlib.h>..s
0180: 74 61 74 69 63 20 46 49 4c 45 20 2a 6f 70 65 6e  tatic FILE *open
0190: 5f 66 6f 72 5f 72 65 61 64 69 6e 67 28 63 6f 6e  _for_reading(con
01a0: 73 74 20 63 68 61 72 20 2a 7a 46 69 6c 65 6e 61  st char *zFilena
01b0: 6d 65 29 7b 0a 20 20 46 49 4c 45 20 2a 66 20 3d  me){.  FILE *f =
01c0: 20 66 6f 70 65 6e 28 7a 46 69 6c 65 6e 61 6d 65   fopen(zFilename
01d0: 2c 20 22 72 22 29 3b 0a 20 20 69 66 28 20 66 3d  , "r");.  if( f=
01e0: 3d 30 20 29 7b 0a 20 20 20 20 66 70 72 69 6e 74  =0 ){.    fprint
01f0: 66 28 73 74 64 65 72 72 2c 20 22 63 61 6e 6e 6f  f(stderr, "canno
0200: 74 20 6f 70 65 6e 20 5c 22 25 73 5c 22 20 66 6f  t open \"%s\" fo
0210: 72 20 72 65 61 64 69 6e 67 5c 6e 22 2c 20 7a 46  r reading\n", zF
0220: 69 6c 65 6e 61 6d 65 29 3b 0a 20 20 20 20 65 78  ilename);.    ex
0230: 69 74 28 31 29 3b 0a 20 20 7d 0a 20 20 72 65 74  it(1);.  }.  ret
0240: 75 72 6e 20 66 3b 0a 7d 0a 0a 69 6e 74 20 6d 61  urn f;.}..int ma
0250: 69 6e 28 69 6e 74 20 61 72 67 63 2c 20 63 68 61  in(int argc, cha
0260: 72 20 2a 61 72 67 76 5b 5d 29 7b 0a 20 20 20 20  r *argv[]){.    
0270: 46 49 4c 45 20 2a 6d 2c 2a 75 2c 2a 76 3b 0a 20  FILE *m,*u,*v;. 
0280: 20 20 20 63 68 61 72 20 2a 7a 3b 0a 23 69 66 20     char *z;.#if 
0290: 64 65 66 69 6e 65 64 28 5f 5f 44 4d 43 5f 5f 29  defined(__DMC__)
02a0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 65              /* e
02b0: 2e 67 2e 20 30 78 38 35 37 20 2a 2f 0a 20 20 20  .g. 0x857 */.   
02c0: 20 69 6e 74 20 69 20 3d 20 30 3b 0a 23 65 6e 64   int i = 0;.#end
02d0: 69 66 0a 20 20 20 20 69 6e 74 20 6a 20 3d 20 30  if.    int j = 0
02e0: 2c 20 78 20 3d 20 30 2c 20 64 20 3d 20 30 3b 0a  , x = 0, d = 0;.
02f0: 20 20 20 20 69 6e 74 20 76 6e 5b 33 5d 3b 0a 20      int vn[3];. 
0300: 20 20 20 63 68 61 72 20 62 5b 31 30 30 30 5d 3b     char b[1000];
0310: 0a 20 20 20 20 63 68 61 72 20 76 78 5b 31 30 30  .    char vx[100
0320: 30 5d 3b 0a 20 20 20 20 69 66 28 20 61 72 67 63  0];.    if( argc
0330: 21 3d 34 20 29 7b 0a 20 20 20 20 20 20 66 70 72  !=4 ){.      fpr
0340: 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 55 73  intf(stderr, "Us
0350: 61 67 65 3a 20 25 73 20 6d 61 6e 69 66 65 73 74  age: %s manifest
0360: 2e 75 75 69 64 20 6d 61 6e 69 66 65 73 74 20 56  .uuid manifest V
0370: 45 52 53 49 4f 4e 5c 6e 22 2c 20 61 72 67 76 5b  ERSION\n", argv[
0380: 30 5d 29 3b 0a 20 20 20 20 20 20 65 78 69 74 28  0]);.      exit(
0390: 31 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 6d 65  1);.    }.    me
03a0: 6d 73 65 74 28 62 2c 30 2c 73 69 7a 65 6f 66 28  mset(b,0,sizeof(
03b0: 62 29 29 3b 0a 20 20 20 20 6d 65 6d 73 65 74 28  b));.    memset(
03c0: 76 78 2c 30 2c 73 69 7a 65 6f 66 28 76 78 29 29  vx,0,sizeof(vx))
03d0: 3b 0a 20 20 20 20 75 20 3d 20 6f 70 65 6e 5f 66  ;.    u = open_f
03e0: 6f 72 5f 72 65 61 64 69 6e 67 28 61 72 67 76 5b  or_reading(argv[
03f0: 31 5d 29 3b 0a 20 20 20 20 69 66 28 20 66 67 65  1]);.    if( fge
0400: 74 73 28 62 2c 20 73 69 7a 65 6f 66 28 62 29 2d  ts(b, sizeof(b)-
0410: 31 2c 75 29 3d 3d 30 20 29 7b 0a 20 20 20 20 20  1,u)==0 ){.     
0420: 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c   fprintf(stderr,
0430: 20 22 6d 61 6c 66 6f 72 6d 65 64 20 6d 61 6e 69   "malformed mani
0440: 66 65 73 74 2e 75 75 69 64 20 66 69 6c 65 3a 20  fest.uuid file: 
0450: 25 73 5c 6e 22 2c 20 61 72 67 76 5b 31 5d 29 3b  %s\n", argv[1]);
0460: 0a 20 20 20 20 20 20 65 78 69 74 28 31 29 3b 0a  .      exit(1);.
0470: 20 20 20 20 7d 0a 20 20 20 20 66 63 6c 6f 73 65      }.    fclose
0480: 28 75 29 3b 0a 20 20 20 20 66 6f 72 28 7a 3d 62  (u);.    for(z=b
0490: 3b 20 7a 5b 30 5d 20 26 26 20 7a 5b 30 5d 21 3d  ; z[0] && z[0]!=
04a0: 27 5c 72 27 20 26 26 20 7a 5b 30 5d 21 3d 27 5c  '\r' && z[0]!='\
04b0: 6e 27 3b 20 7a 2b 2b 29 7b 7d 0a 20 20 20 20 2a  n'; z++){}.    *
04c0: 7a 20 3d 20 30 3b 0a 20 20 20 20 70 72 69 6e 74  z = 0;.    print
04d0: 66 28 22 23 64 65 66 69 6e 65 20 4d 41 4e 49 46  f("#define MANIF
04e0: 45 53 54 5f 55 55 49 44 20 5c 22 25 73 5c 22 5c  EST_UUID \"%s\"\
04f0: 6e 22 2c 62 29 3b 0a 20 20 20 20 70 72 69 6e 74  n",b);.    print
0500: 66 28 22 23 64 65 66 69 6e 65 20 4d 41 4e 49 46  f("#define MANIF
0510: 45 53 54 5f 56 45 52 53 49 4f 4e 20 5c 22 5b 25  EST_VERSION \"[%
0520: 31 30 2e 31 30 73 5d 5c 22 5c 6e 22 2c 62 29 3b  10.10s]\"\n",b);
0530: 0a 20 20 20 20 6d 20 3d 20 6f 70 65 6e 5f 66 6f  .    m = open_fo
0540: 72 5f 72 65 61 64 69 6e 67 28 61 72 67 76 5b 32  r_reading(argv[2
0550: 5d 29 3b 0a 20 20 20 20 77 68 69 6c 65 28 62 20  ]);.    while(b 
0560: 3d 3d 20 20 66 67 65 74 73 28 62 2c 20 73 69 7a  ==  fgets(b, siz
0570: 65 6f 66 28 62 29 2d 31 2c 6d 29 29 7b 0a 20 20  eof(b)-1,m)){.  
0580: 20 20 20 20 20 20 69 66 28 30 20 3d 3d 20 73 74        if(0 == st
0590: 72 6e 63 6d 70 28 22 44 20 22 2c 62 2c 32 29 29  rncmp("D ",b,2))
05a0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  {.            pr
05b0: 69 6e 74 66 28 22 23 64 65 66 69 6e 65 20 4d 41  intf("#define MA
05c0: 4e 49 46 45 53 54 5f 44 41 54 45 20 5c 22 25 2e  NIFEST_DATE \"%.
05d0: 31 30 73 20 25 2e 38 73 5c 22 5c 6e 22 2c 62 2b  10s %.8s\"\n",b+
05e0: 32 2c 62 2b 31 33 29 3b 0a 20 20 20 20 20 20 20  2,b+13);.       
05f0: 20 20 20 20 20 70 72 69 6e 74 66 28 22 23 64 65       printf("#de
0600: 66 69 6e 65 20 4d 41 4e 49 46 45 53 54 5f 59 45  fine MANIFEST_YE
0610: 41 52 20 5c 22 25 2e 34 73 5c 22 5c 6e 22 2c 62  AR \"%.4s\"\n",b
0620: 2b 32 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20  +2);.        }. 
0630: 20 20 20 7d 0a 20 20 20 20 66 63 6c 6f 73 65 28     }.    fclose(
0640: 6d 29 3b 0a 20 20 20 20 76 20 3d 20 6f 70 65 6e  m);.    v = open
0650: 5f 66 6f 72 5f 72 65 61 64 69 6e 67 28 61 72 67  _for_reading(arg
0660: 76 5b 33 5d 29 3b 0a 20 20 20 20 69 66 28 20 66  v[3]);.    if( f
0670: 67 65 74 73 28 62 2c 20 73 69 7a 65 6f 66 28 62  gets(b, sizeof(b
0680: 29 2d 31 2c 76 29 3d 3d 30 20 29 7b 0a 20 20 20  )-1,v)==0 ){.   
0690: 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72     fprintf(stder
06a0: 72 2c 20 22 6d 61 6c 66 6f 72 6d 65 64 20 56 45  r, "malformed VE
06b0: 52 53 49 4f 4e 20 66 69 6c 65 3a 20 25 73 5c 6e  RSION file: %s\n
06c0: 22 2c 20 61 72 67 76 5b 33 5d 29 3b 0a 20 20 20  ", argv[3]);.   
06d0: 20 20 20 65 78 69 74 28 31 29 3b 0a 20 20 20 20     exit(1);.    
06e0: 7d 0a 20 20 20 20 66 63 6c 6f 73 65 28 76 29 3b  }.    fclose(v);
06f0: 0a 20 20 20 20 66 6f 72 28 7a 3d 62 3b 20 7a 5b  .    for(z=b; z[
0700: 30 5d 20 26 26 20 7a 5b 30 5d 21 3d 27 5c 72 27  0] && z[0]!='\r'
0710: 20 26 26 20 7a 5b 30 5d 21 3d 27 5c 6e 27 3b 20   && z[0]!='\n'; 
0720: 7a 2b 2b 29 7b 7d 0a 20 20 20 20 2a 7a 20 3d 20  z++){}.    *z = 
0730: 30 3b 0a 20 20 20 20 70 72 69 6e 74 66 28 22 23  0;.    printf("#
0740: 64 65 66 69 6e 65 20 52 45 4c 45 41 53 45 5f 56  define RELEASE_V
0750: 45 52 53 49 4f 4e 20 5c 22 25 73 5c 22 5c 6e 22  ERSION \"%s\"\n"
0760: 2c 20 62 29 3b 0a 20 20 20 20 7a 3d 62 3b 0a 20  , b);.    z=b;. 
0770: 20 20 20 76 6e 5b 30 5d 20 3d 20 76 6e 5b 31 5d     vn[0] = vn[1]
0780: 20 3d 20 76 6e 5b 32 5d 20 3d 20 30 3b 0a 20 20   = vn[2] = 0;.  
0790: 20 20 77 68 69 6c 65 28 31 29 7b 0a 20 20 20 20    while(1){.    
07a0: 20 20 69 66 28 20 7a 5b 30 5d 3e 3d 27 30 27 20    if( z[0]>='0' 
07b0: 26 26 20 7a 5b 30 5d 3c 3d 27 39 27 20 29 7b 0a  && z[0]<='9' ){.
07c0: 20 20 20 20 20 20 20 20 78 20 3d 20 78 2a 31 30          x = x*10
07d0: 20 2b 20 7a 5b 30 5d 20 2d 20 27 30 27 3b 0a 20   + z[0] - '0';. 
07e0: 20 20 20 20 20 7d 65 6c 73 65 7b 0a 20 20 20 20       }else{.    
07f0: 20 20 20 20 69 66 28 20 6a 3c 33 20 29 20 76 6e      if( j<3 ) vn
0800: 5b 6a 2b 2b 5d 20 3d 20 78 3b 0a 20 20 20 20 20  [j++] = x;.     
0810: 20 20 20 78 20 3d 20 30 3b 0a 20 20 20 20 20 20     x = 0;.      
0820: 20 20 69 66 28 20 7a 5b 30 5d 3d 3d 30 20 29 20    if( z[0]==0 ) 
0830: 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 7d 0a 20  break;.      }. 
0840: 20 20 20 20 20 7a 2b 2b 3b 0a 20 20 20 20 7d 0a       z++;.    }.
0850: 20 20 20 20 66 6f 72 28 7a 3d 76 78 3b 20 7a 5b      for(z=vx; z[
0860: 30 5d 3d 3d 27 30 27 3b 20 7a 2b 2b 29 7b 7d 0a  0]=='0'; z++){}.
0870: 20 20 20 20 70 72 69 6e 74 66 28 22 23 64 65 66      printf("#def
0880: 69 6e 65 20 52 45 4c 45 41 53 45 5f 56 45 52 53  ine RELEASE_VERS
0890: 49 4f 4e 5f 4e 55 4d 42 45 52 20 25 64 25 30 32  ION_NUMBER %d%02
08a0: 64 25 30 32 64 5c 6e 22 2c 20 76 6e 5b 30 5d 2c  d%02d\n", vn[0],
08b0: 20 76 6e 5b 31 5d 2c 20 76 6e 5b 32 5d 29 3b 0a   vn[1], vn[2]);.
08c0: 20 20 20 20 6d 65 6d 73 65 74 28 76 78 2c 30 2c      memset(vx,0,
08d0: 73 69 7a 65 6f 66 28 76 78 29 29 3b 0a 20 20 20  sizeof(vx));.   
08e0: 20 73 74 72 63 70 79 28 76 78 2c 62 29 3b 0a 20   strcpy(vx,b);. 
08f0: 20 20 20 66 6f 72 28 7a 3d 76 78 3b 20 7a 5b 30     for(z=vx; z[0
0900: 5d 3b 20 7a 2b 2b 29 7b 0a 20 20 20 20 20 20 69  ]; z++){.      i
0910: 66 28 20 7a 5b 30 5d 3d 3d 27 2d 27 20 29 7b 0a  f( z[0]=='-' ){.
0920: 20 20 20 20 20 20 20 20 7a 5b 30 5d 20 3d 20 30          z[0] = 0
0930: 3b 0a 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b  ;.        break;
0940: 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 69  .      }.      i
0950: 66 28 20 7a 5b 30 5d 21 3d 27 2e 27 20 29 20 63  f( z[0]!='.' ) c
0960: 6f 6e 74 69 6e 75 65 3b 0a 20 20 20 20 20 20 69  ontinue;.      i
0970: 66 20 28 20 64 3c 33 20 29 7b 0a 20 20 20 20 20  f ( d<3 ){.     
0980: 20 20 20 7a 5b 30 5d 20 3d 20 27 2c 27 3b 0a 20     z[0] = ',';. 
0990: 20 20 20 20 20 20 20 64 2b 2b 3b 0a 20 20 20 20         d++;.    
09a0: 20 20 7d 65 6c 73 65 7b 0a 20 20 20 20 20 20 20    }else{.       
09b0: 20 7a 5b 30 5d 20 3d 20 27 5c 30 27 3b 0a 20 20   z[0] = '\0';.  
09c0: 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20        break;.   
09d0: 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 70     }.    }.    p
09e0: 72 69 6e 74 66 28 22 23 64 65 66 69 6e 65 20 52  rintf("#define R
09f0: 45 4c 45 41 53 45 5f 52 45 53 4f 55 52 43 45 5f  ELEASE_RESOURCE_
0a00: 56 45 52 53 49 4f 4e 20 25 73 22 2c 20 76 78 29  VERSION %s", vx)
0a10: 3b 0a 20 20 20 20 77 68 69 6c 65 28 20 64 3c 33  ;.    while( d<3
0a20: 20 29 7b 20 70 72 69 6e 74 66 28 22 2c 30 22 29   ){ printf(",0")
0a30: 3b 20 64 2b 2b 3b 20 7d 0a 20 20 20 20 70 72 69  ; d++; }.    pri
0a40: 6e 74 66 28 22 5c 6e 22 29 3b 0a 23 69 66 20 64  ntf("\n");.#if d
0a50: 65 66 69 6e 65 64 28 5f 5f 44 4d 43 5f 5f 29 20  efined(__DMC__) 
0a60: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 65 2e             /* e.
0a70: 67 2e 20 30 78 38 35 37 20 2a 2f 0a 20 20 20 20  g. 0x857 */.    
0a80: 64 20 3d 20 28 5f 5f 44 4d 43 5f 5f 20 26 20 30  d = (__DMC__ & 0
0a90: 78 46 30 30 29 20 3e 3e 20 38 3b 20 2f 2a 20 6d  xF00) >> 8; /* m
0aa0: 61 6a 6f 72 20 2a 2f 0a 20 20 20 20 78 20 3d 20  ajor */.    x = 
0ab0: 28 5f 5f 44 4d 43 5f 5f 20 26 20 30 78 30 46 30  (__DMC__ & 0x0F0
0ac0: 29 20 3e 3e 20 34 3b 20 2f 2a 20 6d 69 6e 6f 72  ) >> 4; /* minor
0ad0: 20 2a 2f 0a 20 20 20 20 69 20 3d 20 28 5f 5f 44   */.    i = (__D
0ae0: 4d 43 5f 5f 20 26 20 30 78 30 30 46 29 3b 20 20  MC__ & 0x00F);  
0af0: 20 20 20 20 2f 2a 20 72 65 76 69 73 69 6f 6e 20      /* revision 
0b00: 2a 2f 0a 20 20 20 20 70 72 69 6e 74 66 28 22 23  */.    printf("#
0b10: 64 65 66 69 6e 65 20 43 4f 4d 50 49 4c 45 52 5f  define COMPILER_
0b20: 56 45 52 53 49 4f 4e 20 5c 22 25 64 2e 25 64 2e  VERSION \"%d.%d.
0b30: 25 64 5c 22 5c 6e 22 2c 20 64 2c 20 78 2c 20 69  %d\"\n", d, x, i
0b40: 29 3b 0a 23 65 6c 69 66 20 64 65 66 69 6e 65 64  );.#elif defined
0b50: 28 5f 5f 50 4f 43 43 5f 5f 29 20 20 20 2f 2a 20  (__POCC__)   /* 
0b60: 65 2e 67 2e 20 37 30 30 20 2a 2f 0a 20 20 20 20  e.g. 700 */.    
0b70: 64 20 3d 20 28 5f 5f 50 4f 43 43 5f 5f 20 2f 20  d = (__POCC__ / 
0b80: 31 30 30 29 3b 20 2f 2a 20 6d 61 6a 6f 72 20 2a  100); /* major *
0b90: 2f 0a 20 20 20 20 78 20 3d 20 28 5f 5f 50 4f 43  /.    x = (__POC
0ba0: 43 5f 5f 20 25 20 31 30 30 29 3b 20 2f 2a 20 6d  C__ % 100); /* m
0bb0: 69 6e 6f 72 20 2a 2f 0a 20 20 20 20 70 72 69 6e  inor */.    prin
0bc0: 74 66 28 22 23 64 65 66 69 6e 65 20 43 4f 4d 50  tf("#define COMP
0bd0: 49 4c 45 52 5f 56 45 52 53 49 4f 4e 20 5c 22 25  ILER_VERSION \"%
0be0: 64 2e 25 30 32 64 5c 22 5c 6e 22 2c 20 64 2c 20  d.%02d\"\n", d, 
0bf0: 78 29 3b 0a 23 65 6c 69 66 20 64 65 66 69 6e 65  x);.#elif define
0c00: 64 28 5f 4d 53 43 5f 56 45 52 29 20 20 20 2f 2a  d(_MSC_VER)   /*
0c10: 20 65 2e 67 2e 20 31 38 30 30 20 2a 2f 0a 20 20   e.g. 1800 */.  
0c20: 20 20 64 20 3d 20 28 5f 4d 53 43 5f 56 45 52 20    d = (_MSC_VER 
0c30: 2f 20 31 30 30 29 3b 20 2f 2a 20 6d 61 6a 6f 72  / 100); /* major
0c40: 20 2a 2f 0a 20 20 20 20 78 20 3d 20 28 5f 4d 53   */.    x = (_MS
0c50: 43 5f 56 45 52 20 25 20 31 30 30 29 3b 20 2f 2a  C_VER % 100); /*
0c60: 20 6d 69 6e 6f 72 20 2a 2f 0a 20 20 20 20 70 72   minor */.    pr
0c70: 69 6e 74 66 28 22 23 64 65 66 69 6e 65 20 43 4f  intf("#define CO
0c80: 4d 50 49 4c 45 52 5f 56 45 52 53 49 4f 4e 20 5c  MPILER_VERSION \
0c90: 22 25 64 2e 25 30 32 64 5c 22 5c 6e 22 2c 20 64  "%d.%02d\"\n", d
0ca0: 2c 20 78 29 3b 0a 23 65 6e 64 69 66 0a 20 20 20  , x);.#endif.   
0cb0: 20 72 65 74 75 72 6e 20 30 3b 0a 7d 0a            return 0;.}.