ftp.nice.ch/pub/next/unix/network/www/analog.NIHS.bs.gnutar.gz#/analog/analhea2.h

This is analhea2.h in view mode; [Download] [Up]

/*** analhea2.h; header file for analog version 1.9beta2 ***/
/* Please read Readme.html, or http://www.statslab.cam.ac.uk/~sret1/analog/ */

/*** These things are not intended to be user definable; user definable headers
     are in analhead.h ***/

#ifndef ANALHEAD2
#define ANALHEAD2

/*** First some #define's and #include's ***/

#define VERSION "1.9beta2"    /* the version number of this program */

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <sys/types.h>
#include <sys/time.h>
#include <ctype.h>

#ifdef TRUE  /* I suppose everyone else defines TRUE = 1, but I won't */
#undef TRUE  /* risk it by doing an #ifndef! */
#endif
#define TRUE (1)
#ifdef FALSE
#undef FALSE
#endif
#define FALSE (0)
#ifdef ON
#undef ON
#endif
#define ON (TRUE)
#ifdef OFF
#undef OFF
#endif
#define OFF (FALSE)
#ifdef OK
#undef OK
#endif
#define OK (0)
#ifdef ERR
#undef ERR
#endif
#define ERR (-1)
#ifdef UNSET
#undef UNSET
#endif
#define UNSET (-1)
#define BYREQUESTS (0)       /* ways of sorting */
#define BYBYTES (1)
#define ALPHABETICAL (2)
#define RANDOMLY (3)
#define APPROX (2)       /* for hostname counting */
#define ALL (2)          /* see PAGELINKS and REQTYPE in analhead.h */
#define PAGES (1)
#define COMMON (2)       /* three types of input lines */
#define NCSAOLD (1)
#define CORRUPT (0)
#define CACHE (2)        /* output types */
#define ASCII (1)
#define HTML (0)
#ifdef MAX
#undef MAX
#endif
#define MAX(a,b) (((a)>(b))?(a):(b))
#ifdef MIN
#undef MIN
#endif
#define MIN(a,b) (((a)<(b))?(a):(b))
#ifdef ROUND
#undef ROUND
#endif            /* round double to nearest integer (as double) */
#define ROUND(x) (((x)-(floor(x)))>=0.5?ceil(x):floor(x))
#define STREQ(a,b) (strcmp(a,b)==0)
#ifdef INFINITY
#undef INFINITY
#endif            /* something very big (but that will fit in a long) */
#define INFINITY (2000000000)
#define SUNDAY (0)
#define MONDAY (1)
#define TUESDAY (2)
#define WEDNESDAY (3)
#define THURSDAY (4)
#define FRIDAY (5)
#define SATURDAY (6)
#define ISLEAPFEB(m,y) (((m)==1)&&(((y)%4)==0))  /* Feb in leap year */
#define ISLEAPJF(m,y) (((m)<=1)&&(((y)%4)==0))  /* Jan or Feb in leap year */
/* NB Every 4th year from 1901 to 2099 is a leap year */

#define DOMHASHSIZE (1354)
/* = 2 * 26^2 + 2 by description of domain algorithm */
#define NO_ERRS (29)   /* how many error types there are (in init.c) */
#define MAXERRLENGTH (40)  /* the longest one */
#define NO_STATUS (22) /* how many status codes are defined */
#define MAXSTATUSLENGTH (35)

/*** Now include the user-definable header things ***/

#include "analhead.h"

/*** Next some global structures ***/

typedef int flag;

struct timestruct {        /* some things we might want to know about a
			      particular time */
  int date;                /* the day of the month */
  int monthno;             /* 0 for Jan, ... , 11 for Dec */
  int year;                /* 4 digits */
  int hr;                  /* 0 to 23 */
  int min;                 /* 0 to 59 */
  long code;               /* an increasing (though not necessarily linear)
			      function of time, for quick comparisons.
			      Defined in timecode() */
};

struct monthly {           /* a structure for a year's worth of monthly data */
  int reqs[12];            /* the number of requests on each month */
  double bytes[12];        /* and bytes ditto */
  struct monthly *next;    /* where the next year's data is */
};

struct daily {             /* similarly, for a month's worth of daily data */
  int reqs[31];            /* NB Day n is stored in location (n - 1) */
  double bytes[31];
  struct daily *next;
};

struct hourly {            /* and for a day's worth of hourly data */
  int reqs[24];
  double bytes[24];
  struct hourly *next;
};

struct weekly {             /* a structure for weekly data */
  int reqs;
  double bytes;
  struct timestruct start;  /* the start of the week */
  struct weekly *next;
};

struct genstruct {           /* relevant information about an object */
  char *name;                /* its name */
  int reqs;                  /* its number of requests */
  double bytes;              /* the number of bytes transferred due to it */
  flag pre7;                 /* has been used before last 7 days (host only) */
  flag last7;                /* has been used in the last 7 days? */
  flag aliasdone;            /* have we done an alias on it? (URLs only) */
  struct genstruct *next;    /* the next object in the list */
};

struct domain {              /* and domains */
  char *id;                  /* can be as long as host for subdomains */
  char *revid;               /* same reversed */
  char *name;                /* the geographical location of the domain */
  int reqs;
  double bytes;
  int nexti;                 /* the index of the next domain alphabetically */
  struct domain *next;       /* the next subdomain of the current domain */
};

struct alias {      /* aliases from the configuration file */
  char from[MAXSTRINGLENGTH];
  char to[MAXSTRINGLENGTH];
  struct alias *next;
};

struct include {   /* a list of included/excluded things */
  char name[MAXSTRINGLENGTH];
  int in;           /* TRUE, FALSE or UNSET */
  struct include *next;
};

struct loglist {   /* a list of logfiles */
  char name[MAXSTRINGLENGTH];
  char prefix[MAXSTRINGLENGTH];
  struct loglist *next;
};

struct stringlist {   /* a simple list of strings */
  char name[MAXSTRINGLENGTH];
  struct stringlist *next;
};

#endif  /* not previously included */

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.