/*
 * ----------------------------------------------------------------
 * Night Light String Functions Header
 * ----------------------------------------------------------------
 * Copyright (C) 1997-2003 Jonas Kvinge <jonas@night-light.net>
 * All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Last modified by:
 * Jonas Kvinge (27.04.2002)
 *
 */

#ifdef STRCALLS_H
#warning "strcalls.h already included."
#else
#define STRCALLS_H


#define STRHOSTINVALIDCHAR						"Invalid character \"%c\" in hostname."
#define STRHOSTMAXCHARS							"Maximum %d characters in hostname."
#define STRFILEINVALIDCHAR						"Invalid character \"%c\" in filename."
#define STRFILEMAXCHARS							"Maximum %d characters in filename."


/* VARIABLES - JONAS (05.05.2000) */

#ifdef STRCALLS_C
  unsigned short int WMChars = 0;
  char *UNAMEINFO = NULL;
  char *PLATFORM = NULL;
  char *HOSTNAME = NULL;
  char *HOSTIPS = NULL;
  unsigned long int HOSTIPH = 0;
  unsigned long int HOSTIPN = 0;
  char *OSNAME = NULL;
  char *OSRELEASE = NULL;
  char *STRDURATION = NULL;
  char StrResult[LINELEN+1] = "";
#else
  extern unsigned short int WMChars;
  extern char *UNAMEINFO;
  extern char *PLATFORM;
  extern char *HOSTNAME;
  extern char *HOSTIPS;
  extern unsigned long int HOSTIPH;
  extern unsigned long int HOSTIPN;
  extern char *OSNAME;
  extern char *OSRELEASE;
  extern char *STRDURATION;
  extern char StrResult[];
#endif


/* MACROS - JONAS (05.05.2000) */

#undef strdup
#define strdup(s)		mystrdup(__FILE__, __LINE__, __FUNCTION__, (s))

#undef strrealloc
#define strrealloc(p, s)	mystrrealloc(__FILE__, __LINE__, __FUNCTION__, (p), (s))

#undef strwm
#define strwm(p, s)		mystrwm(__FILE__, __LINE__, __FUNCTION__, (p), (s), FALSE)


/* FUNCTION PROTOTYPES - JONAS (27.04.2002) */

const char *straerror(unsigned short int aerrnocode);
unsigned short int strisvalidhost(const char *const StringPT);
unsigned short int strisvalidfile(const char *const StringPT);
const char *strresult(void);
char *mystrdup(const char *const FilePT, const unsigned short int Line, const char *const FunctionPT, const char *StringPT);
char *mystrrealloc(const char *FilePT, const unsigned long int Line, const char *const FunctionPT, char *OldPointer, const char *StringPT);
size_t mystrspn(const char *StringPT, const char *AcceptPT);
unsigned short int mystrwm(const char *FilePT, const unsigned long int Line, const char *const FunctionPT, const char *PatternPT, const char *StringPT, unsigned short int Internal);
void strlower(char *StringPT);
void strupper(char *StringPT);
unsigned short int strdigit(const char *StringPT);
unsigned short int strip(const char *StringPT);
void strrnd(char *StringPT, const unsigned short int Len);
const char *datestamp(void);
const char *timestamp(void);
const char *dtstamp(void);
const char *strduration(const time_t Time);
void strgetunameinfo(void);
void strgetplatform(void);
void strgetosname(void);
void strgetosrelease(void);
void strgethostname(void);
char *straddbuffer(char *StringPT, const char *const BufferPT, const unsigned long int MaxStringLen, const unsigned short int AddLen);
void strcleanup(void);

#endif


syntax highlighted by Code2HTML, v. 0.9.1