return(ptr);
}
+char* xstrdup(const char* s)
+{
+ char* ptr = strdup(s);
+ if (ptr == NULL)
+ {
+ fprintf(stderr, "Out of memory!\n");
+ exit(EXIT_FAILURE);
+ }
+ return(ptr);
+}
+
void packed_to_token(long packed, char token[6])
{
// Unpack and map back to ASCII.
printf("\n");
// Create a copy of our string, so we can edit it.
- char* copy = (char*) xmalloc(strlen(msg) + 1);
- strncpy(copy, msg, strlen(msg) + 1);
+ char* copy = xstrdup(msg);
// Staging area for stringified parameters.
char parameters[5][100]; // FIXME: to be replaced with dynamic allocation
// Render the final string.
char rendered[2000]; // FIXME: to be replaced with dynamic allocation
- sprintf((char *)&rendered, copy, parameters[1], parameters[2], parameters[3], parameters[4]); // FIXME: to be replaced with vsprintf()
+ sprintf(rendered, copy, parameters[1], parameters[2], parameters[3], parameters[4]); // FIXME: to be replaced with vsprintf()
// Print the message.
printf("%s\n", rendered);
* and is not changed thereafter unless the routines on this page choose
* to do so. */
- if (!oldstyle && !isatty(1))
+ if (prompt)
fputs("> ", stdout);
do {
- if (oldstyle) {
+ if (!editline) {
IGNORE(fgets(rawbuf,sizeof(rawbuf)-1,fp));
eof = (feof(fp));
} else {
- char *cp = linenoise("> ");
+ char *cp = linenoise(prompt ? "> ": "");
eof = (cp == NULL);
if (!eof) {
strncpy(rawbuf, cp, sizeof(rawbuf)-1);
*t = (long) tv.tv_usec;
}
-long MOD(long n, long m)
-{
- return(n%m);
-}
+/* end */