git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Bugfixes to usermode 64-bit division, more work on GUI (now sizes almost correctly)
[tpg/acess2.git]
/
Usermode
/
Libraries
/
libc.so_src
/
fileIO.c
diff --git
a/Usermode/Libraries/libc.so_src/fileIO.c
b/Usermode/Libraries/libc.so_src/fileIO.c
index
4a6a779
..
1b1d3f3
100644
(file)
--- a/
Usermode/Libraries/libc.so_src/fileIO.c
+++ b/
Usermode/Libraries/libc.so_src/fileIO.c
@@
-17,7
+17,7
@@
#define _stdout 1
\r
\r
// === PROTOTYPES ===
\r
#define _stdout 1
\r
\r
// === PROTOTYPES ===
\r
-EXPORT void itoa(char *buf, uint64_t num, int base, int minLength, char pad, int bSigned);
\r
+EXPORT void itoa(char *buf, uint64_t num,
u
int base, int minLength, char pad, int bSigned);
\r
struct sFILE *get_file_struct();
\r
\r
// === GLOBALS ===
\r
struct sFILE *get_file_struct();
\r
\r
// === GLOBALS ===
\r
@@
-294,7
+294,7
@@
EXPORT int vsprintf(char * __s, const char *__format, va_list __args)
*/
\r
EXPORT int vsnprintf(char *buf, size_t __maxlen, const char *format, va_list args)
\r
{
\r
*/
\r
EXPORT int vsnprintf(char *buf, size_t __maxlen, const char *format, va_list args)
\r
{
\r
- char tmp[
33
];
\r
+ char tmp[
65
];
\r
int c, minSize;
\r
int pos = 0;
\r
char *p;
\r
int c, minSize;
\r
int pos = 0;
\r
char *p;
\r
@@
-377,6
+377,9
@@
EXPORT int vsnprintf(char *buf, size_t __maxlen, const char *format, va_list arg
buf[pos+2] = 'x';
\r
}
\r
pos += 3;
\r
buf[pos+2] = 'x';
\r
}
\r
pos += 3;
\r
+ arg = va_arg(args, uint32_t);
\r
+ itoa(tmp, arg, 16, minSize, pad, 0);
\r
+ goto sprintf_puts;
\r
// Fall through to hex
\r
// Unsigned Hexadecimal
\r
case 'x':
\r
// Fall through to hex
\r
// Unsigned Hexadecimal
\r
case 'x':
\r
@@
-405,6
+408,7
@@
EXPORT int vsnprintf(char *buf, size_t __maxlen, const char *format, va_list arg
p = (void*)(intptr_t)arg;
\r
sprintf_puts:
\r
if(!p) p = "(null)";
\r
p = (void*)(intptr_t)arg;
\r
sprintf_puts:
\r
if(!p) p = "(null)";
\r
+ //_SysDebug("vsnprintf: p = '%s'", p);
\r
if(buf) {
\r
while(*p) {
\r
if(pos < __maxlen) buf[pos] = *p;
\r
if(buf) {
\r
while(*p) {
\r
if(pos < __maxlen) buf[pos] = *p;
\r
@@
-428,6
+432,8
@@
EXPORT int vsnprintf(char *buf, size_t __maxlen, const char *format, va_list arg
}
\r
if(buf && pos < __maxlen) buf[pos] = '\0';
\r
\r
}
\r
if(buf && pos < __maxlen) buf[pos] = '\0';
\r
\r
+ //_SysDebug("vsnprintf: buf = '%s'", buf);
\r
+
\r
return pos;
\r
}
\r
\r
return pos;
\r
}
\r
\r
@@
-436,13
+442,13
@@
const char cUCDIGITS[] = "0123456789ABCDEF";
* \fn static void itoa(char *buf, uint64_t num, int base, int minLength, char pad, int bSigned)
\r
* \brief Convert an integer into a character string
\r
*/
\r
* \fn static void itoa(char *buf, uint64_t num, int base, int minLength, char pad, int bSigned)
\r
* \brief Convert an integer into a character string
\r
*/
\r
-EXPORT void itoa(char *buf, uint64_t num,
in
t base, int minLength, char pad, int bSigned)
\r
+EXPORT void itoa(char *buf, uint64_t num,
size_
t base, int minLength, char pad, int bSigned)
\r
{
\r
{
\r
- char tmpBuf[
32
];
\r
+ char tmpBuf[
64
];
\r
int pos=0, i;
\r
\r
if(!buf) return;
\r
int pos=0, i;
\r
\r
if(!buf) return;
\r
- if(base > 16) {
\r
+ if(base > 16
|| base < 2
) {
\r
buf[0] = 0;
\r
return;
\r
}
\r
buf[0] = 0;
\r
return;
\r
}
\r
@@
-455,13
+461,13
@@
EXPORT void itoa(char *buf, uint64_t num, int base, int minLength, char pad, int
bSigned = 0;
\r
\r
while(num > base-1) {
\r
bSigned = 0;
\r
\r
while(num > base-1) {
\r
- tmpBuf[pos] = cUCDIGITS[ num % base ];
\r
- num = (long) num / base; // Shift {number} right 1 digit
\r
- pos++;
\r
+ tmpBuf[pos++] = cUCDIGITS[ num % base ];
\r
+ num = (uint64_t) num / (uint64_t)base; // Shift {number} right 1 digit
\r
}
\r
\r
tmpBuf[pos++] = cUCDIGITS[ num % base ]; // Last digit of {number}
\r
if(bSigned) tmpBuf[pos++] = '-'; // Append sign symbol if needed
\r
}
\r
\r
tmpBuf[pos++] = cUCDIGITS[ num % base ]; // Last digit of {number}
\r
if(bSigned) tmpBuf[pos++] = '-'; // Append sign symbol if needed
\r
+
\r
i = 0;
\r
minLength -= pos;
\r
while(minLength-- > 0) buf[i++] = pad;
\r
i = 0;
\r
minLength -= pos;
\r
while(minLength-- > 0) buf[i++] = pad;
\r
UCC
git Repository :: git.ucc.asn.au