/*
* nblib.h - Header file for netboot library
*
* Copyright (C) 1998-2003 Gero Kuhlmann <gero@gkminix.han.de>
*
* 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
* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id: nblib.h,v 1.7 2003/03/09 00:43:08 gkminix Exp $
*/
#ifndef NBLIB_H
#define NBLIB_H
/*
* File access time types used by filetime()
*/
#define FT_ATIME 0 /* last access time */
#define FT_MTIME 1 /* last modification time */
#define FT_CTIME 2 /* last status change time */
/*
* Values used by boolean variables:
*/
#define BOOL_UNDEF -1 /* value not assigned yet */
#define BOOL_FALSE FALSE /* FALSE value */
#define BOOL_TRUE TRUE /* TRUE value */
/*
* Structure defining program options
*/
struct cmdopt {
char *longopt; /* long option name */
char shortopt; /* short option character */
enum {
noval, /* end of option list */
boolval, /* option has no argument */
intval, /* option has short integer argument */
longval, /* option has long integer argument */
strval, /* option has string argument */
procval, /* call procedure when option given */
nonopt /* argument without option name */
} valtype;
union {
char **strptr; /* pointer to string buffer */
int *intptr; /* pointer to short integer buffer */
long *longptr; /* pointer to long integer buffer */
int *boolptr; /* pointer to boolean buffer */
void (*procptr) __P((struct cmdopt *));
} valptr;
char *envdefault; /* environment var name for default */
char *helptext; /* help text for option */
char *helparg; /* help text for argument */
};
/*
* Structures holding all the information required to parse config file
*/
struct paramdef {
char *name; /* name of parameter in config file */
enum {
par_null, /* end of parameter list */
par_string, /* string value */
par_int, /* short integer value */
par_long, /* long integer value */
par_bool, /* boolean value */
par_enum, /* enumeration value */
par_proc /* procedure to handle argument */
} type;
char **enumlist; /* list of enumeration values */
union {
char **strptr; /* pointer to string buffer */
int *intptr; /* pointer to short integer value */
long *longptr; /* pointer to long integer value */
int *boolptr; /* pointer to boolean value */
int *enumptr; /* pointer to enumeration value */
char *(*procptr) __P((char *, char *));
} valptr;
};
struct sectdef {
char *name; /* name of section */
struct paramdef *params; /* pointer to parameter list */
char *(*startsect) __P((char *, struct sectdef *));
char *(*endsect) __P((char *, struct sectdef *));
};
/*
* Variables exported by library
*/
extern char *progname; /* name of current program */
extern char *dbname; /* name of system database file */
extern unsigned long write_chksum; /* checksum when writing */
extern int verbose; /* verbosity flag */
extern int quiet; /* quiet flag */
/*
* Definitions for printing error messages
*/
#define prnerr0(st) if (!quiet) \
fprintf(stderr, "%s: " st "\n",\
progname)
#define prnerr1(st, a1) if (!quiet) \
fprintf(stderr, "%s: " st "\n",\
progname, a1)
#define prnerr2(st, a1, a2) if (!quiet) \
fprintf(stderr, "%s: " st "\n",\
progname, a1, a2)
#define prnerr3(st, a1, a2, a3) if (!quiet) \
fprintf(stderr, "%s: " st "\n",\
progname, a1, a2, a3)
#define prnerr4(st, a1, a2, a3, a4) if (!quiet) \
fprintf(stderr, "%s: " st "\n",\
progname, a1, a2, a3, a4)
/*
* Routines exported by library
*/
extern voidstar nbmalloc __P((size_t amount));
extern void setpath __P((char **pathname, char *maindir));
extern void checkaccess __P((char **filename, char *maindir));
extern long filesize __P((char *filename));
extern time_t filetime __P((char *filename, int timetype));
extern __u8 totarget __P((int c));
extern int nbread __P((__u8 *buf, unsigned int bufsize, int infile));
extern int nbwrite __P((__u8 *buf, unsigned int bufsize, int outfile));
extern int bytecmp __P((char *str, __u8 *buf, size_t len));
extern void bytecpy __P((char *str, __u8 *buf, size_t len));
extern void copystr __P((char **dest, char *src));
extern void readdb __P((struct sectdef *sect, char *fname));
extern void readconfig __P((struct sectdef *sects, char *fname));
extern void nbsetup __P((int argc, char **argv,
struct cmdopt *opts, struct sectdef *sects));
#ifndef HAVE_STRSTR
extern char *strstr __P((char *haystack, char *needle));
#endif
#ifndef HAVE_MEMMOVE
extern voidstar memmove __P((voidstar dest, voidstar src, size_t len));
#endif
#ifndef HAVE_STRSPN
extern int strspn __P((char *str, char *accept));
#endif
#ifndef HAVE_STRCSPN
extern int strcspn __P((char *str, char *reject));
#endif
#endif
syntax highlighted by Code2HTML, v. 0.9.1