Rev 624 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 624 | Rev 683 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | // Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist nicht von der Lizenz für den MikroKopter-Teil unterstellt |
1 | // Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist nicht von der Lizenz für den MikroKopter-Teil unterstellt |
Line 2... | Line 2... | ||
2 | 2 | ||
3 | /* |
3 | /* |
Line 4... | Line 4... | ||
4 | Copyright (C) 1993 Free Software Foundation |
4 | Copyright (C) 1993 Free Software Foundation |
5 | 5 | ||
6 | This file is part of the GNU IO Library. This library is free |
6 | This file is part of the GNU IO Library. This library is free |
Line 98... | Line 98... | ||
98 | if(PrintZiel == OUT_LCD) { DisplayBuff[DispPtr++] = zeichen; return(1);} |
98 | if(PrintZiel == OUT_LCD) { DisplayBuff[DispPtr++] = zeichen; return(1);} |
99 | else return(uart_putchar(zeichen)); |
99 | else return(uart_putchar(zeichen)); |
100 | } |
100 | } |
Line 101... | Line 101... | ||
101 | 101 | ||
102 | 102 | ||
103 | void PRINT(const char * ptr, unsigned int len) |
103 | void PRINT(const char * ptr, unsigned int len) |
104 | { |
104 | { |
105 | for(;len;len--) Putchar(*ptr++); |
105 | for(;len;len--) Putchar(*ptr++); |
106 | } |
106 | } |
107 | 107 | ||
108 | void PRINTP(const char * ptr, unsigned int len) |
108 | void PRINTP(const char * ptr, unsigned int len) |
109 | { |
109 | { |
Line 110... | Line 110... | ||
110 | for(;len;len--) Putchar(pgm_read_byte(ptr++)); |
110 | for(;len;len--) Putchar(pgm_read_byte(ptr++)); |
111 | } |
111 | } |
112 | 112 | ||
113 | void PAD_SP(signed char howmany) |
113 | void PAD_SP(signed char howmany) |
Line 114... | Line 114... | ||
114 | { |
114 | { |
115 | for(;howmany>0;howmany--) Putchar(' '); |
115 | for(;howmany>0;howmany--) Putchar(' '); |
116 | } |
116 | } |
117 | 117 | ||
Line 118... | Line 118... | ||
118 | void PAD_0(signed char howmany) |
118 | void PAD_0(signed char howmany) |
Line 167... | Line 167... | ||
167 | char buf[BUF]; /* space for %c, %[diouxX], %[eEfgG] */ |
167 | char buf[BUF]; /* space for %c, %[diouxX], %[eEfgG] */ |
168 | char ox[2]; /* space for 0x hex-prefix */ |
168 | char ox[2]; /* space for 0x hex-prefix */ |
Line 169... | Line 169... | ||
169 | 169 | ||
170 | PrintZiel = ziel; // bestimmt, LCD oder UART |
170 | PrintZiel = ziel; // bestimmt, LCD oder UART |
171 | va_start(ap, fmt0); |
171 | va_start(ap, fmt0); |
172 | 172 | ||
Line 173... | Line 173... | ||
173 | fmt = fmt0; |
173 | fmt = fmt0; |
174 | 174 | ||
175 | /* |
175 | /* |
Line 204... | Line 204... | ||
204 | register unsigned int _d; |
204 | register unsigned int _d; |
205 | _d=va_arg(ap, unsigned int); |
205 | _d=va_arg(ap, unsigned int); |
206 | _ulong = flags&SHORTINT ? (unsigned long)(unsigned short)_d : (unsigned long)_d; |
206 | _ulong = flags&SHORTINT ? (unsigned long)(unsigned short)_d : (unsigned long)_d; |
207 | } |
207 | } |
208 | } |
208 | } |
209 | 209 | ||
210 | #ifndef LIGHTPRINTF |
210 | #ifndef LIGHTPRINTF |
211 | if(ch==' ') { |
211 | if(ch==' ') { |
212 | /* |
212 | /* |
213 | * ``If the space and + flags both appear, the space |
213 | * ``If the space and + flags both appear, the space |
214 | * flag will be ignored.'' |
214 | * flag will be ignored.'' |
Line 288... | Line 288... | ||
288 | } else { |
288 | } else { |
289 | register int _d; |
289 | register int _d; |
290 | _d=va_arg(ap, int); |
290 | _d=va_arg(ap, int); |
291 | _ulong = flags&SHORTINT ? (long)(short)_d : (long)_d; |
291 | _ulong = flags&SHORTINT ? (long)(short)_d : (long)_d; |
292 | } |
292 | } |
293 | 293 | ||
294 | if ((long)_ulong < 0) { |
294 | if ((long)_ulong < 0) { |
295 | _ulong = -_ulong; |
295 | _ulong = -_ulong; |
296 | sign = '-'; |
296 | sign = '-'; |
297 | } |
297 | } |
298 | base = DEC; |
298 | base = DEC; |
299 | goto number; |
299 | goto number; |
300 | } else |
300 | } else |
301 | /* |
301 | /* |
302 | if (ch=='n') { |
302 | if (ch=='n') { |
303 | if (flags & LONGINT) |
303 | if (flags & LONGINT) |
304 | *va_arg(ap, long *) = ret; |
304 | *va_arg(ap, long *) = ret; |
305 | else if (flags & SHORTINT) |
305 | else if (flags & SHORTINT) |
306 | *va_arg(ap, short *) = ret; |
306 | *va_arg(ap, short *) = ret; |
307 | else |
307 | else |
308 | *va_arg(ap, int *) = ret; |
308 | *va_arg(ap, int *) = ret; |
309 | continue; // no output |
309 | continue; // no output |
310 | } else |
310 | } else |
311 | */ |
311 | */ |
312 | #ifndef LIGHTPRINTF |
312 | #ifndef LIGHTPRINTF |
313 | if (ch=='O'||ch=='o') { |
313 | if (ch=='O'||ch=='o') { |
314 | if (ch=='O') |
314 | if (ch=='O') |
315 | flags |= LONGINT; |
315 | flags |= LONGINT; |
316 | base = OCT; |
316 | base = OCT; |
317 | goto nosign; |
317 | goto nosign; |
Line 355... | Line 355... | ||
355 | size = prec; |
355 | size = prec; |
356 | } else |
356 | } else |
357 | size = strlen(cp); |
357 | size = strlen(cp); |
358 | sign = '\0'; |
358 | sign = '\0'; |
359 | } else |
359 | } else |
360 | #endif /* LIGHTPRINTF */ |
360 | #endif /* LIGHTPRINTF */ |
361 | if(ch=='U'||ch=='u') { |
361 | if(ch=='U'||ch=='u') { |
362 | if (ch=='U') |
362 | if (ch=='U') |
363 | flags |= LONGINT; |
363 | flags |= LONGINT; |
364 | base = DEC; |
364 | base = DEC; |
365 | goto nosign; |
365 | goto nosign; |
Line 399... | Line 399... | ||
399 | } |
399 | } |
400 | *--cp=_d; |
400 | *--cp=_d; |
401 | _ulong /= base; |
401 | _ulong /= base; |
402 | } while (notlastdigit); |
402 | } while (notlastdigit); |
403 | #ifndef LIGHTPRINTF |
403 | #ifndef LIGHTPRINTF |
404 | // handle octal leading 0 |
404 | // handle octal leading 0 |
405 | if (base==OCT && flags & ALT && *cp != '0') |
405 | if (base==OCT && flags & ALT && *cp != '0') |
406 | *--cp = '0'; |
406 | *--cp = '0'; |
407 | #endif |
407 | #endif |
408 | } |
408 | } |