Mercurial > emacs
comparison src/strftime.c @ 17965:2ef01cc793bf
automatically generated from GPLed version
author | Paul Eggert <eggert@twinsun.com> |
---|---|
date | Tue, 27 May 1997 03:15:29 +0000 |
parents | 8f3dcea869f5 |
children | 47be751da08b |
comparison
equal
deleted
inserted
replaced
17964:160c3be66a71 | 17965:2ef01cc793bf |
---|---|
175 | 175 |
176 #if !defined (memset) && !defined (HAVE_MEMSET) && !defined (_LIBC) | 176 #if !defined (memset) && !defined (HAVE_MEMSET) && !defined (_LIBC) |
177 /* Some systems lack the `memset' function and we don't want to | 177 /* Some systems lack the `memset' function and we don't want to |
178 introduce additional dependencies. */ | 178 introduce additional dependencies. */ |
179 static const char spaces[16] = " "; | 179 static const char spaces[16] = " "; |
180 static const char zeroes[16] = "0000000000000000"; | |
180 | 181 |
181 # define memset_space(P, Len) \ | 182 # define memset_space(P, Len) \ |
182 do { \ | 183 do { \ |
183 int _len = (Len); \ | 184 int _len = (Len); \ |
184 \ | 185 \ |
189 (P) += _this; \ | 190 (P) += _this; \ |
190 _len -= _this; \ | 191 _len -= _this; \ |
191 } \ | 192 } \ |
192 while (_len > 0); \ | 193 while (_len > 0); \ |
193 } while (0) | 194 } while (0) |
195 | |
196 # define memset_zero(P, Len) \ | |
197 do { \ | |
198 int _len = (Len); \ | |
199 \ | |
200 do \ | |
201 { \ | |
202 int _this = _len > 16 ? 16 : _len; \ | |
203 memcpy ((P), zeroes, _this); \ | |
204 (P) += _this; \ | |
205 _len -= _this; \ | |
206 } \ | |
207 while (_len > 0); \ | |
208 } while (0) | |
194 #else | 209 #else |
195 # define memset_space(P, Len) (memset ((P), ' ', (Len)), (P) += (Len)) | 210 # define memset_space(P, Len) (memset ((P), ' ', (Len)), (P) += (Len)) |
196 #endif | 211 # define memset_zero(P, Len) (memset ((P), '0', (Len)), (P) += (Len)) |
197 | 212 #endif |
198 #define add(n, f) \ | 213 |
214 #define add(n, f) \ | |
199 do \ | 215 do \ |
200 { \ | 216 { \ |
201 int _n = (n); \ | 217 int _n = (n); \ |
202 int _delta = width - _n; \ | 218 int _delta = width - _n; \ |
203 int _incr = _n + (_delta > 0 ? _delta : 0); \ | 219 int _incr = _n + (_delta > 0 ? _delta : 0); \ |
204 if (i + _incr >= maxsize) \ | 220 if (i + _incr >= maxsize) \ |
205 return 0; \ | 221 return 0; \ |
206 if (p) \ | 222 if (p) \ |
207 { \ | 223 { \ |
208 if (_delta > 0) \ | 224 if (_delta > 0) \ |
209 memset_space (p, _delta); \ | 225 { \ |
226 if (pad == '0') \ | |
227 memset_zero (p, _delta); \ | |
228 else \ | |
229 memset_space (p, _delta); \ | |
230 } \ | |
210 f; \ | 231 f; \ |
211 p += _n; \ | 232 p += _n; \ |
212 } \ | 233 } \ |
213 i += _incr; \ | 234 i += _incr; \ |
214 } while (0) | 235 } while (0) |