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.