source: trunk/libs/newlib/src/newlib/libc/stdio/siprintf.c @ 444

Last change on this file since 444 was 444, checked in by satin@…, 6 years ago

add newlib,libalmos-mkh, restructure shared_syscalls.h and mini-libc

File size: 4.0 KB
Line 
1/*
2 * Copyright (c) 1990 The Regents of the University of California.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms are permitted
6 * provided that the above copyright notice and this paragraph are
7 * duplicated in all such forms and that any documentation,
8 * advertising materials, and other materials related to such
9 * distribution and use acknowledge that the software was developed
10 * by the University of California, Berkeley.  The name of the
11 * University may not be used to endorse or promote products derived
12 * from this software without specific prior written permission.
13 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16 */
17
18/*
19FUNCTION
20<<siprintf>>, <<fiprintf>>, <<iprintf>>, <<sniprintf>>, <<asiprintf>>, <<asniprintf>>---format output (integer only)
21
22INDEX
23        fiprintf
24INDEX
25        _fiprintf_r
26INDEX
27        iprintf
28INDEX
29        _iprintf_r
30INDEX
31        siprintf
32INDEX
33        _siprintf_r
34INDEX
35        sniprintf
36INDEX
37        _sniprintf_r
38INDEX
39        asiprintf
40INDEX
41        _asiprintf_r
42INDEX
43        asniprintf
44INDEX
45        _asniprintf_r
46
47SYNOPSIS
48        #include <stdio.h>
49
50        int iprintf(const char *<[format]>, ...);
51        int fiprintf(FILE *<[fd]>, const char *<[format]> , ...);
52        int siprintf(char *<[str]>, const char *<[format]>, ...);
53        int sniprintf(char *<[str]>, size_t <[size]>, const char *<[format]>,
54                        ...);
55        int asiprintf(char **<[strp]>, const char *<[format]>, ...);
56        char *asniprintf(char *<[str]>, size_t *<[size]>,
57                        const char *<[format]>, ...);
58
59        int _iprintf_r(struct _reent *<[ptr]>, const char *<[format]>, ...);
60        int _fiprintf_r(struct _reent *<[ptr]>, FILE *<[fd]>,
61                        const char *<[format]>, ...);
62        int _siprintf_r(struct _reent *<[ptr]>, char *<[str]>,
63                        const char *<[format]>, ...);
64        int _sniprintf_r(struct _reent *<[ptr]>, char *<[str]>, size_t <[size]>,
65                         const char *<[format]>, ...);
66        int _asiprintf_r(struct _reent *<[ptr]>, char **<[strp]>,
67                         const char *<[format]>, ...);
68        char *_asniprintf_r(struct _reent *<[ptr]>, char *<[str]>,
69                            size_t *<[size]>, const char *<[format]>, ...);
70
71DESCRIPTION
72        <<iprintf>>, <<fiprintf>>, <<siprintf>>, <<sniprintf>>,
73        <<asiprintf>>, and <<asniprintf>> are the same as <<printf>>,
74        <<fprintf>>, <<sprintf>>, <<snprintf>>, <<asprintf>>, and
75        <<asnprintf>>, respectively, except that they restrict usage
76        to non-floating-point format specifiers.
77
78        <<_iprintf_r>>, <<_fiprintf_r>>, <<_asiprintf_r>>,
79        <<_siprintf_r>>, <<_sniprintf_r>>, <<_asniprintf_r>> are
80        simply reentrant versions of the functions above.
81
82RETURNS
83Similar to <<printf>>, <<fprintf>>, <<sprintf>>, <<snprintf>>, <<asprintf>>,
84and <<asnprintf>>.
85
86PORTABILITY
87<<iprintf>>, <<fiprintf>>, <<siprintf>>, <<sniprintf>>, <<asiprintf>>,
88and <<asniprintf>> are newlib extensions.
89
90Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
91<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
92*/
93
94#include <_ansi.h>
95#include <reent.h>
96#include <stdio.h>
97#include <stdarg.h>
98#include <limits.h>
99#include "local.h"
100
101int
102_siprintf_r (struct _reent *ptr,
103       char *str,
104       const char *fmt, ...)
105{
106  int ret;
107  va_list ap;
108  FILE f;
109
110  f._flags = __SWR | __SSTR;
111  f._bf._base = f._p = (unsigned char *) str;
112  f._bf._size = f._w = INT_MAX;
113  f._file = -1;  /* No file. */
114  va_start (ap, fmt);
115  ret = _svfiprintf_r (ptr, &f, fmt, ap);
116  va_end (ap);
117  *f._p = 0;
118  return (ret);
119}
120
121#ifndef _REENT_ONLY
122
123int
124siprintf (char *str,
125       const char *fmt, ...)
126{
127  int ret;
128  va_list ap;
129  FILE f;
130
131  f._flags = __SWR | __SSTR;
132  f._bf._base = f._p = (unsigned char *) str;
133  f._bf._size = f._w = INT_MAX;
134  f._file = -1;  /* No file. */
135  va_start (ap, fmt);
136  ret = _svfiprintf_r (_REENT, &f, fmt, ap);
137  va_end (ap);
138  *f._p = 0;
139  return (ret);
140}
141
142#endif
Note: See TracBrowser for help on using the repository browser.