StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
SpinDbFunctions.C
1 // $Id: SpinDbFunctions.C,v 1.1 2005/09/30 23:47:48 balewski Exp $
2 // Description: SPIN DB functions
3 // Author: Jan Balewski
4 //
5 
6 
7 #include <stdio.h>
8 #include <assert.h>
9 #include <string.h>
10 #include <getopt.h>
11 
12 #ifndef __USE_XOPEN
13 #define __USE_XOPEN
14 #endif
15 #include <time.h>
16 
17 #include "spinDbAPI.h"
18 
19 
20 
21 //extern "C" char *strptime (const char *s, const char *fmt, struct tm *tp);
22 int verboseMode = false;
23 int quietMode = false;
24 
25 
26 // ===============================================================
27 // time stamp function
28 // ===============================================================
29 time_t
30 getTimeStamp(const char *timeformat[] , const char *timestr)
31 {
32  time_t ts=0;
33  struct tm tm;
34 
35  ts = time(NULL);
36  localtime(&ts);
37 
38  if(strncmp(timestr,"now",3)) {
39  memset(&tm,0x0,sizeof(struct tm));
40  for(int i=0; timeformat[i]!=NULL ; i++ ) {
41  //dprintf("trying %s\n",timeformat[i]);
42  if(strptime(timestr,timeformat[i], &tm)!=NULL) {
43  //dprintf("using date/time format: %s\n",timeformat[i]);
44  break;
45  }
46  }
47  ts = mktime(&tm);
48  }
49  if(ts<0) {
50  fprintf(stderr,"time stamp %s not understood\n",timestr);
51  fprintf(stderr,"\tvalid formats are:\n");
52  for(int i=0; timeformat[i]!=NULL ; i++ )
53  fprintf(stderr,"\t%s\n",timeformat[i]);
54  return(-1);
55  }
56 
57  // now print the "decoded" times
58  char *tstr=NULL,*nline=NULL;
59 
60  dprintf("TIME STAMP: ");
61  tstr=asctime(localtime(&ts));
62  nline=strrchr(tstr,'\n');
63  if(nline!=NULL) *nline=0x00; // get rid of '\n' returned by asctime
64  dprintf("%s (%s)\t",tstr,tzname[daylight]);
65 
66  tstr=asctime(gmtime(&ts));
67  nline=strrchr(tstr,'\n');
68  if(nline!=NULL) *nline=0x00; // get rid of '\n' returned by asctime
69  dprintf("%s (GMT)\n",tstr);
70  return ts;
71 }
72 
73 
74 // ===============================================================
75 // CONVERT TIME FROM <-> SQL
76 // ===============================================================
77 static void
78 timeStringConv1(const char *a, char *b) {
79  memcpy(b+0,a+0,4); // yyyy
80  b[4]='-';
81  memcpy(b+5,a+4,2); // mm
82  b[7]='-';
83  memcpy(b+8,a+6,2); // dd
84  b[10]=' ';
85  memcpy(b+11,a+8,2); // hh
86  b[13]=':';
87  memcpy(b+14,a+10,2); // mm
88  b[16]=':';
89  memcpy(b+17,a+12,2); // ss
90  b[19]=0;
91  //fprintf(out,"=%s=%s=\n",a,b);
92 }
93 
94 
95 char *
96 fmtSqlTime(const char* sqltime) {
97  static char stringTime[1024];
98  timeStringConv1(sqltime,stringTime);
99  return stringTime;
100 }
101 
102 
103 
104 
105 // ===============================================================
106 // format function
107 // ===============================================================
108 static inline char*
109 fmt(const char *s, const int len) {
110  static char fmtstr[SpinDbMaxDbPathLen];
111  sprintf(fmtstr,"%s %%%d[A-z0-9 \\t]\n",s,len-1);
112  return fmtstr;
113 }
114 
115 
116 
117 // $Log: SpinDbFunctions.C,v $
118 // Revision 1.1 2005/09/30 23:47:48 balewski
119 // start
120 //
121