/* Autoconf patching by David Hedbor, neotron@lysator.liu.se */
/*********************************************************************/
/* file: utils.c - some utility-functions */
/* TINTIN III */
/* (T)he K(I)cki(N) (T)ickin D(I)kumud Clie(N)t */
/* coded by peter unold 1992 */
/*********************************************************************/
/* note: changed a little bit for readline support -- daw */
#ifdef HAVE_STRING_H
#include <string.h>
#else
#ifdef HAVE_STRINGS_H
#include <strings.h>
#endif
#endif
#include "tintin.h"
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#include <sys/param.h>
void syserr();
/*********************************************/
/* return: TRUE if s1 is an abrevation of s2 */
/*********************************************/
int is_abrev(s1, s2)
char *s1;
char *s2;
{
return (!strncmp(s2, s1, strlen(s1)));
}
/********************************/
/* strdup - duplicates a string */
/* return: address of duplicate */
/********************************/
char *mystrdup(s)
char *s;
{
char *dup;
if ((dup = (char *) malloc(strlen(s) + 1)) == NULL)
syserr("Not enought memory for strdup.");
strcpy(dup, s);
return dup;
}
/*************************************************/
/* print system call error message and terminate */
/*************************************************/
void syserr(msg)
char *msg;
{
extern int errno, sys_nerr;
#if !defined(BSD) || (BSD < 199306)
extern char *sys_errlist[];
#endif
char s[128];
if (errno > 0 && errno < sys_nerr)
sprintf(s, "ERROR: %s (%d: %s)", msg, errno, sys_errlist[errno]);
else
sprintf(s, "ERROR: %s (%d)", msg, errno);
quitmsg(s);
/* deleted for readline
fprintf(stderr,"ERROR: %s (%d",msg, errno);
if(errno>0 && errno<sys_nerr)
fprintf(stderr,": %s)\n",sys_errlist[errno]);
else
fprintf(stderr,")\n");
exit(1);
*/
}