mail/gprof/tip: tap with the ugly stick

The ugly stick here is this bit in the respective headers:

#ifndef EXTERN
#define EXTERN extern
#endif

with a follow-up #define EXTERN in a single .c file to push all of their
definitions into one spot. A pass should be made over these three later to
push these definitions into the correct files instead, but this will suffice
for now and at a more leisurely pace.

MFC after:	3 days
This commit is contained in:
Kyle Evans 2020-04-06 23:28:24 +00:00
parent 76fd19b0a2
commit a86ddfe8c7
7 changed files with 199 additions and 141 deletions

View File

@ -49,6 +49,7 @@ __FBSDID("$FreeBSD$");
#include <stdint.h> #include <stdint.h>
#include <string.h> #include <string.h>
#define EXTERN
#include "gprof.h" #include "gprof.h"
static int valcmp(const void *, const void *); static int valcmp(const void *, const void *);

View File

@ -75,18 +75,22 @@ typedef int bool;
*/ */
#define HISTORICAL_SCALE_2 2 #define HISTORICAL_SCALE_2 2
#ifndef EXTERN
#define EXTERN extern
#endif
/* /*
* ticks per second * ticks per second
*/ */
long hz; EXTERN long hz;
size_t histcounter_size; EXTERN size_t histcounter_size;
int histcounter_type; EXTERN int histcounter_type;
char *a_outname; EXTERN char *a_outname;
#define A_OUTNAME "a.out" #define A_OUTNAME "a.out"
char *gmonname; EXTERN char *gmonname;
#define GMONSUM "gmon.sum" #define GMONSUM "gmon.sum"
/* /*
@ -146,9 +150,9 @@ struct nl {
}; };
typedef struct nl nltype; typedef struct nl nltype;
nltype *nl; /* the whole namelist */ EXTERN nltype *nl; /* the whole namelist */
nltype *npe; /* the virtual end of the namelist */ EXTERN nltype *npe; /* the virtual end of the namelist */
int nname; /* the number of function names */ EXTERN int nname; /* the number of function names */
#define HASCYCLEXIT 0x08 /* node has arc exiting from cycle */ #define HASCYCLEXIT 0x08 /* node has arc exiting from cycle */
#define CYCLEHEAD 0x10 /* node marked as head of a cycle */ #define CYCLEHEAD 0x10 /* node marked as head of a cycle */
@ -167,9 +171,9 @@ struct cl {
}; };
typedef struct cl cltype; typedef struct cl cltype;
arctype *archead; /* the head of arcs in current cycle list */ EXTERN arctype *archead; /* the head of arcs in current cycle list */
cltype *cyclehead; /* the head of the list */ EXTERN cltype *cyclehead; /* the head of the list */
int cyclecnt; /* the number of cycles found */ EXTERN int cyclecnt; /* the number of cycles found */
#define CYCLEMAX 100 /* maximum cycles before cutting one of them */ #define CYCLEMAX 100 /* maximum cycles before cutting one of them */
/* /*
@ -183,8 +187,8 @@ int cyclecnt; /* the number of cycles found */
* namelist entries for cycle headers. * namelist entries for cycle headers.
* the number of discovered cycles. * the number of discovered cycles.
*/ */
nltype *cyclenl; /* cycle header namelist */ EXTERN nltype *cyclenl; /* cycle header namelist */
int ncycle; /* number of cycles discovered */ EXTERN int ncycle; /* number of cycles discovered */
/* /*
* The header on the gmon.out file. * The header on the gmon.out file.
@ -200,43 +204,46 @@ struct ophdr {
int ncnt; int ncnt;
}; };
int debug; EXTERN int debug;
/* /*
* Each discretized pc sample has * Each discretized pc sample has
* a count of the number of samples in its range * a count of the number of samples in its range
*/ */
double *samples; EXTERN double *samples;
unsigned long s_lowpc; /* lowpc from the profile file */ EXTERN unsigned long s_lowpc; /* lowpc from the profile file */
unsigned long s_highpc; /* highpc from the profile file */ EXTERN unsigned long s_highpc; /* highpc from the profile file */
unsigned long lowpc, highpc; /* range profiled, in historical units */ /* range profiled, in historical units */
unsigned sampbytes; /* number of bytes of samples */ EXTERN unsigned long lowpc, highpc;
int nsamples; /* number of samples */ EXTERN unsigned sampbytes; /* number of bytes of samples */
double actime; /* accumulated time thus far for putprofline */ EXTERN int nsamples; /* number of samples */
double totime; /* total time for all routines */ /* accumulated time thus far for putprofline */
double printtime; /* total of time being printed */ EXTERN double actime;
double scale; /* scale factor converting samples to pc EXTERN double totime; /* total time for all routines */
EXTERN double printtime; /* total of time being printed */
EXTERN double scale; /* scale factor converting samples to pc
values: each sample covers scale bytes */ values: each sample covers scale bytes */
unsigned char *textspace; /* text space of a.out in core */ EXTERN unsigned char *textspace; /* text space of a.out in core */
int cyclethreshold; /* with -C, minimum cycle size to ignore */ /* with -C, minimum cycle size to ignore */
EXTERN int cyclethreshold;
/* /*
* option flags, from a to z. * option flags, from a to z.
*/ */
bool aflag; /* suppress static functions */ EXTERN bool aflag; /* suppress static functions */
bool bflag; /* blurbs, too */ EXTERN bool bflag; /* blurbs, too */
bool Cflag; /* find cut-set to eliminate cycles */ EXTERN bool Cflag; /* find cut-set to eliminate cycles */
bool dflag; /* debugging options */ EXTERN bool dflag; /* debugging options */
bool eflag; /* specific functions excluded */ EXTERN bool eflag; /* specific functions excluded */
bool Eflag; /* functions excluded with time */ EXTERN bool Eflag; /* functions excluded with time */
bool fflag; /* specific functions requested */ EXTERN bool fflag; /* specific functions requested */
bool Fflag; /* functions requested with time */ EXTERN bool Fflag; /* functions requested with time */
bool kflag; /* arcs to be deleted */ EXTERN bool kflag; /* arcs to be deleted */
bool Kflag; /* use the running kernel for symbols */ EXTERN bool Kflag; /* use the running kernel for symbols */
bool sflag; /* sum multiple gmon.out files */ EXTERN bool sflag; /* sum multiple gmon.out files */
bool uflag; /* suppress symbols hidden from C */ EXTERN bool uflag; /* suppress symbols hidden from C */
bool zflag; /* zero time/called functions, too */ EXTERN bool zflag; /* zero time/called functions, too */
/* /*
* structure for various string lists * structure for various string lists
@ -245,12 +252,12 @@ struct stringlist {
struct stringlist *next; struct stringlist *next;
char *string; char *string;
}; };
struct stringlist *elist; extern struct stringlist *elist;
struct stringlist *Elist; extern struct stringlist *Elist;
struct stringlist *flist; extern struct stringlist *flist;
struct stringlist *Flist; extern struct stringlist *Flist;
struct stringlist *kfromlist; extern struct stringlist *kfromlist;
struct stringlist *ktolist; extern struct stringlist *ktolist;
/* /*
* function declarations * function declarations

View File

@ -38,51 +38,51 @@
* def.h must be included first. * def.h must be included first.
*/ */
int msgCount; /* Count of messages read in */ extern int msgCount; /* Count of messages read in */
int rcvmode; /* True if receiving mail */ extern int rcvmode; /* True if receiving mail */
int sawcom; /* Set after first command */ extern int sawcom; /* Set after first command */
char *Tflag; /* -T temp file for netnews */ extern char *Tflag; /* -T temp file for netnews */
int senderr; /* An error while checking */ extern int senderr; /* An error while checking */
int edit; /* Indicates editing a file */ extern int edit; /* Indicates editing a file */
int readonly; /* Will be unable to rewrite file */ extern int readonly; /* Will be unable to rewrite file */
int noreset; /* String resets suspended */ extern int noreset; /* String resets suspended */
int sourcing; /* Currently reading variant file */ extern int sourcing; /* Currently reading variant file */
int loading; /* Loading user definitions */ extern int loading; /* Loading user definitions */
int cond; /* Current state of conditional exc. */ extern int cond; /* Current state of conditional exc. */
FILE *itf; /* Input temp file buffer */ extern FILE *itf; /* Input temp file buffer */
FILE *otf; /* Output temp file buffer */ extern FILE *otf; /* Output temp file buffer */
int image; /* File descriptor for image of msg */ extern int image; /* File descriptor for image of msg */
FILE *input; /* Current command input file */ extern FILE *input; /* Current command input file */
char mailname[PATHSIZE]; /* Name of current file */ extern char mailname[PATHSIZE]; /* Name of current file */
char prevfile[PATHSIZE]; /* Name of previous file */ extern char prevfile[PATHSIZE]; /* Name of previous file */
char *homedir; /* Path name of home directory */ extern char *homedir; /* Path name of home directory */
char *myname; /* My login name */ extern char *myname; /* My login name */
off_t mailsize; /* Size of system mailbox */ extern off_t mailsize; /* Size of system mailbox */
int lexnumber; /* Number of TNUMBER from scan() */ extern int lexnumber; /* Number of TNUMBER from scan() */
char lexstring[STRINGLEN]; /* String from TSTRING, scan() */ extern char lexstring[STRINGLEN]; /* String from TSTRING, scan() */
int regretp; /* Pointer to TOS of regret tokens */ extern int regretp; /* Pointer to TOS of regret tokens */
int regretstack[REGDEP]; /* Stack of regretted tokens */ extern int regretstack[REGDEP]; /* Stack of regretted tokens */
char *string_stack[REGDEP]; /* Stack of regretted strings */ extern char *string_stack[REGDEP]; /* Stack of regretted strings */
int numberstack[REGDEP]; /* Stack of regretted numbers */ extern int numberstack[REGDEP]; /* Stack of regretted numbers */
struct message *dot; /* Pointer to current message */ extern struct message *dot; /* Pointer to current message */
struct message *message; /* The actual message structure */ extern struct message *message; /* The actual message structure */
struct var *variables[HSHSIZE]; /* Pointer to active var list */ extern struct var *variables[HSHSIZE]; /* Pointer to active var list */
struct grouphead *groups[HSHSIZE];/* Pointer to active groups */ extern struct grouphead *groups[HSHSIZE];/* Pointer to active groups */
struct ignoretab ignore[2]; /* ignored and retained fields extern struct ignoretab ignore[2]; /* ignored and retained fields
0 is ignore, 1 is retain */ 0 is ignore, 1 is retain */
struct ignoretab saveignore[2]; /* ignored and retained fields extern struct ignoretab saveignore[2]; /* ignored and retained fields
on save to folder */ on save to folder */
struct ignoretab ignoreall[2]; /* special, ignore all headers */ extern struct ignoretab ignoreall[2]; /* special, ignore all headers */
char **altnames; /* List of alternate names for user */ extern char **altnames; /* List of alternate names for user */
int debug; /* Debug flag set */ extern int debug; /* Debug flag set */
int screenwidth; /* Screen width, or best guess */ extern int screenwidth; /* Screen width, or best guess */
int screenheight; /* Screen height, or best guess, extern int screenheight; /* Screen height, or best guess,
for "header" command */ for "header" command */
int realscreenheight; /* the real screen height */ extern int realscreenheight; /* the real screen height */
#include <setjmp.h> #include <setjmp.h>
jmp_buf srbuf; extern jmp_buf srbuf;
/* /*
@ -93,7 +93,7 @@ jmp_buf srbuf;
*/ */
#define NSPACE 25 /* Total number of string spaces */ #define NSPACE 25 /* Total number of string spaces */
struct strings { extern struct strings {
char *s_topFree; /* Beginning of this area */ char *s_topFree; /* Beginning of this area */
char *s_nextFree; /* Next alloctable place here */ char *s_nextFree; /* Next alloctable place here */
unsigned s_nleft; /* Number of bytes left here */ unsigned s_nleft; /* Number of bytes left here */

View File

@ -52,6 +52,49 @@ __FBSDID("$FreeBSD$");
* *
* Startup -- interface with user. * Startup -- interface with user.
*/ */
int msgCount;
int rcvmode;
int sawcom;
char *Tflag;
int senderr;
int edit;
int readonly;
int noreset;
int sourcing;
int loading;
int cond;
FILE *itf;
FILE *otf;
int image;
FILE *input;
char mailname[PATHSIZE];
char prevfile[PATHSIZE];
char *homedir;
char *myname;
off_t mailsize;
int lexnumber;
char lexstring[STRINGLEN];
int regretp;
int regretstack[REGDEP];
char *string_stack[REGDEP];
int numberstack[REGDEP];
struct message *dot;
struct message *message;
struct var *variables[HSHSIZE];
struct grouphead *groups[HSHSIZE];
struct ignoretab ignore[2];
struct ignoretab saveignore[2];
struct ignoretab ignoreall[2];
char **altnames;
int debug;
int screenwidth;
int screenheight;
int realscreenheight;
jmp_buf srbuf;
static jmp_buf hdrjmp; static jmp_buf hdrjmp;

View File

@ -48,6 +48,8 @@ __FBSDID("$FreeBSD$");
#include "rcv.h" #include "rcv.h"
#include "extern.h" #include "extern.h"
struct strings stringdope[NSPACE];
/* /*
* Allocate size more bytes of space and return the address of the * Allocate size more bytes of space and return the address of the
* first byte to the caller. An even number of bytes are always * first byte to the caller. An even number of bytes are always

View File

@ -54,6 +54,7 @@ static const char rcsid[] = "$OpenBSD: tip.c,v 1.30 2006/08/18 03:06:18 jason Ex
* or * or
* cu phone-number [-s speed] [-l line] [-a acu] * cu phone-number [-s speed] [-l line] [-a acu]
*/ */
#define EXTERN
#include "tip.h" #include "tip.h"
#include "pathnames.h" #include "pathnames.h"

View File

@ -58,40 +58,44 @@
#include <errno.h> #include <errno.h>
#include <limits.h> #include <limits.h>
#ifndef EXTERN
#define EXTERN extern
#endif
/* /*
* Remote host attributes * Remote host attributes
*/ */
char *DV; /* UNIX device(s) to open */ EXTERN char *DV; /* UNIX device(s) to open */
char *EL; /* chars marking an EOL */ EXTERN char *EL; /* chars marking an EOL */
char *CM; /* initial connection message */ EXTERN char *CM; /* initial connection message */
char *IE; /* EOT to expect on input */ EXTERN char *IE; /* EOT to expect on input */
char *OE; /* EOT to send to complete FT */ EXTERN char *OE; /* EOT to send to complete FT */
char *CU; /* call unit if making a phone call */ EXTERN char *CU; /* call unit if making a phone call */
char *AT; /* acu type */ EXTERN char *AT; /* acu type */
char *PN; /* phone number(s) */ EXTERN char *PN; /* phone number(s) */
char *DI; /* disconnect string */ EXTERN char *DI; /* disconnect string */
char *PA; /* parity to be generated */ EXTERN char *PA; /* parity to be generated */
char *PH; /* phone number file */ EXTERN char *PH; /* phone number file */
char *RM; /* remote file name */ EXTERN char *RM; /* remote file name */
char *HO; /* host name */ EXTERN char *HO; /* host name */
long BR; /* line speed for conversation */ EXTERN long BR; /* line speed for conversation */
long FS; /* frame size for transfers */ EXTERN long FS; /* frame size for transfers */
short DU; /* this host is dialed up */ EXTERN short DU; /* this host is dialed up */
short HW; /* this device is hardwired, see hunt.c */ EXTERN short HW; /* this device is hardwired, see hunt.c */
char *ES; /* escape character */ EXTERN char *ES; /* escape character */
char *EX; /* exceptions */ EXTERN char *EX; /* exceptions */
char *FO; /* force (literal next) char*/ EXTERN char *FO; /* force (literal next) char*/
char *RC; /* raise character */ EXTERN char *RC; /* raise character */
char *RE; /* script record file */ EXTERN char *RE; /* script record file */
char *PR; /* remote prompt */ EXTERN char *PR; /* remote prompt */
long DL; /* line delay for file transfers to remote */ EXTERN long DL; /* line delay for file transfers to remote */
long CL; /* char delay for file transfers to remote */ EXTERN long CL; /* char delay for file transfers to remote */
long ET; /* echocheck timeout */ EXTERN long ET; /* echocheck timeout */
long LD; /* line disc */ EXTERN long LD; /* line disc */
short HD; /* this host is half duplex - do local echo */ EXTERN short HD; /* this host is half duplex - do local echo */
/* /*
* String value table * String value table
@ -237,39 +241,39 @@ extern value_t vtable[]; /* variable table */
#define NOFILE ((FILE *)NULL) #define NOFILE ((FILE *)NULL)
#define NOPWD ((struct passwd *)0) #define NOPWD ((struct passwd *)0)
struct termios term; /* current mode of terminal */ EXTERN struct termios term; /* current mode of terminal */
struct termios defterm; /* initial mode of terminal */ EXTERN struct termios defterm; /* initial mode of terminal */
struct termios defchars; /* current mode with initial chars */ EXTERN struct termios defchars; /* current mode with initial chars */
int gotdefterm; EXTERN int gotdefterm;
FILE *fscript; /* FILE for scripting */ EXTERN FILE *fscript; /* FILE for scripting */
int fildes[2]; /* file transfer synchronization channel */ EXTERN int fildes[2]; /* file transfer synchronization channel */
int repdes[2]; /* read process sychronization channel */ EXTERN int repdes[2]; /* read process sychronization channel */
int FD; /* open file descriptor to remote host */ EXTERN int FD; /* open file descriptor to remote host */
int AC; /* open file descriptor to dialer (v831 only) */ EXTERN int AC; /* open file descriptor to dialer (v831 only) */
int vflag; /* print .tiprc initialization sequence */ EXTERN int vflag; /* print .tiprc initialization sequence */
int noesc; /* no `~' escape char */ EXTERN int noesc; /* no `~' escape char */
int sfd; /* for ~< operation */ EXTERN int sfd; /* for ~< operation */
pid_t tipin_pid; /* pid of tipin */ EXTERN pid_t tipin_pid; /* pid of tipin */
pid_t tipout_pid; /* pid of tipout */ EXTERN pid_t tipout_pid; /* pid of tipout */
uid_t uid, euid; /* real and effective user id's */ EXTERN uid_t uid, euid; /* real and effective user id's */
gid_t gid, egid; /* real and effective group id's */ EXTERN gid_t gid, egid; /* real and effective group id's */
int stop; /* stop transfer session flag */ EXTERN int stop; /* stop transfer session flag */
int quit; /* same; but on other end */ EXTERN int quit; /* same; but on other end */
int intflag; /* recognized interrupt */ EXTERN int intflag; /* recognized interrupt */
int stoprompt; /* for interrupting a prompt session */ EXTERN int stoprompt; /* for interrupting a prompt session */
int timedout; /* ~> transfer timedout */ EXTERN int timedout; /* ~> transfer timedout */
int cumode; /* simulating the "cu" program */ EXTERN int cumode; /* simulating the "cu" program */
int bits8; /* terminal is 8-bit mode */ EXTERN int bits8; /* terminal is 8-bit mode */
#define STRIP_PAR (bits8 ? 0377 : 0177) #define STRIP_PAR (bits8 ? 0377 : 0177)
char fname[PATH_MAX]; /* file name buffer for ~< */ EXTERN char fname[PATH_MAX]; /* file name buffer for ~< */
char copyname[PATH_MAX]; /* file name buffer for ~> */ EXTERN char copyname[PATH_MAX]; /* file name buffer for ~> */
char ccc; /* synchronization character */ EXTERN char ccc; /* synchronization character */
char *uucplock; /* name of lock file for uucp's */ EXTERN char *uucplock; /* name of lock file for uucp's */
int odisc; /* initial tty line discipline */ EXTERN int odisc; /* initial tty line discipline */
extern int disc; /* current tty discpline */ extern int disc; /* current tty discpline */
extern char *__progname; /* program name */ extern char *__progname; /* program name */