CMGDK r49-rc2
|
00001 / * C o p y r i g h t ( C ) 2 0 0 4 - 2 0 0 5 M y S Q L A B 00002 00003 T h i s p r o g r a m i s f r e e s o f t w a r e ; y o u c a n r e d i s t r i b u t e i t a n d / o r m o d i f y 00004 00005 i t u n d e r t h e t e r m s o f t h e G N U G e n e r a l P u b l i c L i c e n s e a s p u b l i s h e d b y 00006 00007 t h e F r e e S o f t w a r e F o u n d a t i o n ; v e r s i o n 2 o f t h e L i c e n s e . 00008 00009 T h i s p r o g r a m i s d i s t r i b u t e d i n t h e h o p e t h a t i t w i l l b e u s e f u l , 00010 00011 b u t W I T H O U T A N Y W A R R A N T Y ; w i t h o u t e v e n t h e i m p l i e d w a r r a n t y o f 00012 00013 M E R C H A N T A B I L I T Y o r F I T N E S S F O R A P A R T I C U L A R P U R P O S E . S e e t h e 00014 00015 G N U G e n e r a l P u b l i c L i c e n s e f o r m o r e d e t a i l s . 00016 00017 Y o u s h o u l d h a v e r e c e i v e d a c o p y o f t h e G N U G e n e r a l P u b l i c L i c e n s e 00018 00019 a l o n g w i t h t h i s p r o g r a m ; i f n o t , w r i t e t o t h e F r e e S o f t w a r e 00020 00021 F o u n d a t i o n , I n c . , 5 9 T e m p l e P l a c e , S u i t e 3 3 0 , B o s t o n , M A 0 2 1 1 1 - 1 3 0 7 U S A * / 00022 00023 / * 00024 00025 T h i s i s a p r i v a t e h e a d e r o f s q l - c o m m o n l i b r a r y , c o n t a i n i n g 00026 00027 d e c l a r a t i o n s f o r m y _ t i m e . c 00028 00029 * / 00030 00031 # i f n d e f _ m y _ t i m e _ h _ 00032 00033 # d e f i n e _ m y _ t i m e _ h _ 00034 00035 # i n c l u d e " m y _ g l o b a l . h " 00036 00037 # i n c l u d e " m y s q l _ t i m e . h " 00038 00039 C _ M O D E _ S T A R T 00040 00041 e x t e r n u l o n g l o n g l o g _ 1 0 _ i n t [ 2 0 ] ; 00042 00043 e x t e r n u c h a r d a y s _ i n _ m o n t h [ ] ; 00044 00045 / * 00046 00047 P o r t a b l e t i m e _ t r e p l a c e m e n t . 00048 00049 S h o u l d b e s i g n e d a n d h o l d s e c o n d s f o r 1 9 0 2 - - 2 0 3 8 - 0 1 - 1 9 r a n g e 00050 00051 i . e a t l e a s t a 3 2 b i t v a r i a b l e 00052 00053 U s i n g t h e s y s t e m b u i l t i n t i m e _ t i s n o t a n o p t i o n a s 00054 00055 w e r e l y o n t h e a b o v e r e q u i r e m e n t s i n t h e t i m e f u n c t i o n s 00056 00057 F o r e x a m p l e Q N X h a s a n u n s i g n e d t i m e _ t t y p e 00058 00059 * / 00060 00061 t y p e d e f l o n g m y _ t i m e _ t ; 00062 00063 # d e f i n e M Y _ T I M E _ T _ M A X L O N G _ M A X 00064 00065 # d e f i n e M Y _ T I M E _ T _ M I N L O N G _ M I N 00066 00067 / * T i m e h a n d l i n g d e f a u l t s * / 00068 00069 # d e f i n e T I M E S T A M P _ M A X _ Y E A R 2 0 3 8 00070 00071 # d e f i n e T I M E S T A M P _ M I N _ Y E A R ( 1 9 0 0 + Y Y _ P A R T _ Y E A R - 1 ) 00072 00073 # d e f i n e T I M E S T A M P _ M A X _ V A L U E I N T _ M A X 3 2 00074 00075 # d e f i n e T I M E S T A M P _ M I N _ V A L U E 1 00076 00077 / * t w o - d i g i t y e a r s < t h i s a r e 2 0 . . ; > = t h i s a r e 1 9 . . * / 00078 00079 # d e f i n e Y Y _ P A R T _ Y E A R 7 0 00080 00081 / * F l a g s t o s t r _ t o _ d a t e t i m e * / 00082 00083 # d e f i n e T I M E _ F U Z Z Y _ D A T E 1 00084 00085 # d e f i n e T I M E _ D A T E T I M E _ O N L Y 2 00086 00087 / * M u s t b e s a m e a s M O D E _ N O _ Z E R O _ I N _ D A T E * / 00088 00089 # d e f i n e T I M E _ N O _ Z E R O _ I N _ D A T E ( 6 5 5 3 6 L * 2 * 2 * 2 * 2 * 2 * 2 * 2 ) 00090 00091 / * M u s t b e s a m e a s M O D E _ N O _ Z E R O _ D A T E * / 00092 00093 # d e f i n e T I M E _ N O _ Z E R O _ D A T E ( T I M E _ N O _ Z E R O _ I N _ D A T E * 2 ) 00094 00095 # d e f i n e T I M E _ I N V A L I D _ D A T E S ( T I M E _ N O _ Z E R O _ D A T E * 2 ) 00096 00097 # d e f i n e M Y S Q L _ T I M E _ W A R N _ T R U N C A T E D 1 00098 00099 # d e f i n e M Y S Q L _ T I M E _ W A R N _ O U T _ O F _ R A N G E 2 00100 00101 / * L i m i t s f o r t h e T I M E d a t a t y p e * / 00102 00103 # d e f i n e T I M E _ M A X _ H O U R 8 3 8 00104 00105 # d e f i n e T I M E _ M A X _ M I N U T E 5 9 00106 00107 # d e f i n e T I M E _ M A X _ S E C O N D 5 9 00108 00109 # d e f i n e T I M E _ M A X _ V A L U E ( T I M E _ M A X _ H O U R * 1 0 0 0 0 + T I M E _ M A X _ M I N U T E * 1 0 0 + \ 00110 00111 T I M E _ M A X _ S E C O N D ) 00112 00113 # d e f i n e T I M E _ M A X _ V A L U E _ S E C O N D S ( T I M E _ M A X _ H O U R * 3 6 0 0 L + \ 00114 00115 T I M E _ M A X _ M I N U T E * 6 0 L + T I M E _ M A X _ S E C O N D ) 00116 00117 m y _ b o o l c h e c k _ d a t e ( c o n s t M Y S Q L _ T I M E * l t i m e , m y _ b o o l n o t _ z e r o _ d a t e , 00118 00119 u l o n g f l a g s , i n t * w a s _ c u t ) ; 00120 00121 e n u m e n u m _ m y s q l _ t i m e s t a m p _ t y p e 00122 00123 s t r _ t o _ d a t e t i m e ( c o n s t c h a r * s t r , u i n t l e n g t h , M Y S Q L _ T I M E * l _ t i m e , 00124 00125 u i n t f l a g s , i n t * w a s _ c u t ) ; 00126 00127 l o n g l o n g n u m b e r _ t o _ d a t e t i m e ( l o n g l o n g n r , M Y S Q L _ T I M E * t i m e _ r e s , 00128 00129 u i n t f l a g s , i n t * w a s _ c u t ) ; 00130 00131 u l o n g l o n g T I M E _ t o _ u l o n g l o n g _ d a t e t i m e ( c o n s t M Y S Q L _ T I M E * ) ; 00132 00133 u l o n g l o n g T I M E _ t o _ u l o n g l o n g _ d a t e ( c o n s t M Y S Q L _ T I M E * ) ; 00134 00135 u l o n g l o n g T I M E _ t o _ u l o n g l o n g _ t i m e ( c o n s t M Y S Q L _ T I M E * ) ; 00136 00137 u l o n g l o n g T I M E _ t o _ u l o n g l o n g ( c o n s t M Y S Q L _ T I M E * ) ; 00138 00139 00140 00141 m y _ b o o l s t r _ t o _ t i m e ( c o n s t c h a r * s t r , u i n t l e n g t h , M Y S Q L _ T I M E * l _ t i m e , 00142 00143 i n t * w a r n i n g ) ; 00144 00145 i n t c h e c k _ t i m e _ r a n g e ( s t r u c t s t _ m y s q l _ t i m e * , i n t * w a r n i n g ) ; 00146 00147 l o n g c a l c _ d a y n r ( u i n t y e a r , u i n t m o n t h , u i n t d a y ) ; 00148 00149 u i n t c a l c _ d a y s _ i n _ y e a r ( u i n t y e a r ) ; 00150 00151 u i n t y e a r _ 2 0 0 0 _ h a n d l i n g ( u i n t y e a r ) ; 00152 00153 v o i d m y _ i n i t _ t i m e ( v o i d ) ; 00154 00155 00156 00157 / * 00158 00159 F u n c t i o n t o c h e c k s a n i t y o f a T I M E S T A M P v a l u e 00160 00161 D E S C R I P T I O N 00162 00163 C h e c k i f a g i v e n M Y S Q L _ T I M E v a l u e f i t s i n T I M E S T A M P r a n g e . 00164 00165 T h i s f u n c t i o n d o e s n ' t m a k e p r e c i s e c h e c k , b u t r a t h e r a r o u g h 00166 00167 e s t i m a t e . 00168 00169 R E T U R N V A L U E S 00170 00171 F A L S E T h e v a l u e s e e m s s a n e 00172 00173 T R U E T h e M Y S Q L _ T I M E v a l u e i s d e f i n i t e l y o u t o f r a n g e 00174 00175 * / 00176 00177 s t a t i c i n l i n e m y _ b o o l v a l i d a t e _ t i m e s t a m p _ r a n g e ( c o n s t M Y S Q L _ T I M E * t ) 00178 00179 { 00180 00181 i f ( ( t - > y e a r > T I M E S T A M P _ M A X _ Y E A R | | t - > y e a r < T I M E S T A M P _ M I N _ Y E A R ) | | 00182 00183 ( t - > y e a r = = T I M E S T A M P _ M A X _ Y E A R & & ( t - > m o n t h > 1 | | t - > d a y > 1 9 ) ) | | 00184 00185 ( t - > y e a r = = T I M E S T A M P _ M I N _ Y E A R & & ( t - > m o n t h < 1 2 | | t - > d a y < 3 1 ) ) ) 00186 00187 r e t u r n F A L S E ; 00188 00189 r e t u r n T R U E ; 00190 00191 } 00192 00193 m y _ t i m e _ t 00194 00195 m y _ s y s t e m _ g m t _ s e c ( c o n s t M Y S Q L _ T I M E * t , l o n g * m y _ t i m e z o n e , 00196 00197 m y _ b o o l * i n _ d s t _ t i m e _ g a p ) ; 00198 00199 v o i d s e t _ z e r o _ t i m e ( M Y S Q L _ T I M E * t m , e n u m e n u m _ m y s q l _ t i m e s t a m p _ t y p e t i m e _ t y p e ) ; 00200 00201 / * 00202 00203 R e q u i r e d b u f f e r l e n g t h f o r m y _ t i m e _ t o _ s t r , m y _ d a t e _ t o _ s t r , 00204 00205 m y _ d a t e t i m e _ t o _ s t r a n d T I M E _ t o _ s t r i n g f u n c t i o n s . N o t e , t h a t t h e 00206 00207 c a l l e r i s s t i l l r e s p o n s i b l e t o c h e c k t h a t g i v e n T I M E s t r u c t u r e 00208 00209 h a s v a l u e s i n v a l i d r a n g e s , o t h e r w i s e s i z e o f t h e b u f f e r c o u l d 00210 00211 b e n o t e n o u g h . W e a l s o r e l y o n t h e f a c t t h a t e v e n w r o n g v a l u e s 00212 00213 s e n t u s i n g b i n a r y p r o t o c o l f i t i n t h i s b u f f e r . 00214 00215 * / 00216 00217 # d e f i n e M A X _ D A T E _ S T R I N G _ R E P _ L E N G T H 3 0 00218 00219 i n t m y _ t i m e _ t o _ s t r ( c o n s t M Y S Q L _ T I M E * l _ t i m e , c h a r * t o ) ; 00220 00221 i n t m y _ d a t e _ t o _ s t r ( c o n s t M Y S Q L _ T I M E * l _ t i m e , c h a r * t o ) ; 00222 00223 i n t m y _ d a t e t i m e _ t o _ s t r ( c o n s t M Y S Q L _ T I M E * l _ t i m e , c h a r * t o ) ; 00224 00225 i n t m y _ T I M E _ t o _ s t r ( c o n s t M Y S Q L _ T I M E * l _ t i m e , c h a r * t o ) ; 00226 00227 / * 00228 00229 A v a i l a b l e i n t e r v a l t y p e s u s e d i n a n y s t a t e m e n t . 00230 00231 ' i n t e r v a l _ t y p e ' m u s t b e s o r t e d s o t h a t s i m p l e i n t e r v a l s c o m e s f i r s t , 00232 00233 i e y e a r , q u a r t e r , m o n t h , w e e k , d a y , h o u r , e t c . T h e o r d e r b a s e d o n 00234 00235 i n t e r v a l s i z e i s a l s o i m p o r t a n t a n d t h e i n t e r v a l s s h o u l d b e k e p t i n a 00236 00237 l a r g e t o s m a l l e r o r d e r . ( g e t _ i n t e r v a l _ v a l u e ( ) d e p e n d s o n t h i s ) 00238 00239 00240 00241 N o t e : I f y o u c h a n g e t h e o r d e r o f e l e m e n t s i n t h i s e n u m y o u s h o u l d f i x 00242 00243 o r d e r o f e l e m e n t s i n ' i n t e r v a l _ t y p e _ t o _ n a m e ' a n d ' i n t e r v a l _ n a m e s ' 00244 00245 a r r a y s 00246 00247 00248 00249 S e e a l s o i n t e r v a l _ t y p e _ t o _ n a m e , g e t _ i n t e r v a l _ v a l u e , i n t e r v a l _ n a m e s 00250 00251 * / 00252 00253 e n u m i n t e r v a l _ t y p e 00254 00255 { 00256 00257 I N T E R V A L _ Y E A R , I N T E R V A L _ Q U A R T E R , I N T E R V A L _ M O N T H , I N T E R V A L _ W E E K , I N T E R V A L _ D A Y , 00258 00259 I N T E R V A L _ H O U R , I N T E R V A L _ M I N U T E , I N T E R V A L _ S E C O N D , I N T E R V A L _ M I C R O S E C O N D , 00260 00261 I N T E R V A L _ Y E A R _ M O N T H , I N T E R V A L _ D A Y _ H O U R , I N T E R V A L _ D A Y _ M I N U T E , 00262 00263 I N T E R V A L _ D A Y _ S E C O N D , I N T E R V A L _ H O U R _ M I N U T E , I N T E R V A L _ H O U R _ S E C O N D , 00264 00265 I N T E R V A L _ M I N U T E _ S E C O N D , I N T E R V A L _ D A Y _ M I C R O S E C O N D , I N T E R V A L _ H O U R _ M I C R O S E C O N D , 00266 00267 I N T E R V A L _ M I N U T E _ M I C R O S E C O N D , I N T E R V A L _ S E C O N D _ M I C R O S E C O N D , I N T E R V A L _ L A S T 00268 00269 } ; 00270 00271 C _ M O D E _ E N D 00272 00273 # e n d i f / * _ m y _ t i m e _ h _ * / 00274 00275