/************************************************************************
* Some routine common to procmail, formail and lockfile *
* *
* Copyright (c) 1993-1997, S.R. van den Berg, The Netherlands *
* Copyright (c) 1999-2001, Philip Guenther, The United States *
* of America *
* #include "../README" *
************************************************************************/
#ifdef RCS
static /*const*/char rcsid[]=
"$Id: acommon.c,v 1.12 2001/08/04 07:14:59 guenther Exp $";
#endif
#include "includes.h"
#include "acommon.h"
#include "robust.h"
#include "shell.h"
const char*hostname P((void))
{
#ifdef NOuname
#ifndef MAXHOSTNAMELEN
#define MAXHOSTNAMELEN 64
#endif
static char name[MAXHOSTNAMELEN]="";
if(!name[0])
gethostname(name,MAXHOSTNAMELEN),name[MAXHOSTNAMELEN-1]='\0';
#else
static char*name=0;
if(!name)
{ struct utsname names;
Uname(&names);
if(!(name=malloc(strlen(names.nodename)+1)))
return ""; /* can happen when called from within lockfile */
strcpy(name,names.nodename);
}
#endif
return name;
}
char*ultoan(val,dest)unsigned long val;char*dest; /* convert to a number */
{ register int i; /* within the set [A-Za-z0-9-_] */
do
{ i=val&0x3f; /* collating sequence dependency! */
*dest++=i+(i<26?'A':i<26+26?'a'-26:i<26+26+10?'0'-26-26:
i==26+26+10?'-'-26-26-10:'_'-26-26-11);
}
while(val>>=6);
*dest='\0';
return dest;
}
char*ultstr(minwidth,val,dest)int minwidth;unsigned long val;char*dest;
{ int i;unsigned long j;char*ret;
j=val;i=0; /* a beauty, isn't it :-) */
do i++; /* determine needed width */
while(j/=10);
while(--minwidth>=i) /* fill up any excess width */
*dest++=' ';
*(ret=dest+=i)='\0';
do *--dest='0'+val%10; /* display value backwards */
while(val/=10);
return ret;
}
syntax highlighted by Code2HTML, v. 0.9.1