diff options
Diffstat (limited to 'date.c')
-rw-r--r-- | date.c | 108 |
1 files changed, 46 insertions, 62 deletions
@@ -74,73 +74,57 @@ struct tm *date_conv_time(struct tm *tm_time, const char *t_string) | |||
74 | 74 | ||
75 | struct tm *date_conv_ftime(struct tm *tm_time, const char *t_string) | 75 | struct tm *date_conv_ftime(struct tm *tm_time, const char *t_string) |
76 | { | 76 | { |
77 | struct tm itm_time, jtm_time, ktm_time, ltm_time, mtm_time, ntm_time; | 77 | struct tm t; |
78 | |||
79 | itm_time = *tm_time; | ||
80 | jtm_time = *tm_time; | ||
81 | ktm_time = *tm_time; | ||
82 | ltm_time = *tm_time; | ||
83 | mtm_time = *tm_time; | ||
84 | ntm_time = *tm_time; | ||
85 | 78 | ||
86 | /* Parse input and assign appropriately to tm_time */ | 79 | /* Parse input and assign appropriately to tm_time */ |
87 | 80 | ||
88 | if (sscanf(t_string, "%d:%d:%d", | 81 | if (t=*tm_time,sscanf(t_string, "%d:%d:%d", |
89 | &itm_time.tm_hour, &itm_time.tm_min, &itm_time.tm_sec) == 3) { | 82 | &t.tm_hour, &t.tm_min, &t.tm_sec) == 3) { |
90 | 83 | /* no adjustments needed */ | |
91 | *tm_time = itm_time; | ||
92 | return (tm_time); | ||
93 | |||
94 | } else if (sscanf(t_string, "%d:%d", | ||
95 | &jtm_time.tm_hour, &jtm_time.tm_min) == 2) { | ||
96 | |||
97 | *tm_time = jtm_time; | ||
98 | return (tm_time); | ||
99 | |||
100 | } else if (sscanf(t_string, "%d.%d-%d:%d:%d", | ||
101 | &ktm_time.tm_mon, | ||
102 | &ktm_time.tm_mday, | ||
103 | &ktm_time.tm_hour, | ||
104 | &ktm_time.tm_min, &ktm_time.tm_sec) == 5) { | ||
105 | |||
106 | ktm_time.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ | ||
107 | *tm_time = ktm_time; | ||
108 | return (tm_time); | ||
109 | |||
110 | } else if (sscanf(t_string, "%d.%d-%d:%d", | ||
111 | <m_time.tm_mon, | ||
112 | <m_time.tm_mday, | ||
113 | <m_time.tm_hour, <m_time.tm_min) == 4) { | ||
114 | |||
115 | ltm_time.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ | ||
116 | *tm_time = ltm_time; | ||
117 | return (tm_time); | ||
118 | |||
119 | } else if (sscanf(t_string, "%d.%d.%d-%d:%d:%d", | ||
120 | &mtm_time.tm_year, | ||
121 | &mtm_time.tm_mon, | ||
122 | &mtm_time.tm_mday, | ||
123 | &mtm_time.tm_hour, | ||
124 | &mtm_time.tm_min, &mtm_time.tm_sec) == 6) { | ||
125 | |||
126 | mtm_time.tm_year -= 1900; /* Adjust years */ | ||
127 | mtm_time.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ | ||
128 | *tm_time = mtm_time; | ||
129 | return (tm_time); | ||
130 | |||
131 | } else if (sscanf(t_string, "%d.%d.%d-%d:%d", | ||
132 | &ntm_time.tm_year, | ||
133 | &ntm_time.tm_mon, | ||
134 | &ntm_time.tm_mday, | ||
135 | &ntm_time.tm_hour, &ntm_time.tm_min) == 5) { | ||
136 | ntm_time.tm_year -= 1900; /* Adjust years */ | ||
137 | ntm_time.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ | ||
138 | *tm_time = ntm_time; | ||
139 | return (tm_time); | ||
140 | 84 | ||
141 | } | 85 | } else if (t=*tm_time,sscanf(t_string, "%d:%d", |
86 | &t.tm_hour, &t.tm_min) == 2) { | ||
87 | /* no adjustments needed */ | ||
88 | |||
89 | |||
90 | } else if (t=*tm_time,sscanf(t_string, "%d.%d-%d:%d:%d", | ||
91 | &t.tm_mon, | ||
92 | &t.tm_mday, | ||
93 | &t.tm_hour, | ||
94 | &t.tm_min, &t.tm_sec) == 5) { | ||
95 | |||
96 | t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ | ||
97 | |||
98 | } else if (t=*tm_time,sscanf(t_string, "%d.%d-%d:%d", | ||
99 | &t.tm_mon, | ||
100 | &t.tm_mday, | ||
101 | &t.tm_hour, &t.tm_min) == 4) { | ||
102 | |||
103 | t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ | ||
142 | 104 | ||
143 | fatalError(invalid_date, t_string); | 105 | } else if (t=*tm_time,sscanf(t_string, "%d.%d.%d-%d:%d:%d", |
106 | &t.tm_year, | ||
107 | &t.tm_mon, | ||
108 | &t.tm_mday, | ||
109 | &t.tm_hour, | ||
110 | &t.tm_min, &t.tm_sec) == 6) { | ||
111 | |||
112 | t.tm_year -= 1900; /* Adjust years */ | ||
113 | t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ | ||
114 | |||
115 | } else if (t=*tm_time,sscanf(t_string, "%d.%d.%d-%d:%d", | ||
116 | &t.tm_year, | ||
117 | &t.tm_mon, | ||
118 | &t.tm_mday, | ||
119 | &t.tm_hour, &t.tm_min) == 5) { | ||
120 | t.tm_year -= 1900; /* Adjust years */ | ||
121 | t.tm_mon -= 1; /* Adjust dates from 1-12 to 0-11 */ | ||
122 | |||
123 | } else { | ||
124 | fatalError(invalid_date, t_string); | ||
125 | } | ||
126 | *tm_time = t; | ||
127 | return (tm_time); | ||
144 | } | 128 | } |
145 | 129 | ||
146 | 130 | ||