mirror of https://github.com/rusefi/lua.git
Alteracao na funcao 'write" para permitir acrescentar caracteres
de espacamento, tabs, newline, etc. nos formatos. Corrigiu tambem bug do formato 'F' maiusculo.
This commit is contained in:
parent
b1e9b37883
commit
5034be6635
39
iolib.c
39
iolib.c
|
@ -3,7 +3,7 @@
|
||||||
** Input/output library to LUA
|
** Input/output library to LUA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
char *rcs_iolib="$Id: iolib.c,v 1.3 1994/03/28 15:14:02 celes Exp celes $";
|
char *rcs_iolib="$Id: iolib.c,v 1.4 1994/04/25 20:11:23 celes Exp celes $";
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -344,9 +344,11 @@ static char *buildformat (char *e, lua_Object o)
|
||||||
static char buffer[512];
|
static char buffer[512];
|
||||||
static char f[80];
|
static char f[80];
|
||||||
char *string = &buffer[255];
|
char *string = &buffer[255];
|
||||||
|
char *fstart=e, *fspace;
|
||||||
char t, j='r';
|
char t, j='r';
|
||||||
int m=0, n=0, l;
|
int m=0, n=0, l;
|
||||||
while (isspace(*e)) e++;
|
while (isspace(*e)) e++;
|
||||||
|
fspace = e;
|
||||||
t = *e++;
|
t = *e++;
|
||||||
if (*e == '<' || *e == '|' || *e == '>') j = *e++;
|
if (*e == '<' || *e == '|' || *e == '>') j = *e++;
|
||||||
while (isdigit(*e))
|
while (isdigit(*e))
|
||||||
|
@ -359,16 +361,22 @@ static char *buildformat (char *e, lua_Object o)
|
||||||
if (j == '<' || j == '|') sprintf(strchr(f,0),"-");
|
if (j == '<' || j == '|') sprintf(strchr(f,0),"-");
|
||||||
if (m != 0) sprintf(strchr(f,0),"%d", m);
|
if (m != 0) sprintf(strchr(f,0),"%d", m);
|
||||||
if (n != 0) sprintf(strchr(f,0),".%d", n);
|
if (n != 0) sprintf(strchr(f,0),".%d", n);
|
||||||
sprintf(strchr(f,0), "%c", t);
|
switch (t)
|
||||||
switch (tolower(t))
|
|
||||||
{
|
{
|
||||||
case 'i': t = 'i';
|
case 'i': case 'I': t = 'd';
|
||||||
|
sprintf(strchr(f,0), "%c", t);
|
||||||
sprintf (string, f, (long int)lua_getnumber(o));
|
sprintf (string, f, (long int)lua_getnumber(o));
|
||||||
break;
|
break;
|
||||||
case 'f': case 'g': case 'e': t = 'f';
|
case 'f': case 'g': case 'e': case 'G': case 'E':
|
||||||
|
sprintf(strchr(f,0), "%c", t);
|
||||||
sprintf (string, f, (float)lua_getnumber(o));
|
sprintf (string, f, (float)lua_getnumber(o));
|
||||||
break;
|
break;
|
||||||
case 's': t = 's';
|
case 'F': t = 'f';
|
||||||
|
sprintf(strchr(f,0), "%c", t);
|
||||||
|
sprintf (string, f, (float)lua_getnumber(o));
|
||||||
|
break;
|
||||||
|
case 's': case 'S': t = 's';
|
||||||
|
sprintf(strchr(f,0), "%c", t);
|
||||||
sprintf (string, f, lua_getstring(o));
|
sprintf (string, f, lua_getstring(o));
|
||||||
break;
|
break;
|
||||||
default: return "";
|
default: return "";
|
||||||
|
@ -383,13 +391,22 @@ static char *buildformat (char *e, lua_Object o)
|
||||||
}
|
}
|
||||||
else if (m!=0 && j=='|')
|
else if (m!=0 && j=='|')
|
||||||
{
|
{
|
||||||
|
int k;
|
||||||
int i=l-1;
|
int i=l-1;
|
||||||
while (isspace(string[i])) i--;
|
while (isspace(string[i]) || string[i]==0) i--;
|
||||||
string -= (m-i) / 2;
|
string -= (m-i)/2;
|
||||||
i=0;
|
for(k=0; k<(m-i)/2; k++)
|
||||||
while (string[i]==0) string[i++] = ' ';
|
string[k] = ' ';
|
||||||
string[l] = 0;
|
|
||||||
}
|
}
|
||||||
|
/* add space characteres */
|
||||||
|
while (fspace != fstart)
|
||||||
|
{
|
||||||
|
string--;
|
||||||
|
fspace--;
|
||||||
|
*string = *fspace;
|
||||||
|
}
|
||||||
|
while (isspace(*e)) string[l++] = *e++;
|
||||||
|
string[l] = 0;
|
||||||
return string;
|
return string;
|
||||||
}
|
}
|
||||||
static void io_write (void)
|
static void io_write (void)
|
||||||
|
|
Loading…
Reference in New Issue