Added printf_tiny (minimal but useful printing in only 267 bytes)
[fw/sdcc] / sim / ucsim / utils.cc
index 41eddffe37844302d6e9efcf1b41cbb70c98d235..b7a625d393c0e4a2d2b479c343d85d2af1d0810f 100644 (file)
@@ -121,12 +121,12 @@ vformat_string(char *format, va_list ap)
   return(msg);
 #else
 #  ifdef HAVE_VSNPRINTF
-  char *msg= malloc(80*25);
+  char *msg= (char*)malloc(80*25);
   vsnprintf(msg, 80*25, format, ap);
   return(msg);
 #  else
 #    ifdef HAVE_VPRINTF
-  char *msg= malloc(80*25);
+  char *msg= (char*)malloc(80*25);
   vsprintf(msg, format, ap); /* Dangerous */
   return(msg);
 #    endif
@@ -182,4 +182,48 @@ object_name(class cl_base *o)
 }
 
 
+char *
+case_string(enum letter_case lcase, char *str)
+{
+  char *p= strdup(str);
+  char *s= p;
+
+  switch (lcase)
+    {
+    case case_upper:
+      while (p && *p) {
+       *p= toupper(*p);
+       p++;
+      }
+      break;
+    case case_lower:
+      while (p && *p) {
+       *p= tolower(*p);
+       p++;
+      }
+      break;
+    case case_case:
+      if (!p || *p == '\0')
+       break;
+      while (isspace(*p)) p++;
+      if (*p)
+       *p= toupper(*p);
+      break;
+    }
+  return(s);
+}
+
+/*char *
+case_string(enum letter_case lcase, const char *str)
+{
+  char *p= NIL;
+
+  if (!str ||
+      !*str)
+    return(NIL);
+  p= strdup(str);
+  return case_string(lcase, p);
+}*/
+
+
 /* End of utils.cc */