scanf (proto)
This commit is contained in:
parent
ddbf8ac07e
commit
be5ec0fcf5
|
@ -167,8 +167,8 @@ size_t vbprintf(Buffer_t *, const char *, va_list);
|
|||
|
||||
error_t bgetc(Buffer_t *, uchar *);
|
||||
size_t bread(Buffer_t *, uchar *, size_t);
|
||||
size_t bscanf(Buffer_t *, size_t *, const char *, ...);
|
||||
size_t vbscanf(Buffer_t *, size_t *, const char *, va_list);
|
||||
size_t bscanf(Buffer_t *, const char *, ...);
|
||||
size_t vbscanf(Buffer_t *, const char *, va_list);
|
||||
|
||||
error_t bemptybuf(Buffer_t *);
|
||||
error_t bscrolldown(Buffer_t *);
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
// You should have received a copy of the GNU General Public License //
|
||||
// along with OS/K. If not, see <https://www.gnu.org/licenses/>. //
|
||||
//----------------------------------------------------------------------------//
|
||||
#if 0
|
||||
|
||||
#include <lib/buf.h>
|
||||
|
||||
//
|
||||
|
@ -43,7 +43,7 @@ size_t BScanFromBuf(Buffer_t *buf, const char *fmt, ...)
|
|||
|
||||
size_t BScanFromBufV(Buffer_t *buf, const char *fmt, va_list ap)
|
||||
{
|
||||
size_t rc;
|
||||
size_t sz;
|
||||
|
||||
ExAcquireLock(&buf->lock);
|
||||
sz = vbscanf(buf, fmt, ap);
|
||||
|
@ -70,13 +70,14 @@ size_t vbscanf(Buffer_t *buf, const char *fmt, va_list ap)
|
|||
|
||||
size_t readcnt = 0;
|
||||
uchar ch = 0;
|
||||
char *chptr;
|
||||
|
||||
bool l, h;
|
||||
|
||||
size_t width;
|
||||
bool ignore; // '*' modifier, don't write to va_list for current mod
|
||||
|
||||
if (!buf || !fmt) { seterrnp(EINVAL); return 0; }
|
||||
if (!buf || !fmt) { seterrno(EINVAL); return 0; }
|
||||
if (buf->flags & (BF_EOF|BF_ERR)) { seterrno(EENDF); return 0; }
|
||||
if (buf->state != BS_RDWR && buf->state != BS_WRONLY) {
|
||||
seterrno(EBADF);
|
||||
|
@ -84,7 +85,7 @@ size_t vbscanf(Buffer_t *buf, const char *fmt, va_list ap)
|
|||
}
|
||||
|
||||
// Progress in format string
|
||||
for (*fmt && !rc) {
|
||||
while (*fmt && !rc) {
|
||||
|
||||
// Skip all kinds of whitespaces
|
||||
if (isspace(*fmt)) {
|
||||
|
@ -154,8 +155,6 @@ size_t vbscanf(Buffer_t *buf, const char *fmt, va_list ap)
|
|||
fmt++;
|
||||
}
|
||||
|
||||
assert(!(width < 0));
|
||||
|
||||
//
|
||||
// Extract length field
|
||||
//
|
||||
|
@ -167,7 +166,7 @@ size_t vbscanf(Buffer_t *buf, const char *fmt, va_list ap)
|
|||
|
||||
else if (*fmt == 'h') {
|
||||
h = 1;
|
||||
fmt++
|
||||
fmt++;
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -183,8 +182,9 @@ size_t vbscanf(Buffer_t *buf, const char *fmt, va_list ap)
|
|||
for (; width; width--) {
|
||||
rc = bgetc(buf, &ch);
|
||||
if (!rc) break;
|
||||
if (ignore) continue;
|
||||
|
||||
char *chptr = va_arg(ap, char *);
|
||||
chptr = va_arg(ap, char *);
|
||||
*chptr = (char)ch;
|
||||
readcnt++;
|
||||
}
|
||||
|
@ -192,7 +192,7 @@ size_t vbscanf(Buffer_t *buf, const char *fmt, va_list ap)
|
|||
|
||||
// Decimal integer
|
||||
else if (*fmt == 'd') {
|
||||
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -205,10 +205,6 @@ size_t vbscanf(Buffer_t *buf, const char *fmt, va_list ap)
|
|||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue