X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=sim%2Fucsim%2Fcmd.src%2Fcmdutil.cc;h=86fd4c542942a474fcab6dee77ed0ed63ced96cc;hb=61eaa2e820422db6272247c01238b41484844149;hp=84c2be54a540b587798906983f8f75f59c517b0e;hpb=0ad8c78844ada3a7591fc0b355c19c06c4a069b0;p=fw%2Fsdcc diff --git a/sim/ucsim/cmd.src/cmdutil.cc b/sim/ucsim/cmd.src/cmdutil.cc index 84c2be54..86fd4c54 100644 --- a/sim/ucsim/cmd.src/cmdutil.cc +++ b/sim/ucsim/cmd.src/cmdutil.cc @@ -110,15 +110,22 @@ get_name_entry(struct name_entry tabl[], char *name, class cl_uc *uc) int i= 0; char *p; + if (!tabl || + !name || + !(*name)) + return(0); for (p= name; *p; *p= toupper(*p), p++); while (tabl[i].name && (!(tabl[i].cpu_type & uc->type) || (strcmp(tabl[i].name, name) != 0))) - i++; + { + //printf("tabl[%d].name=%s <-> %s\n",i,tabl[i].name,name); + i++; + } if (tabl[i].name != NULL) return(&tabl[i]); else - return(NULL); + return(0); } @@ -126,7 +133,7 @@ get_name_entry(struct name_entry tabl[], char *name, class cl_uc *uc) * Interpreting a bitname */ -bool +/*bool interpret_bitname(char *name, class cl_uc *uc, uchar **cell, uchar *celladdr, uchar *bitaddr, uchar *bitmask, @@ -185,7 +192,8 @@ interpret_bitname(char *name, class cl_uc *uc, *celladdr= (*bitaddr >> 3) + 0x20; } // *bitaddr, *celladdr now OK - *cell= uc->get_bit/*FIXME*/(*bitaddr); + *cell= uc->get_bit//FIXME + (*bitaddr); *bitmask= BIT_MASK(*bitaddr); // making symbolic name if (!symname) @@ -217,7 +225,7 @@ interpret_bitname(char *name, class cl_uc *uc, strcat(sym, bitnumstr); *symname= sym; return(DD_TRUE); -} +}*/ /* @@ -227,8 +235,8 @@ interpret_bitname(char *name, class cl_uc *uc, char * proc_escape(char *string, int *len) { - char spec_chars[]= "fnrtvab"; - char spec[]= "\f\n\r\t\v\a\b"; + char spec_chars[]= "fnrtvab\""; + char spec[]= "\f\n\r\t\v\a\b\""; char *s, *str, *p; s = string; @@ -283,4 +291,54 @@ proc_escape(char *string, int *len) } + +extern "C" int vasprintf(char **strp, const char *format, va_list ap); +extern "C" int vsnprintf(char *str, size_t size,const char *format,va_list ap); + +int +cmd_vfprintf(FILE *f, char *format, va_list ap) +{ + int ret; + if (!f) + return(0); +#ifdef HAVE_VASPRINTF + char *msg= NULL; + vasprintf(&msg, format, ap); + ret= fprintf(f, "%s", msg); + free(msg); +#else +# ifdef HAVE_VSNPRINTF + char msg[80*25]; + vsnprintf(msg, 80*25, format, ap); + ret= fprintf(f, "%s", msg); +# else +# ifdef HAVE_VPRINTF + char msg[80*25]; + vsprintf(msg, format, ap); /* Dangerous */ + ret= fprintf(f, "%s", msg); +# else +# ifdef HAVE_DOPRNT + /* ??? */ + /*strcpy(msg, "Unimplemented printf has called.\n");*/ +# else + /*strcpy(msg, "printf can not be implemented, upgrade your libc.\n");*/ +# endif +# endif +# endif +#endif + fflush(f); + return(ret); +} + +int +cmd_fprintf(FILE *f, char *format, ...) +{ + va_list ap; + va_start(ap, format); + int ret= cmd_vfprintf(f, format, ap); + va_end(ap); + return(ret); +} + + /* End of cmd.src/cmdutil.cc */