Skip to content
Snippets Groups Projects
Commit ab122ee3 authored by Deucе's avatar Deucе :ok_hand_tone4:
Browse files

Remove xp_printf() Borland support, and update JS format

Borland doesn't need this, and making the new feature work with it
would be immensely painful, so just disable the files in Borland.

Also, now the JS format()/printf()/etc. can use field specifiers.
parent 1ecbb35d
Branches
Tags
No related merge requests found
Pipeline #7713 passed
...@@ -39,15 +39,25 @@ js_sprintf(JSContext *cx, uint argn, uintN argc, jsval *argv) ...@@ -39,15 +39,25 @@ js_sprintf(JSContext *cx, uint argn, uintN argc, jsval *argv)
p=op; p=op;
p=xp_asprintf_start(p); p=xp_asprintf_start(p);
for(; argn<argc; argn++) { int cur = 0;
if(JSVAL_IS_DOUBLE(argv[argn])) for (;;) {
p=xp_asprintf_next(p,XP_PRINTF_CONVERT|XP_PRINTF_TYPE_DOUBLE,JSVAL_TO_DOUBLE(argv[argn])); int next = xp_printf_get_next(p);
else if(JSVAL_IS_INT(argv[argn])) if (next < 0)
p=xp_asprintf_next(p,XP_PRINTF_CONVERT|XP_PRINTF_TYPE_INT,JSVAL_TO_INT(argv[argn])); break;
else if(JSVAL_IS_BOOLEAN(argv[argn]) && xp_printf_get_type(p)!=XP_PRINTF_TYPE_CHARP) if (next > 0 && next != (cur + 1))
p=xp_asprintf_next(p,XP_PRINTF_CONVERT|XP_PRINTF_TYPE_INT,JSVAL_TO_BOOLEAN(argv[argn])); cur = next;
else
cur++;
if (cur > argc)
break;
if(JSVAL_IS_DOUBLE(argv[cur]))
p=xp_asprintf_next(p,XP_PRINTF_CONVERT|XP_PRINTF_TYPE_DOUBLE,JSVAL_TO_DOUBLE(argv[cur]));
else if(JSVAL_IS_INT(argv[cur]))
p=xp_asprintf_next(p,XP_PRINTF_CONVERT|XP_PRINTF_TYPE_INT,JSVAL_TO_INT(argv[cur]));
else if(JSVAL_IS_BOOLEAN(argv[cur]) && xp_printf_get_type(p)!=XP_PRINTF_TYPE_CHARP)
p=xp_asprintf_next(p,XP_PRINTF_CONVERT|XP_PRINTF_TYPE_INT,JSVAL_TO_BOOLEAN(argv[cur]));
else { else {
JSVALUE_TO_RASTRING(cx, argv[argn], p2, &p2_sz, NULL); JSVALUE_TO_RASTRING(cx, argv[cur], p2, &p2_sz, NULL);
if(JS_IsExceptionPending(cx)) if(JS_IsExceptionPending(cx))
JS_ClearPendingException(cx); JS_ClearPendingException(cx);
if(p2==NULL) { if(p2==NULL) {
......
...@@ -19,6 +19,8 @@ ...@@ -19,6 +19,8 @@
* Note: If this box doesn't appear square, then you need to fix your tabs. * * Note: If this box doesn't appear square, then you need to fix your tabs. *
****************************************************************************/ ****************************************************************************/
#if !defined(__BORLANDC__)
#if defined(__linux__) && !defined(_GNU_SOURCE) #if defined(__linux__) && !defined(_GNU_SOURCE)
#define _GNU_SOURCE // asprintf() on Linux #define _GNU_SOURCE // asprintf() on Linux
#endif #endif
...@@ -75,12 +77,8 @@ struct arg_table_entry { ...@@ -75,12 +77,8 @@ struct arg_table_entry {
unsigned uint_type; unsigned uint_type;
long long_type; long long_type;
unsigned long ulong_type; unsigned long ulong_type;
#if defined(XP_PRINTF_TYPE_LONGLONG)
long long longlong_type; long long longlong_type;
#endif
#if defined(XP_PRINTF_TYPE_ULONGLONG)
unsigned long long ulonglong_type; unsigned long long ulonglong_type;
#endif
char *charp_type; char *charp_type;
double double_type; double double_type;
long double longdouble_type; long double longdouble_type;
...@@ -294,11 +292,9 @@ int xp_printf_get_type(const char *format) ...@@ -294,11 +292,9 @@ int xp_printf_get_type(const char *format)
case 'l': case 'l':
correct_type=XP_PRINTF_TYPE_LONG; correct_type=XP_PRINTF_TYPE_LONG;
break; break;
#if defined(XP_PRINTF_TYPE_ULONGLONG)
case 'l'|'l'<<8: case 'l'|'l'<<8:
correct_type=XP_PRINTF_TYPE_LONGLONG; correct_type=XP_PRINTF_TYPE_LONGLONG;
break; break;
#endif
case 'j': case 'j':
correct_type=XP_PRINTF_TYPE_INTMAX; correct_type=XP_PRINTF_TYPE_INTMAX;
break; break;
...@@ -331,11 +327,9 @@ int xp_printf_get_type(const char *format) ...@@ -331,11 +327,9 @@ int xp_printf_get_type(const char *format)
case 'l': case 'l':
correct_type=XP_PRINTF_TYPE_ULONG; correct_type=XP_PRINTF_TYPE_ULONG;
break; break;
#if defined(XP_PRINTF_TYPE_ULONGLONG)
case 'l'|'l'<<8: case 'l'|'l'<<8:
correct_type=XP_PRINTF_TYPE_ULONGLONG; correct_type=XP_PRINTF_TYPE_ULONGLONG;
break; break;
#endif
case 'j': case 'j':
correct_type=XP_PRINTF_TYPE_UINTMAX; correct_type=XP_PRINTF_TYPE_UINTMAX;
break; break;
...@@ -449,10 +443,8 @@ char* xp_asprintf_next(char *format, int type, ...) ...@@ -449,10 +443,8 @@ char* xp_asprintf_next(char *format, int type, ...)
unsigned int ui=0; unsigned int ui=0;
long int l=0; long int l=0;
unsigned long int ul=0; unsigned long int ul=0;
#if defined(XP_PRINTF_TYPE_LONGLONG)
long long int ll=0; long long int ll=0;
unsigned long long int ull=0; unsigned long long int ull=0;
#endif
double d=0; double d=0;
long double ld=0; long double ld=0;
char* cp=NULL; char* cp=NULL;
...@@ -693,11 +685,9 @@ char* xp_asprintf_next(char *format, int type, ...) ...@@ -693,11 +685,9 @@ char* xp_asprintf_next(char *format, int type, ...)
case 'l': case 'l':
correct_type=XP_PRINTF_TYPE_LONG; correct_type=XP_PRINTF_TYPE_LONG;
break; break;
#if defined(XP_PRINTF_TYPE_LONGLONG)
case 'l'|'l'<<8: case 'l'|'l'<<8:
correct_type=XP_PRINTF_TYPE_LONGLONG; correct_type=XP_PRINTF_TYPE_LONGLONG;
break; break;
#endif
case 'j': case 'j':
correct_type=XP_PRINTF_TYPE_INTMAX; correct_type=XP_PRINTF_TYPE_INTMAX;
break; break;
...@@ -730,11 +720,9 @@ char* xp_asprintf_next(char *format, int type, ...) ...@@ -730,11 +720,9 @@ char* xp_asprintf_next(char *format, int type, ...)
case 'l': case 'l':
correct_type=XP_PRINTF_TYPE_ULONG; correct_type=XP_PRINTF_TYPE_ULONG;
break; break;
#if defined(XP_PRINTF_TYPE_LONGLONG)
case 'l'|'l'<<8: case 'l'|'l'<<8:
correct_type=XP_PRINTF_TYPE_ULONGLONG; correct_type=XP_PRINTF_TYPE_ULONGLONG;
break; break;
#endif
case 'j': case 'j':
correct_type=XP_PRINTF_TYPE_UINTMAX; correct_type=XP_PRINTF_TYPE_UINTMAX;
break; break;
...@@ -825,14 +813,12 @@ char* xp_asprintf_next(char *format, int type, ...) ...@@ -825,14 +813,12 @@ char* xp_asprintf_next(char *format, int type, ...)
case XP_PRINTF_TYPE_ULONG: case XP_PRINTF_TYPE_ULONG:
ul=va_arg(vars, unsigned long int); ul=va_arg(vars, unsigned long int);
break; break;
#if defined(XP_PRINTF_TYPE_LONGLONG)
case XP_PRINTF_TYPE_LONGLONG: case XP_PRINTF_TYPE_LONGLONG:
ll=va_arg(vars, long long int); ll=va_arg(vars, long long int);
break; break;
case XP_PRINTF_TYPE_ULONGLONG: case XP_PRINTF_TYPE_ULONGLONG:
ull=va_arg(vars, unsigned long long int); ull=va_arg(vars, unsigned long long int);
break; break;
#endif
case XP_PRINTF_TYPE_CHARP: case XP_PRINTF_TYPE_CHARP:
cp=va_arg(vars, char*); cp=va_arg(vars, char*);
break; break;
...@@ -866,14 +852,12 @@ char* xp_asprintf_next(char *format, int type, ...) ...@@ -866,14 +852,12 @@ char* xp_asprintf_next(char *format, int type, ...)
case XP_PRINTF_TYPE_ULONG: case XP_PRINTF_TYPE_ULONG:
i=ul; i=ul;
break; break;
#if defined(XP_PRINTF_TYPE_LONGLONG)
case XP_PRINTF_TYPE_LONGLONG: case XP_PRINTF_TYPE_LONGLONG:
i=ll; i=ll;
break; break;
case XP_PRINTF_TYPE_ULONGLONG: case XP_PRINTF_TYPE_ULONGLONG:
i=ull; i=ull;
break; break;
#endif
case XP_PRINTF_TYPE_CHARP: case XP_PRINTF_TYPE_CHARP:
if(cp) if(cp)
i=*cp; i=*cp;
...@@ -908,14 +892,12 @@ char* xp_asprintf_next(char *format, int type, ...) ...@@ -908,14 +892,12 @@ char* xp_asprintf_next(char *format, int type, ...)
case XP_PRINTF_TYPE_ULONG: case XP_PRINTF_TYPE_ULONG:
i=ul; i=ul;
break; break;
#if defined(XP_PRINTF_TYPE_LONGLONG)
case XP_PRINTF_TYPE_LONGLONG: case XP_PRINTF_TYPE_LONGLONG:
i=ll; i=ll;
break; break;
case XP_PRINTF_TYPE_ULONGLONG: case XP_PRINTF_TYPE_ULONGLONG:
i=ull; i=ull;
break; break;
#endif
case XP_PRINTF_TYPE_CHARP: case XP_PRINTF_TYPE_CHARP:
if (cp) if (cp)
i=strtol(cp, NULL, 0); i=strtol(cp, NULL, 0);
...@@ -948,14 +930,12 @@ char* xp_asprintf_next(char *format, int type, ...) ...@@ -948,14 +930,12 @@ char* xp_asprintf_next(char *format, int type, ...)
case XP_PRINTF_TYPE_ULONG: case XP_PRINTF_TYPE_ULONG:
ui=ul; ui=ul;
break; break;
#if defined(XP_PRINTF_TYPE_LONGLONG)
case XP_PRINTF_TYPE_LONGLONG: case XP_PRINTF_TYPE_LONGLONG:
ui=ll; ui=ll;
break; break;
case XP_PRINTF_TYPE_ULONGLONG: case XP_PRINTF_TYPE_ULONGLONG:
ui=ull; ui=ull;
break; break;
#endif
case XP_PRINTF_TYPE_CHARP: case XP_PRINTF_TYPE_CHARP:
if (cp) if (cp)
ui=strtoul(cp, NULL, 0); ui=strtoul(cp, NULL, 0);
...@@ -988,14 +968,12 @@ char* xp_asprintf_next(char *format, int type, ...) ...@@ -988,14 +968,12 @@ char* xp_asprintf_next(char *format, int type, ...)
case XP_PRINTF_TYPE_ULONG: case XP_PRINTF_TYPE_ULONG:
l=ul; l=ul;
break; break;
#if defined(XP_PRINTF_TYPE_LONGLONG)
case XP_PRINTF_TYPE_LONGLONG: case XP_PRINTF_TYPE_LONGLONG:
l=ll; l=ll;
break; break;
case XP_PRINTF_TYPE_ULONGLONG: case XP_PRINTF_TYPE_ULONGLONG:
l=ull; l=ull;
break; break;
#endif
case XP_PRINTF_TYPE_CHARP: case XP_PRINTF_TYPE_CHARP:
if (cp) if (cp)
l=strtol(cp, NULL, 0); l=strtol(cp, NULL, 0);
...@@ -1028,14 +1006,12 @@ char* xp_asprintf_next(char *format, int type, ...) ...@@ -1028,14 +1006,12 @@ char* xp_asprintf_next(char *format, int type, ...)
case XP_PRINTF_TYPE_LONG: case XP_PRINTF_TYPE_LONG:
ul=l; ul=l;
break; break;
#if defined(XP_PRINTF_TYPE_LONGLONG)
case XP_PRINTF_TYPE_LONGLONG: case XP_PRINTF_TYPE_LONGLONG:
ul=ll; ul=ll;
break; break;
case XP_PRINTF_TYPE_ULONGLONG: case XP_PRINTF_TYPE_ULONGLONG:
ul=ull; ul=ull;
break; break;
#endif
case XP_PRINTF_TYPE_CHARP: case XP_PRINTF_TYPE_CHARP:
if (cp) if (cp)
ul=strtoul(cp, NULL, 0); ul=strtoul(cp, NULL, 0);
...@@ -1056,7 +1032,6 @@ char* xp_asprintf_next(char *format, int type, ...) ...@@ -1056,7 +1032,6 @@ char* xp_asprintf_next(char *format, int type, ...)
break; break;
} }
break; break;
#if defined(XP_PRINTF_TYPE_LONGLONG)
case XP_PRINTF_TYPE_LONGLONG: case XP_PRINTF_TYPE_LONGLONG:
switch(type) { switch(type) {
case XP_PRINTF_TYPE_CHAR: case XP_PRINTF_TYPE_CHAR:
...@@ -1133,7 +1108,6 @@ char* xp_asprintf_next(char *format, int type, ...) ...@@ -1133,7 +1108,6 @@ char* xp_asprintf_next(char *format, int type, ...)
break; break;
} }
break; break;
#endif
case XP_PRINTF_TYPE_CHARP: case XP_PRINTF_TYPE_CHARP:
num_str[0]=0; num_str[0]=0;
switch(type) { switch(type) {
...@@ -1154,7 +1128,6 @@ char* xp_asprintf_next(char *format, int type, ...) ...@@ -1154,7 +1128,6 @@ char* xp_asprintf_next(char *format, int type, ...)
sprintf(num_str, "%lu", ul); sprintf(num_str, "%lu", ul);
cp=num_str; cp=num_str;
break; break;
#if defined(XP_PRINTF_TYPE_LONGLONG)
case XP_PRINTF_TYPE_LONGLONG: case XP_PRINTF_TYPE_LONGLONG:
/* ToDo MSVC doesn't like this */ /* ToDo MSVC doesn't like this */
sprintf(num_str, "%lld", ll); sprintf(num_str, "%lld", ll);
...@@ -1165,7 +1138,6 @@ char* xp_asprintf_next(char *format, int type, ...) ...@@ -1165,7 +1138,6 @@ char* xp_asprintf_next(char *format, int type, ...)
sprintf(num_str, "%llu", ull); sprintf(num_str, "%llu", ull);
cp=num_str; cp=num_str;
break; break;
#endif
case XP_PRINTF_TYPE_DOUBLE: case XP_PRINTF_TYPE_DOUBLE:
sprintf(num_str, "%f", d); sprintf(num_str, "%f", d);
cp=num_str; cp=num_str;
...@@ -1200,14 +1172,12 @@ char* xp_asprintf_next(char *format, int type, ...) ...@@ -1200,14 +1172,12 @@ char* xp_asprintf_next(char *format, int type, ...)
case XP_PRINTF_TYPE_ULONG: case XP_PRINTF_TYPE_ULONG:
d=ul; d=ul;
break; break;
#if defined(XP_PRINTF_TYPE_LONGLONG)
case XP_PRINTF_TYPE_LONGLONG: case XP_PRINTF_TYPE_LONGLONG:
d=ll; d=ll;
break; break;
case XP_PRINTF_TYPE_ULONGLONG: case XP_PRINTF_TYPE_ULONGLONG:
d=ull; d=ull;
break; break;
#endif
case XP_PRINTF_TYPE_CHARP: case XP_PRINTF_TYPE_CHARP:
if (cp) if (cp)
d=strtod(cp, NULL); d=strtod(cp, NULL);
...@@ -1240,21 +1210,15 @@ char* xp_asprintf_next(char *format, int type, ...) ...@@ -1240,21 +1210,15 @@ char* xp_asprintf_next(char *format, int type, ...)
case XP_PRINTF_TYPE_ULONG: case XP_PRINTF_TYPE_ULONG:
ld=ul; ld=ul;
break; break;
#if defined(XP_PRINTF_TYPE_LONGLONG)
case XP_PRINTF_TYPE_LONGLONG: case XP_PRINTF_TYPE_LONGLONG:
ld=ll; ld=ll;
break; break;
case XP_PRINTF_TYPE_ULONGLONG: case XP_PRINTF_TYPE_ULONGLONG:
ld=ull; ld=ull;
break; break;
#endif
case XP_PRINTF_TYPE_CHARP: case XP_PRINTF_TYPE_CHARP:
if (cp) if (cp)
#if defined(__BORLANDC__)
ld=strtod(cp, NULL);
#else
ld=strtold(cp, NULL); ld=strtold(cp, NULL);
#endif
else else
ld = 0.0L; ld = 0.0L;
break; break;
...@@ -1285,14 +1249,12 @@ char* xp_asprintf_next(char *format, int type, ...) ...@@ -1285,14 +1249,12 @@ char* xp_asprintf_next(char *format, int type, ...)
case XP_PRINTF_TYPE_ULONG: case XP_PRINTF_TYPE_ULONG:
pntr=(void *)((uintptr_t)ul); pntr=(void *)((uintptr_t)ul);
break; break;
#if defined(XP_PRINTF_TYPE_LONGLONG)
case XP_PRINTF_TYPE_LONGLONG: case XP_PRINTF_TYPE_LONGLONG:
pntr=(void *)((intptr_t)ll); pntr=(void *)((intptr_t)ll);
break; break;
case XP_PRINTF_TYPE_ULONGLONG: case XP_PRINTF_TYPE_ULONGLONG:
pntr=(void *)((uintptr_t)ull); pntr=(void *)((uintptr_t)ull);
break; break;
#endif
case XP_PRINTF_TYPE_CHARP: case XP_PRINTF_TYPE_CHARP:
pntr=(void *)(cp); pntr=(void *)(cp);
break; break;
...@@ -1322,21 +1284,15 @@ char* xp_asprintf_next(char *format, int type, ...) ...@@ -1322,21 +1284,15 @@ char* xp_asprintf_next(char *format, int type, ...)
case XP_PRINTF_TYPE_ULONG: case XP_PRINTF_TYPE_ULONG:
s=ul; s=ul;
break; break;
#if defined(XP_PRINTF_TYPE_LONGLONG)
case XP_PRINTF_TYPE_LONGLONG: case XP_PRINTF_TYPE_LONGLONG:
s=ll; s=ll;
break; break;
case XP_PRINTF_TYPE_ULONGLONG: case XP_PRINTF_TYPE_ULONGLONG:
s=ull; s=ull;
break; break;
#endif
case XP_PRINTF_TYPE_CHARP: case XP_PRINTF_TYPE_CHARP:
if (cp) if (cp)
#if defined(__BORLANDC__)
s=strtoul(cp, NULL, 0);
#else
s=strtoull(cp, NULL, 0); s=strtoull(cp, NULL, 0);
#endif
else else
s = 0; s = 0;
break; break;
...@@ -1374,14 +1330,12 @@ char* xp_asprintf_next(char *format, int type, ...) ...@@ -1374,14 +1330,12 @@ char* xp_asprintf_next(char *format, int type, ...)
case XP_PRINTF_TYPE_ULONG: case XP_PRINTF_TYPE_ULONG:
j=asprintf(&entry, fmt_nofield, ul); j=asprintf(&entry, fmt_nofield, ul);
break; break;
#if defined(XP_PRINTF_TYPE_LONGLONG)
case XP_PRINTF_TYPE_LONGLONG: case XP_PRINTF_TYPE_LONGLONG:
j=asprintf(&entry, fmt_nofield, ll); j=asprintf(&entry, fmt_nofield, ll);
break; break;
case XP_PRINTF_TYPE_ULONGLONG: case XP_PRINTF_TYPE_ULONGLONG:
j=asprintf(&entry, fmt_nofield, ull); j=asprintf(&entry, fmt_nofield, ull);
break; break;
#endif
case XP_PRINTF_TYPE_CHARP: case XP_PRINTF_TYPE_CHARP:
if(cp==NULL) if(cp==NULL)
j=asprintf(&entry, fmt_nofield, "<null>"); j=asprintf(&entry, fmt_nofield, "<null>");
...@@ -1590,16 +1544,12 @@ build_arg_table(const char *format, va_list va) ...@@ -1590,16 +1544,12 @@ build_arg_table(const char *format, va_list va)
case XP_PRINTF_TYPE_ULONG: case XP_PRINTF_TYPE_ULONG:
ret[i].ulong_type = va_arg(wva, unsigned long); ret[i].ulong_type = va_arg(wva, unsigned long);
break; break;
#ifdef XP_PRINTF_TYPE_LONGLONG
case XP_PRINTF_TYPE_LONGLONG: case XP_PRINTF_TYPE_LONGLONG:
ret[i].longlong_type = va_arg(wva, long long); ret[i].longlong_type = va_arg(wva, long long);
break; break;
#endif
#ifdef XP_PRINTF_TYPE_ULONGLONG
case XP_PRINTF_TYPE_ULONGLONG: case XP_PRINTF_TYPE_ULONGLONG:
ret[i].ulonglong_type = va_arg(wva, unsigned long long); ret[i].ulonglong_type = va_arg(wva, unsigned long long);
break; break;
#endif
case XP_PRINTF_TYPE_CHARP: case XP_PRINTF_TYPE_CHARP:
ret[i].charp_type = va_arg(wva, char *); ret[i].charp_type = va_arg(wva, char *);
break; break;
...@@ -1680,14 +1630,12 @@ char* xp_vasprintf(const char *format, va_list va) ...@@ -1680,14 +1630,12 @@ char* xp_vasprintf(const char *format, va_list va)
case XP_PRINTF_TYPE_ULONG: case XP_PRINTF_TYPE_ULONG:
next=xp_asprintf_next(working, type, va_arg(wva, unsigned long)); next=xp_asprintf_next(working, type, va_arg(wva, unsigned long));
break; break;
#if defined(XP_PRINTF_TYPE_LONGLONG)
case XP_PRINTF_TYPE_LONGLONG: case XP_PRINTF_TYPE_LONGLONG:
next=xp_asprintf_next(working, type, va_arg(wva, long long)); next=xp_asprintf_next(working, type, va_arg(wva, long long));
break; break;
case XP_PRINTF_TYPE_ULONGLONG: case XP_PRINTF_TYPE_ULONGLONG:
next=xp_asprintf_next(working, type, va_arg(wva, unsigned long long)); next=xp_asprintf_next(working, type, va_arg(wva, unsigned long long));
break; break;
#endif
case XP_PRINTF_TYPE_CHARP: case XP_PRINTF_TYPE_CHARP:
next=xp_asprintf_next(working, type, va_arg(wva, char *)); next=xp_asprintf_next(working, type, va_arg(wva, char *));
break; break;
...@@ -1735,16 +1683,12 @@ char* xp_vasprintf(const char *format, va_list va) ...@@ -1735,16 +1683,12 @@ char* xp_vasprintf(const char *format, va_list va)
case XP_PRINTF_TYPE_ULONG: case XP_PRINTF_TYPE_ULONG:
next=xp_asprintf_next(working, type, atable[curpos - 1].ulong_type); next=xp_asprintf_next(working, type, atable[curpos - 1].ulong_type);
break; break;
#if defined(XP_PRINTF_TYPE_LONGLONG)
case XP_PRINTF_TYPE_LONGLONG: case XP_PRINTF_TYPE_LONGLONG:
next=xp_asprintf_next(working, type, atable[curpos - 1].longlong_type); next=xp_asprintf_next(working, type, atable[curpos - 1].longlong_type);
break; break;
#endif
#if defined(XP_PRINTF_TYPE_ULONGLONG)
case XP_PRINTF_TYPE_ULONGLONG: case XP_PRINTF_TYPE_ULONGLONG:
next=xp_asprintf_next(working, type, atable[curpos - 1].ulonglong_type); next=xp_asprintf_next(working, type, atable[curpos - 1].ulonglong_type);
break; break;
#endif
case XP_PRINTF_TYPE_CHARP: case XP_PRINTF_TYPE_CHARP:
next=xp_asprintf_next(working, type, atable[curpos - 1].charp_type); next=xp_asprintf_next(working, type, atable[curpos - 1].charp_type);
break; break;
...@@ -1799,9 +1743,7 @@ int main(int argc, char *argv[]) ...@@ -1799,9 +1743,7 @@ int main(int argc, char *argv[])
char *format; char *format;
char *p; char *p;
int i,j; int i,j;
#if defined(XP_PRINTF_TYPE_LONGLONG)
long long L; long long L;
#endif
long l; long l;
char *cp; char *cp;
double d; double d;
...@@ -1844,12 +1786,10 @@ int main(int argc, char *argv[]) ...@@ -1844,12 +1786,10 @@ int main(int argc, char *argv[])
l=atol(argv[j]+1); l=atol(argv[j]+1);
p=xp_asprintf_next(format,XP_PRINTF_CONVERT|XP_PRINTF_TYPE_LONG,l); p=xp_asprintf_next(format,XP_PRINTF_CONVERT|XP_PRINTF_TYPE_LONG,l);
break; break;
#if defined(XP_PRINTF_TYPE_LONGLONG)
case 'L': case 'L':
L=strtoll(argv[j]+1, NULL, 10); L=strtoll(argv[j]+1, NULL, 10);
p=xp_asprintf_next(format,XP_PRINTF_CONVERT|XP_PRINTF_TYPE_LONGLONG,L); p=xp_asprintf_next(format,XP_PRINTF_CONVERT|XP_PRINTF_TYPE_LONGLONG,L);
break; break;
#endif
case 's': case 's':
cp=argv[j]+1; cp=argv[j]+1;
p=xp_asprintf_next(format,XP_PRINTF_CONVERT|XP_PRINTF_TYPE_CHARP,cp); p=xp_asprintf_next(format,XP_PRINTF_CONVERT|XP_PRINTF_TYPE_CHARP,cp);
...@@ -1867,3 +1807,5 @@ int main(int argc, char *argv[]) ...@@ -1867,3 +1807,5 @@ int main(int argc, char *argv[])
} }
#endif #endif
#endif
...@@ -22,6 +22,8 @@ ...@@ -22,6 +22,8 @@
#ifndef _XPPRINTF_H_ #ifndef _XPPRINTF_H_
#define _XPPRINTF_H_ #define _XPPRINTF_H_
#if !defined(__BORLANDC__)
#include <stdarg.h> #include <stdarg.h>
#include "wrapdll.h" #include "wrapdll.h"
...@@ -36,10 +38,8 @@ ...@@ -36,10 +38,8 @@
#define XP_PRINTF_TYPE_USHORT XP_PRINTF_TYPE_UINT #define XP_PRINTF_TYPE_USHORT XP_PRINTF_TYPE_UINT
#define XP_PRINTF_TYPE_LONG 4 #define XP_PRINTF_TYPE_LONG 4
#define XP_PRINTF_TYPE_ULONG 5 #define XP_PRINTF_TYPE_ULONG 5
#if !defined(__BORLANDC__)
#define XP_PRINTF_TYPE_LONGLONG 6 #define XP_PRINTF_TYPE_LONGLONG 6
#define XP_PRINTF_TYPE_ULONGLONG 7 #define XP_PRINTF_TYPE_ULONGLONG 7
#endif
#define XP_PRINTF_TYPE_CHARP 8 #define XP_PRINTF_TYPE_CHARP 8
#define XP_PRINTF_TYPE_DOUBLE 9 #define XP_PRINTF_TYPE_DOUBLE 9
#define XP_PRINTF_TYPE_FLOAT XP_PRINTF_TYPE_DOUBLE /* Floats are promoted to doubles */ #define XP_PRINTF_TYPE_FLOAT XP_PRINTF_TYPE_DOUBLE /* Floats are promoted to doubles */
...@@ -61,6 +61,7 @@ DLLEXPORT char* xp_asprintf_next(char *format, int type, ...); ...@@ -61,6 +61,7 @@ DLLEXPORT char* xp_asprintf_next(char *format, int type, ...);
DLLEXPORT char* xp_asprintf_end(char *format, size_t *endlen); DLLEXPORT char* xp_asprintf_end(char *format, size_t *endlen);
DLLEXPORT char* xp_asprintf(const char *format, ...); DLLEXPORT char* xp_asprintf(const char *format, ...);
DLLEXPORT char* xp_vasprintf(const char *format, va_list va); DLLEXPORT char* xp_vasprintf(const char *format, va_list va);
DLLEXPORT int xp_printf_get_next(char *format);
DLLEXPORT int xp_printf_get_type(const char *format); DLLEXPORT int xp_printf_get_type(const char *format);
#if defined(_MSC_VER) || defined(__MSVCRT__) || defined(__BORLANDC__) #if defined(_MSC_VER) || defined(__MSVCRT__) || defined(__BORLANDC__)
DLLEXPORT int vasprintf(char **strptr, const char *format, va_list va); DLLEXPORT int vasprintf(char **strptr, const char *format, va_list va);
...@@ -72,3 +73,5 @@ DLLEXPORT int asprintf(char **strptr, const char *format, ...); ...@@ -72,3 +73,5 @@ DLLEXPORT int asprintf(char **strptr, const char *format, ...);
#endif #endif
#endif #endif
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment