diff options
Diffstat (limited to 'qemu/roms/SLOF/lib/libc/stdio')
-rw-r--r-- | qemu/roms/SLOF/lib/libc/stdio/Makefile.inc | 23 | ||||
-rw-r--r-- | qemu/roms/SLOF/lib/libc/stdio/fileno.c | 19 | ||||
-rw-r--r-- | qemu/roms/SLOF/lib/libc/stdio/fprintf.c | 26 | ||||
-rw-r--r-- | qemu/roms/SLOF/lib/libc/stdio/fscanf.c | 26 | ||||
-rw-r--r-- | qemu/roms/SLOF/lib/libc/stdio/printf.c | 27 | ||||
-rw-r--r-- | qemu/roms/SLOF/lib/libc/stdio/putc.c | 25 | ||||
-rw-r--r-- | qemu/roms/SLOF/lib/libc/stdio/putchar.c | 21 | ||||
-rw-r--r-- | qemu/roms/SLOF/lib/libc/stdio/puts.c | 28 | ||||
-rw-r--r-- | qemu/roms/SLOF/lib/libc/stdio/scanf.c | 26 | ||||
-rw-r--r-- | qemu/roms/SLOF/lib/libc/stdio/setvbuf.c | 28 | ||||
-rw-r--r-- | qemu/roms/SLOF/lib/libc/stdio/sprintf.c | 30 | ||||
-rw-r--r-- | qemu/roms/SLOF/lib/libc/stdio/stdchnls.c | 23 | ||||
-rw-r--r-- | qemu/roms/SLOF/lib/libc/stdio/vfprintf.c | 27 | ||||
-rw-r--r-- | qemu/roms/SLOF/lib/libc/stdio/vfscanf.c | 266 | ||||
-rw-r--r-- | qemu/roms/SLOF/lib/libc/stdio/vsnprintf.c | 298 | ||||
-rw-r--r-- | qemu/roms/SLOF/lib/libc/stdio/vsprintf.c | 19 | ||||
-rw-r--r-- | qemu/roms/SLOF/lib/libc/stdio/vsscanf.c | 131 |
17 files changed, 0 insertions, 1043 deletions
diff --git a/qemu/roms/SLOF/lib/libc/stdio/Makefile.inc b/qemu/roms/SLOF/lib/libc/stdio/Makefile.inc deleted file mode 100644 index ac5302d01..000000000 --- a/qemu/roms/SLOF/lib/libc/stdio/Makefile.inc +++ /dev/null @@ -1,23 +0,0 @@ -# ***************************************************************************** -# * Copyright (c) 2004, 2008 IBM Corporation -# * All rights reserved. -# * This program and the accompanying materials -# * are made available under the terms of the BSD License -# * which accompanies this distribution, and is available at -# * http://www.opensource.org/licenses/bsd-license.php -# * -# * Contributors: -# * IBM Corporation - initial implementation -# ****************************************************************************/ - - -STDIO_SRC_C = fscanf.c sprintf.c vfprintf.c vsnprintf.c vsprintf.c fprintf.c \ - printf.c setvbuf.c putc.c puts.c putchar.c scanf.c stdchnls.c \ - vfscanf.c vsscanf.c fileno.c - -STDIO_SRC_ASM = -STDIO_SRCS = $(STDIO_SRC_C:%=$(STDIOCMNDIR)/%) $(STDIO_SRC_ASM:%=$(STDIOCMNDIR)/%) -STDIO_OBJS = $(STDIO_SRC_C:%.c=%.o) $(STDIO_SRC_ASM:%.S=%.o) - -%.o : $(STDIOCMNDIR)/%.c - $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@ diff --git a/qemu/roms/SLOF/lib/libc/stdio/fileno.c b/qemu/roms/SLOF/lib/libc/stdio/fileno.c deleted file mode 100644 index 6e239511d..000000000 --- a/qemu/roms/SLOF/lib/libc/stdio/fileno.c +++ /dev/null @@ -1,19 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2004, 2008 IBM Corporation - * All rights reserved. - * This program and the accompanying materials - * are made available under the terms of the BSD License - * which accompanies this distribution, and is available at - * http://www.opensource.org/licenses/bsd-license.php - * - * Contributors: - * IBM Corporation - initial implementation - *****************************************************************************/ - -#include <stdio.h> - -int -fileno(FILE *stream) -{ - return stream->fd; -} diff --git a/qemu/roms/SLOF/lib/libc/stdio/fprintf.c b/qemu/roms/SLOF/lib/libc/stdio/fprintf.c deleted file mode 100644 index 866df3934..000000000 --- a/qemu/roms/SLOF/lib/libc/stdio/fprintf.c +++ /dev/null @@ -1,26 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2004, 2008 IBM Corporation - * All rights reserved. - * This program and the accompanying materials - * are made available under the terms of the BSD License - * which accompanies this distribution, and is available at - * http://www.opensource.org/licenses/bsd-license.php - * - * Contributors: - * IBM Corporation - initial implementation - *****************************************************************************/ - -#include "stdio.h" - - -int fprintf(FILE *stream, const char* fmt, ...) -{ - int count; - va_list ap; - - va_start(ap, fmt); - count = vfprintf(stream, fmt, ap); - va_end(ap); - - return count; -} diff --git a/qemu/roms/SLOF/lib/libc/stdio/fscanf.c b/qemu/roms/SLOF/lib/libc/stdio/fscanf.c deleted file mode 100644 index 321b1630a..000000000 --- a/qemu/roms/SLOF/lib/libc/stdio/fscanf.c +++ /dev/null @@ -1,26 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2004, 2008 IBM Corporation - * All rights reserved. - * This program and the accompanying materials - * are made available under the terms of the BSD License - * which accompanies this distribution, and is available at - * http://www.opensource.org/licenses/bsd-license.php - * - * Contributors: - * IBM Corporation - initial implementation - *****************************************************************************/ - -#include <stdio.h> - -int -fscanf(FILE *stream, const char *fmt, ...) -{ - int count; - va_list ap; - - va_start(ap, fmt); - count = vfscanf(stream, fmt, ap); - va_end(ap); - - return count; -} diff --git a/qemu/roms/SLOF/lib/libc/stdio/printf.c b/qemu/roms/SLOF/lib/libc/stdio/printf.c deleted file mode 100644 index 01f4592dd..000000000 --- a/qemu/roms/SLOF/lib/libc/stdio/printf.c +++ /dev/null @@ -1,27 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2004, 2008 IBM Corporation - * All rights reserved. - * This program and the accompanying materials - * are made available under the terms of the BSD License - * which accompanies this distribution, and is available at - * http://www.opensource.org/licenses/bsd-license.php - * - * Contributors: - * IBM Corporation - initial implementation - *****************************************************************************/ - -#include "stdio.h" - - -int printf(const char* fmt, ...) -{ - int count; - va_list ap; - - va_start(ap, fmt); - count = vfprintf(stdout, fmt, ap); - va_end(ap); - - return count; -} - diff --git a/qemu/roms/SLOF/lib/libc/stdio/putc.c b/qemu/roms/SLOF/lib/libc/stdio/putc.c deleted file mode 100644 index 230e9d196..000000000 --- a/qemu/roms/SLOF/lib/libc/stdio/putc.c +++ /dev/null @@ -1,25 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2004, 2008 IBM Corporation - * All rights reserved. - * This program and the accompanying materials - * are made available under the terms of the BSD License - * which accompanies this distribution, and is available at - * http://www.opensource.org/licenses/bsd-license.php - * - * Contributors: - * IBM Corporation - initial implementation - *****************************************************************************/ - -#include "stdio.h" -#include "unistd.h" - -int -putc(int ch, FILE *stream) -{ - unsigned char outchar = ch; - - if (write(stream->fd, &outchar, 1) == 1) - return outchar; - else - return EOF; -} diff --git a/qemu/roms/SLOF/lib/libc/stdio/putchar.c b/qemu/roms/SLOF/lib/libc/stdio/putchar.c deleted file mode 100644 index 5c750d90a..000000000 --- a/qemu/roms/SLOF/lib/libc/stdio/putchar.c +++ /dev/null @@ -1,21 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2004, 2008 IBM Corporation - * All rights reserved. - * This program and the accompanying materials - * are made available under the terms of the BSD License - * which accompanies this distribution, and is available at - * http://www.opensource.org/licenses/bsd-license.php - * - * Contributors: - * IBM Corporation - initial implementation - *****************************************************************************/ - - -#include "stdio.h" - - -int -putchar(int ch) -{ - return putc(ch, stdout); -} diff --git a/qemu/roms/SLOF/lib/libc/stdio/puts.c b/qemu/roms/SLOF/lib/libc/stdio/puts.c deleted file mode 100644 index 3f48dbfda..000000000 --- a/qemu/roms/SLOF/lib/libc/stdio/puts.c +++ /dev/null @@ -1,28 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2004, 2008 IBM Corporation - * All rights reserved. - * This program and the accompanying materials - * are made available under the terms of the BSD License - * which accompanies this distribution, and is available at - * http://www.opensource.org/licenses/bsd-license.php - * - * Contributors: - * IBM Corporation - initial implementation - *****************************************************************************/ - - -#include "stdio.h" -#include "string.h" -#include "unistd.h" - - -int -puts(char *str) -{ - int ret; - - ret = write(stdout->fd, str, strlen(str)); - write(stdout->fd, "\r\n", 2); - - return ret; -} diff --git a/qemu/roms/SLOF/lib/libc/stdio/scanf.c b/qemu/roms/SLOF/lib/libc/stdio/scanf.c deleted file mode 100644 index 96b639980..000000000 --- a/qemu/roms/SLOF/lib/libc/stdio/scanf.c +++ /dev/null @@ -1,26 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2004, 2008 IBM Corporation - * All rights reserved. - * This program and the accompanying materials - * are made available under the terms of the BSD License - * which accompanies this distribution, and is available at - * http://www.opensource.org/licenses/bsd-license.php - * - * Contributors: - * IBM Corporation - initial implementation - *****************************************************************************/ - -#include <stdio.h> - -int -scanf(const char *fmt, ...) -{ - int count; - va_list ap; - - va_start(ap, fmt); - count = vfscanf(stdin, fmt, ap); - va_end(ap); - - return count; -} diff --git a/qemu/roms/SLOF/lib/libc/stdio/setvbuf.c b/qemu/roms/SLOF/lib/libc/stdio/setvbuf.c deleted file mode 100644 index 9b62dd8ff..000000000 --- a/qemu/roms/SLOF/lib/libc/stdio/setvbuf.c +++ /dev/null @@ -1,28 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2004, 2008 IBM Corporation - * All rights reserved. - * This program and the accompanying materials - * are made available under the terms of the BSD License - * which accompanies this distribution, and is available at - * http://www.opensource.org/licenses/bsd-license.php - * - * Contributors: - * IBM Corporation - initial implementation - *****************************************************************************/ - -#include <stdio.h> - -int setvbuf(FILE *stream, char *buf, int mode , size_t size) -{ - if (mode != _IONBF && mode != _IOLBF && mode != _IOFBF) - return -1; - stream->buf = buf; - stream->mode = mode; - stream->bufsiz = size; - return 0; -} - -void setbuf(FILE *stream, char *buf) -{ - setvbuf(stream, buf, buf ? _IOFBF : _IONBF, BUFSIZ); -} diff --git a/qemu/roms/SLOF/lib/libc/stdio/sprintf.c b/qemu/roms/SLOF/lib/libc/stdio/sprintf.c deleted file mode 100644 index 9c4540e2e..000000000 --- a/qemu/roms/SLOF/lib/libc/stdio/sprintf.c +++ /dev/null @@ -1,30 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2004, 2008 IBM Corporation - * All rights reserved. - * This program and the accompanying materials - * are made available under the terms of the BSD License - * which accompanies this distribution, and is available at - * http://www.opensource.org/licenses/bsd-license.php - * - * Contributors: - * IBM Corporation - initial implementation - *****************************************************************************/ - -#include <stdio.h> - - -int sprintf(char *buff, const char *format, ...) -{ - va_list ar; - int count; - - if ((buff==NULL) || (format==NULL)) - return(-1); - - va_start(ar, format); - count = vsprintf(buff, format, ar); - va_end(ar); - - return(count); -} - diff --git a/qemu/roms/SLOF/lib/libc/stdio/stdchnls.c b/qemu/roms/SLOF/lib/libc/stdio/stdchnls.c deleted file mode 100644 index 41ed958bf..000000000 --- a/qemu/roms/SLOF/lib/libc/stdio/stdchnls.c +++ /dev/null @@ -1,23 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2004, 2008 IBM Corporation - * All rights reserved. - * This program and the accompanying materials - * are made available under the terms of the BSD License - * which accompanies this distribution, and is available at - * http://www.opensource.org/licenses/bsd-license.php - * - * Contributors: - * IBM Corporation - initial implementation - *****************************************************************************/ - - -#include "stdio.h" - -static char stdin_buffer[BUFSIZ], stdout_buffer[BUFSIZ]; - -FILE stdin_data = { .fd = 0, .mode = _IOLBF, .pos = 0, - .buf = stdin_buffer, .bufsiz = BUFSIZ }; -FILE stdout_data = { .fd = 1, .mode = _IOLBF, .pos = 0, - .buf = stdout_buffer, .bufsiz = BUFSIZ }; -FILE stderr_data = { .fd = 2, .mode = _IONBF, .pos = 0, - .buf = NULL, .bufsiz = 0 }; diff --git a/qemu/roms/SLOF/lib/libc/stdio/vfprintf.c b/qemu/roms/SLOF/lib/libc/stdio/vfprintf.c deleted file mode 100644 index 765feeace..000000000 --- a/qemu/roms/SLOF/lib/libc/stdio/vfprintf.c +++ /dev/null @@ -1,27 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2004, 2008 IBM Corporation - * All rights reserved. - * This program and the accompanying materials - * are made available under the terms of the BSD License - * which accompanies this distribution, and is available at - * http://www.opensource.org/licenses/bsd-license.php - * - * Contributors: - * IBM Corporation - initial implementation - *****************************************************************************/ - -#include "stdio.h" -#include "unistd.h" - - -int vfprintf(FILE *stream, const char *fmt, va_list ap) -{ - int count; - char buffer[320]; - - count = vsnprintf(buffer, sizeof(buffer), fmt, ap); - write(stream->fd, buffer, count); - - return count; -} - diff --git a/qemu/roms/SLOF/lib/libc/stdio/vfscanf.c b/qemu/roms/SLOF/lib/libc/stdio/vfscanf.c deleted file mode 100644 index 4ddd210a9..000000000 --- a/qemu/roms/SLOF/lib/libc/stdio/vfscanf.c +++ /dev/null @@ -1,266 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2004, 2008 IBM Corporation - * All rights reserved. - * This program and the accompanying materials - * are made available under the terms of the BSD License - * which accompanies this distribution, and is available at - * http://www.opensource.org/licenses/bsd-license.php - * - * Contributors: - * IBM Corporation - initial implementation - *****************************************************************************/ - -#include "string.h" -#include "ctype.h" -#include "stdlib.h" -#include "stdio.h" -#include "unistd.h" - - -static int -_getc(FILE * stream) -{ - int count; - char c; - - if (stream->mode == _IONBF || stream->buf == NULL) { - if (read(stream->fd, &c, 1) == 1) - return (int) c; - else - return EOF; - } - - if (stream->pos == 0 || stream->pos >= BUFSIZ || - stream->buf[stream->pos] == '\0') { - count = read(stream->fd, stream->buf, BUFSIZ); - if (count < 0) - count = 0; - if (count < BUFSIZ) - stream->buf[count] = '\0'; - stream->pos = 0; - } - - return stream->buf[stream->pos++]; -} - -static void -_ungetc(int ch, FILE * stream) -{ - if (stream->mode != _IONBF && stream->pos > 0) - stream->pos--; -} - -static int -_is_voidage(int ch) -{ - if (ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r' || ch == '\0') - return 1; - else - return 0; -} - - -static int -_scanf(FILE * stream, const char *fmt, va_list * ap) -{ - int i = 0; - int length = 0; - - fmt++; - - while (*fmt != '\0') { - - char tbuf[256]; - char ch; - - switch (*fmt) { - case 'd': - case 'i': - ch = _getc(stream); - if (length == 0) { - while (!_is_voidage(ch) && isdigit(ch)) { - tbuf[i] = ch; - ch = _getc(stream); - i++; - } - } else { - while (!_is_voidage(ch) && i < length - && isdigit(ch)) { - tbuf[i] = ch; - ch = _getc(stream); - i++; - } - } - /* We tried to understand what this is good for... - * but we did not. We know for sure that it does not - * work on SLOF if this is active. */ - /* _ungetc(ch, stream); */ - tbuf[i] = '\0'; - - /* ch = _getc(stream); */ - if (!_is_voidage(ch)) - _ungetc(ch, stream); - - if (strlen(tbuf) == 0) - return 0; - - *(va_arg(*ap, int *)) = strtol(tbuf, NULL, 10); - break; - case 'X': - case 'x': - ch = _getc(stream); - if (length == 0) { - while (!_is_voidage(ch) && isxdigit(ch)) { - tbuf[i] = ch; - ch = _getc(stream); - i++; - } - } else { - while (!_is_voidage(ch) && i < length - && isxdigit(ch)) { - tbuf[i] = ch; - ch = _getc(stream); - i++; - } - } - /* _ungetc(ch, stream); */ - tbuf[i] = '\0'; - - /* ch = _getc(stream); */ - if (!_is_voidage(ch)) - _ungetc(ch, stream); - - if (strlen(tbuf) == 0) - return 0; - - *(va_arg(*ap, int *)) = strtol(tbuf, NULL, 16); - break; - case 'O': - case 'o': - ch = _getc(stream); - if (length == 0) { - while (!_is_voidage(ch) - && !(ch < '0' || ch > '7')) { - tbuf[i] = ch; - ch = _getc(stream); - i++; - } - } else { - while (!_is_voidage(ch) && i < length - && !(ch < '0' || ch > '7')) { - tbuf[i] = ch; - ch = _getc(stream); - i++; - } - } - /* _ungetc(ch, stream); */ - tbuf[i] = '\0'; - - /* ch = _getc(stream); */ - if (!_is_voidage(ch)) - _ungetc(ch, stream); - - if (strlen(tbuf) == 0) - return 0; - - *(va_arg(*ap, int *)) = strtol(tbuf, NULL, 8); - break; - case 'c': - ch = _getc(stream); - while (_is_voidage(ch)) - ch = _getc(stream); - - *(va_arg(*ap, char *)) = ch; - - ch = _getc(stream); - if (!_is_voidage(ch)) - _ungetc(ch, stream); - - break; - case 's': - ch = _getc(stream); - if (length == 0) { - while (!_is_voidage(ch)) { - tbuf[i] = ch; - ch = _getc(stream); - i++; - } - } else { - while (!_is_voidage(ch) && i < length) { - tbuf[i] = ch; - ch = _getc(stream); - i++; - } - } - /* _ungetc(ch, stream); */ - tbuf[i] = '\0'; - - /* ch = _getc(stream); */ - if (!_is_voidage(ch)) - _ungetc(ch, stream); - - strcpy(va_arg(*ap, char *), tbuf); - break; - default: - if (*fmt >= '0' && *fmt <= '9') - length += *fmt - '0'; - break; - } - fmt++; - } - - return 1; -} - - - -int -vfscanf(FILE * stream, const char *fmt, va_list ap) -{ - int args = 0; - - while (*fmt != '\0') { - - if (*fmt == '%') { - - char formstr[20]; - int i = 0; - - do { - formstr[i] = *fmt; - fmt++; - i++; - } while (! - (*fmt == 'd' || *fmt == 'i' || *fmt == 'x' - || *fmt == 'X' || *fmt == 'p' || *fmt == 'c' - || *fmt == 's' || *fmt == '%' || *fmt == 'O' - || *fmt == 'o')); - formstr[i++] = *fmt; - formstr[i] = '\0'; - if (*fmt != '%') { - if (_scanf(stream, formstr, &ap) <= 0) - return args; - else - args++; - } - - } - - fmt++; - - } - - return args; -} - -int -getc(FILE * stream) -{ - return _getc(stream); -} - -int -getchar(void) -{ - return _getc(stdin); -} diff --git a/qemu/roms/SLOF/lib/libc/stdio/vsnprintf.c b/qemu/roms/SLOF/lib/libc/stdio/vsnprintf.c deleted file mode 100644 index 21dd04dfe..000000000 --- a/qemu/roms/SLOF/lib/libc/stdio/vsnprintf.c +++ /dev/null @@ -1,298 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2004, 2008 IBM Corporation - * All rights reserved. - * This program and the accompanying materials - * are made available under the terms of the BSD License - * which accompanies this distribution, and is available at - * http://www.opensource.org/licenses/bsd-license.php - * - * Contributors: - * IBM Corporation - initial implementation - *****************************************************************************/ - -#include <stdbool.h> -#include "stdio.h" -#include "stdlib.h" -#include "string.h" -#include "ctype.h" - -static const unsigned long long convert[] = { - 0x0, 0xFF, 0xFFFF, 0xFFFFFF, 0xFFFFFFFF, - 0xFFFFFFFFFFULL, 0xFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL -}; - -static int -print_str_fill(char **buffer, size_t bufsize, char *sizec, - const char *str, char c) -{ - int i, sizei, len; - char *bstart = *buffer; - - sizei = strtoul(sizec, NULL, 10); - len = strlen(str); - if (sizei > len) { - for (i = 0; - (i < (sizei - len)) && ((*buffer - bstart) < bufsize); - i++) { - **buffer = c; - *buffer += 1; - } - } - return 1; -} - -static int -print_str(char **buffer, size_t bufsize, const char *str) -{ - char *bstart = *buffer; - size_t i; - - for (i = 0; (i < strlen(str)) && ((*buffer - bstart) < bufsize); i++) { - **buffer = str[i]; - *buffer += 1; - } - return 1; -} - -static unsigned int -print_intlen(unsigned long value, unsigned short int base) -{ - int i = 0; - - while (value > 0) { - value /= base; - i++; - } - if (i == 0) - i = 1; - return i; -} - -static int -print_itoa(char **buffer, size_t bufsize, unsigned long value, - unsigned short base, bool upper) -{ - const char zeichen[] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; - char c; - size_t i, len; - - if(base <= 2 || base > 16) - return 0; - - len = i = print_intlen(value, base); - - /* Don't print to buffer if bufsize is not enough. */ - if (len > bufsize) - return 0; - - do { - c = zeichen[value % base]; - if (upper) - c = toupper(c); - - (*buffer)[--i] = c; - value /= base; - } while(value); - - *buffer += len; - - return 1; -} - - - -static int -print_fill(char **buffer, size_t bufsize, char *sizec, unsigned long size, - unsigned short int base, char c, int optlen) -{ - int i, sizei, len; - char *bstart = *buffer; - - sizei = strtoul(sizec, NULL, 10); - len = print_intlen(size, base) + optlen; - if (sizei > len) { - for (i = 0; - (i < (sizei - len)) && ((*buffer - bstart) < bufsize); - i++) { - **buffer = c; - *buffer += 1; - } - } - - return 0; -} - - -static int -print_format(char **buffer, size_t bufsize, const char *format, void *var) -{ - char *start; - unsigned int i = 0, length_mod = sizeof(int); - unsigned long value = 0; - unsigned long signBit; - char *form, sizec[32]; - char sign = ' '; - bool upper = false; - - form = (char *) format; - start = *buffer; - - form++; - if(*form == '0' || *form == '.') { - sign = '0'; - form++; - } - - while ((*form != '\0') && ((*buffer - start) < bufsize)) { - switch(*form) { - case 'u': - case 'd': - case 'i': - sizec[i] = '\0'; - value = (unsigned long) var; - signBit = 0x1ULL << (length_mod * 8 - 1); - if ((*form != 'u') && (signBit & value)) { - **buffer = '-'; - *buffer += 1; - value = (-(unsigned long)value) & convert[length_mod]; - } - print_fill(buffer, bufsize - (*buffer - start), - sizec, value, 10, sign, 0); - print_itoa(buffer, bufsize - (*buffer - start), - value, 10, upper); - break; - case 'X': - upper = true; - case 'x': - sizec[i] = '\0'; - value = (unsigned long) var & convert[length_mod]; - print_fill(buffer, bufsize - (*buffer - start), - sizec, value, 16, sign, 0); - print_itoa(buffer, bufsize - (*buffer - start), - value, 16, upper); - break; - case 'O': - case 'o': - sizec[i] = '\0'; - value = (long int) var & convert[length_mod]; - print_fill(buffer, bufsize - (*buffer - start), - sizec, value, 8, sign, 0); - print_itoa(buffer, bufsize - (*buffer - start), - value, 8, upper); - break; - case 'p': - sizec[i] = '\0'; - print_fill(buffer, bufsize - (*buffer - start), - sizec, (unsigned long) var, 16, ' ', 2); - print_str(buffer, bufsize - (*buffer - start), - "0x"); - print_itoa(buffer, bufsize - (*buffer - start), - (unsigned long) var, 16, upper); - break; - case 'c': - sizec[i] = '\0'; - print_fill(buffer, bufsize - (*buffer - start), - sizec, 1, 10, ' ', 0); - **buffer = (unsigned long) var; - *buffer += 1; - break; - case 's': - sizec[i] = '\0'; - print_str_fill(buffer, - bufsize - (*buffer - start), sizec, - (char *) var, ' '); - - print_str(buffer, bufsize - (*buffer - start), - (char *) var); - break; - case 'l': - form++; - if(*form == 'l') { - length_mod = sizeof(long long int); - } else { - form--; - length_mod = sizeof(long int); - } - break; - case 'h': - form++; - if(*form == 'h') { - length_mod = sizeof(signed char); - } else { - form--; - length_mod = sizeof(short int); - } - break; - case 'z': - length_mod = sizeof(size_t); - break; - default: - if(*form >= '0' && *form <= '9') - sizec[i++] = *form; - } - form++; - } - - - return (long int) (*buffer - start); -} - - -/* - * The vsnprintf function prints a formated strings into a buffer. - * BUG: buffer size checking does not fully work yet - */ -int -vsnprintf(char *buffer, size_t bufsize, const char *format, va_list arg) -{ - char *ptr, *bstart; - - bstart = buffer; - ptr = (char *) format; - - /* - * Return from here if size passed is zero, otherwise we would - * overrun buffer while setting NULL character at the end. - */ - if (!buffer || !bufsize) - return 0; - - /* Leave one space for NULL character */ - bufsize--; - - while(*ptr != '\0' && (buffer - bstart) < bufsize) - { - if(*ptr == '%') { - char formstr[20]; - int i=0; - - do { - formstr[i] = *ptr; - ptr++; - i++; - } while(!(*ptr == 'd' || *ptr == 'i' || *ptr == 'u' || *ptr == 'x' || *ptr == 'X' - || *ptr == 'p' || *ptr == 'c' || *ptr == 's' || *ptr == '%' - || *ptr == 'O' || *ptr == 'o' )); - formstr[i++] = *ptr; - formstr[i] = '\0'; - if(*ptr == '%') { - *buffer++ = '%'; - } else { - print_format(&buffer, - bufsize - (buffer - bstart), - formstr, va_arg(arg, void *)); - } - ptr++; - } else { - - *buffer = *ptr; - - buffer++; - ptr++; - } - } - - *buffer = '\0'; - - return (buffer - bstart); -} diff --git a/qemu/roms/SLOF/lib/libc/stdio/vsprintf.c b/qemu/roms/SLOF/lib/libc/stdio/vsprintf.c deleted file mode 100644 index 0dfd737bc..000000000 --- a/qemu/roms/SLOF/lib/libc/stdio/vsprintf.c +++ /dev/null @@ -1,19 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2004, 2008 IBM Corporation - * All rights reserved. - * This program and the accompanying materials - * are made available under the terms of the BSD License - * which accompanies this distribution, and is available at - * http://www.opensource.org/licenses/bsd-license.php - * - * Contributors: - * IBM Corporation - initial implementation - *****************************************************************************/ - -#include "stdio.h" - -int -vsprintf(char *buffer, const char *format, va_list arg) -{ - return vsnprintf(buffer, 0x7fffffff, format, arg); -} diff --git a/qemu/roms/SLOF/lib/libc/stdio/vsscanf.c b/qemu/roms/SLOF/lib/libc/stdio/vsscanf.c deleted file mode 100644 index b9603e98b..000000000 --- a/qemu/roms/SLOF/lib/libc/stdio/vsscanf.c +++ /dev/null @@ -1,131 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2004, 2008 IBM Corporation - * All rights reserved. - * This program and the accompanying materials - * are made available under the terms of the BSD License - * which accompanies this distribution, and is available at - * http://www.opensource.org/licenses/bsd-license.php - * - * Contributors: - * IBM Corporation - initial implementation - *****************************************************************************/ - -#include "stdio.h" -#include "stdlib.h" -#include "string.h" - - -static void -_scanf(const char **buffer, const char *fmt, va_list *ap) -{ - int i; - int length = 0; - - fmt++; - - while(*fmt != '\0') { - - char tbuf[256]; - - switch(*fmt) { - case 'd': - case 'i': - if(length == 0) length = 256; - - for(i = 0; **buffer != ' ' && **buffer != '\t' && **buffer != '\n' && i < length; i++) { - tbuf[i] = **buffer; - *buffer += 1; - } - tbuf[i] = '\0'; - - *(va_arg(*ap, int *)) = strtol(tbuf, NULL, 10); - break; - case 'X': - case 'x': - if(length == 0) length = 256; - - for(i = 0; **buffer != ' ' && **buffer != '\t' && **buffer != '\n' && i < length; i++) { - tbuf[i] = **buffer; - *buffer += 1; - } - tbuf[i] = '\0'; - - *(va_arg(*ap, int *)) = strtol(tbuf, NULL, 16); - break; - case 'O': - case 'o': - if(length == 0) length = 256; - - for(i = 0; **buffer != ' ' && **buffer != '\t' && **buffer != '\n' && i < length; i++) { - tbuf[i] = **buffer; - *buffer += 1; - } - tbuf[i] = '\0'; - - *(va_arg(*ap, int *)) = strtol(tbuf, NULL, 8); - break; - case 'c': - *(va_arg(*ap, char *)) = **buffer; - *buffer += 1; - if(length > 1) - for(i = 1; i < length; i++) - *buffer += 1; - break; - case 's': - if(length == 0) length = 256; - - for(i = 0; **buffer != ' ' && **buffer != '\t' && **buffer != '\n' && i < length; i++) { - tbuf[i] = **buffer; - *buffer += 1; - } - - tbuf[i] = '\0'; - - strcpy(va_arg(*ap, char *), tbuf); - break; - default: - if(*fmt >= '0' && *fmt <= '9') - length += *fmt - '0'; - break; - } - fmt++; - } - -} - - -int -vsscanf(const char *buffer, const char *fmt, va_list ap) -{ - - while(*fmt != '\0') { - - if(*fmt == '%') { - - char formstr[20]; - int i=0; - - do { - formstr[i] = *fmt; - fmt++; - i++; - } while(!(*fmt == 'd' || *fmt == 'i' || *fmt == 'x' || *fmt == 'X' - || *fmt == 'p' || *fmt == 'c' || *fmt == 's' || *fmt == '%' - || *fmt == 'O' || *fmt == 'o' )); - formstr[i++] = *fmt; - formstr[i] = '\0'; - if(*fmt != '%') { - while(*buffer == ' ' || *buffer == '\t' || *buffer == '\n') - buffer++; - _scanf(&buffer, formstr, &ap); - } - - } - - fmt++; - - } - - return 0; -} - |