|
|
1.1 ! root 1: /* ! 2: * Creation Date: <2003/10/18 13:52:32 samuel> ! 3: * Time-stamp: <2003/10/18 13:54:24 samuel> ! 4: * ! 5: * <extra.c> ! 6: * ! 7: * Libc extras ! 8: * ! 9: * Copyright (C) 2003 Samuel Rydh ([email protected]) ! 10: * ! 11: * This program is free software; you can redistribute it and/or ! 12: * modify it under the terms of the GNU General Public License ! 13: * version 2 ! 14: * ! 15: */ ! 16: ! 17: #include "config.h" ! 18: #include "libc/string.h" ! 19: #include "libc/vsprintf.h" ! 20: #include "libopenbios/bindings.h" ! 21: ! 22: /* strncpy without 0-pad */ ! 23: char * ! 24: strncpy_nopad( char *dest, const char *src, size_t n ) ! 25: { ! 26: int len = MIN( n, strlen(src)+1 ); ! 27: return memcpy( dest, src, len ); ! 28: } ! 29: ! 30: /* printf */ ! 31: ! 32: int forth_printf( const char *fmt, ... ) ! 33: { ! 34: char buf[512]; ! 35: va_list args; ! 36: int i; ! 37: ! 38: va_start(args, fmt); ! 39: i = vsnprintf(buf, sizeof(buf), fmt, args); ! 40: va_end(args); ! 41: ! 42: PUSH(pointer2cell(buf)); ! 43: PUSH(i); ! 44: fword("type"); ! 45: ! 46: return i; ! 47: } ! 48: ! 49:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.