Silence top(1) compiler warnings

The contrib/top code is no longer maintained upstream (last pulled 16 years
ago). The K&R-style followed by the code spews -Wimplicit-int and -Wreturn-type
warnings, amongst others. This silences 131 warnings with as little modification
as possible by adding necessary return types, definitions, headers, and header
guards, and missing header includes.

The 5 warnings that remain are due to undeclared ncurses references. I didn't
include curses.h and term.h because there are several local functions and macros
that conflict with those definitions.

MFC after: 3 weeks
Reviewed by: cem, ngie
Submitted by: Randy Westlund <rwestlun@gmail.com>
Differential Revision: https://reviews.freebsd.org/D6468
This commit is contained in:
ngie 2016-05-22 04:17:00 +00:00
parent 4a090513b1
commit 0378533250
13 changed files with 207 additions and 54 deletions

View File

@ -19,16 +19,21 @@
*/ */
#include "os.h" #include "os.h"
#include <ctype.h>
#include <signal.h>
#include <errno.h>
#include <sys/time.h> #include <sys/time.h>
#include <sys/resource.h> #include <sys/resource.h>
#include <ctype.h>
#include <errno.h>
#include <signal.h>
#include <unistd.h>
#include "commands.h"
#include "sigdesc.h" /* generated automatically */ #include "sigdesc.h" /* generated automatically */
#include "top.h" #include "top.h"
#include "boolean.h" #include "boolean.h"
#include "utils.h" #include "utils.h"
#include "machine.h"
extern int errno; extern int errno;
@ -39,12 +44,15 @@ extern int overstrike;
int err_compar(); int err_compar();
char *err_string(); char *err_string();
static int str_adderr(char *str, int len, int err);
static int str_addarg(char *str, int len, char *arg, int first);
/* /*
* show_help() - display the help screen; invoked in response to * show_help() - display the help screen; invoked in response to
* either 'h' or '?'. * either 'h' or '?'.
*/ */
void
show_help() show_help()
{ {
@ -123,6 +131,7 @@ register char *str;
return(*str == '\0' ? NULL : str); return(*str == '\0' ? NULL : str);
} }
int
scanint(str, intp) scanint(str, intp)
char *str; char *str;
@ -262,6 +271,7 @@ char *err_string()
* the string "str". * the string "str".
*/ */
static int
str_adderr(str, len, err) str_adderr(str, len, err)
char *str; char *str;
@ -289,6 +299,7 @@ int err;
* is set (indicating that a comma should NOT be added to the front). * is set (indicating that a comma should NOT be added to the front).
*/ */
static int
str_addarg(str, len, arg, first) str_addarg(str, len, arg, first)
char *str; char *str;
@ -321,6 +332,7 @@ int first;
* for sorting errors. * for sorting errors.
*/ */
int
err_compar(p1, p2) err_compar(p1, p2)
register struct errs *p1, *p2; register struct errs *p1, *p2;
@ -339,6 +351,7 @@ register struct errs *p1, *p2;
* error_count() - return the number of errors currently logged. * error_count() - return the number of errors currently logged.
*/ */
int
error_count() error_count()
{ {
@ -349,6 +362,7 @@ error_count()
* show_errors() - display on stdout the current log of errors. * show_errors() - display on stdout the current log of errors.
*/ */
void
show_errors() show_errors()
{ {

21
contrib/top/commands.h Normal file
View File

@ -0,0 +1,21 @@
/*
* Top users/processes display for Unix
* Version 3
*
* This program may be freely redistributed,
* but this entire comment MUST remain intact.
*
* Copyright (c) 1984, 1989, William LeFebvre, Rice University
* Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University
* Copyright (c) 2016, Randy Westlund
*
* $FreeBSD$
*/
#ifndef COMMANDS_H
#define COMMANDS_H
void show_errors(void);
int error_count(void);
void show_help(void);
#endif /* COMMANDS_H */

View File

@ -29,9 +29,12 @@
*/ */
#include "os.h" #include "os.h"
#include <sys/time.h>
#include <ctype.h> #include <ctype.h>
#include <time.h> #include <time.h>
#include <sys/time.h> #include <unistd.h>
#include "screen.h" /* interface to screen package */ #include "screen.h" /* interface to screen package */
#include "layout.h" /* defines for screen position layout */ #include "layout.h" /* defines for screen position layout */
@ -56,7 +59,6 @@ static int display_width = MAX_COLS;
#define lineindex(l) ((l)*display_width) #define lineindex(l) ((l)*display_width)
char *printable();
/* things initialized by display_init and used thruout */ /* things initialized by display_init and used thruout */
@ -239,6 +241,7 @@ struct statics *statics;
return(lines); return(lines);
} }
void
i_loadave(mpid, avenrun) i_loadave(mpid, avenrun)
int mpid; int mpid;
@ -267,6 +270,7 @@ double *avenrun;
lmpid = mpid; lmpid = mpid;
} }
void
u_loadave(mpid, avenrun) u_loadave(mpid, avenrun)
int mpid; int mpid;
@ -306,6 +310,7 @@ double *avenrun;
} }
} }
void
i_timeofday(tod) i_timeofday(tod)
time_t *tod; time_t *tod;
@ -351,6 +356,7 @@ static char procstates_buffer[MAX_COLS];
* lastline is valid * lastline is valid
*/ */
void
i_procstates(total, brkdn) i_procstates(total, brkdn)
int total; int total;
@ -378,6 +384,7 @@ int *brkdn;
memcpy(lprocstates, brkdn, num_procstates * sizeof(int)); memcpy(lprocstates, brkdn, num_procstates * sizeof(int));
} }
void
u_procstates(total, brkdn) u_procstates(total, brkdn)
int total; int total;
@ -460,9 +467,10 @@ char *cpustates_tag()
} }
#endif #endif
void
i_cpustates(states) i_cpustates(states)
register int *states; int *states;
{ {
register int i = 0; register int i = 0;
@ -505,9 +513,10 @@ for (cpu = 0; cpu < num_cpus; cpu++) {
memcpy(lcpustates, states, num_cpustates * sizeof(int) * num_cpus); memcpy(lcpustates, states, num_cpustates * sizeof(int) * num_cpus);
} }
void
u_cpustates(states) u_cpustates(states)
register int *states; int *states;
{ {
register int value; register int value;
@ -557,6 +566,7 @@ for (cpu = 0; cpu < num_cpus; cpu++) {
} }
} }
void
z_cpustates() z_cpustates()
{ {
@ -606,6 +616,7 @@ for (cpu = 0; cpu < num_cpus; cpu++) {
char memory_buffer[MAX_COLS]; char memory_buffer[MAX_COLS];
void
i_memory(stats) i_memory(stats)
int *stats; int *stats;
@ -619,6 +630,7 @@ int *stats;
fputs(memory_buffer, stdout); fputs(memory_buffer, stdout);
} }
void
u_memory(stats) u_memory(stats)
int *stats; int *stats;
@ -639,13 +651,14 @@ int *stats;
*/ */
char arc_buffer[MAX_COLS]; char arc_buffer[MAX_COLS];
void
i_arc(stats) i_arc(stats)
int *stats; int *stats;
{ {
if (arc_names == NULL) if (arc_names == NULL)
return (0); return;
fputs("\nARC: ", stdout); fputs("\nARC: ", stdout);
lastline++; lastline++;
@ -655,6 +668,7 @@ int *stats;
fputs(arc_buffer, stdout); fputs(arc_buffer, stdout);
} }
void
u_arc(stats) u_arc(stats)
int *stats; int *stats;
@ -663,7 +677,7 @@ int *stats;
static char new[MAX_COLS]; static char new[MAX_COLS];
if (arc_names == NULL) if (arc_names == NULL)
return (0); return;
/* format the new line */ /* format the new line */
summary_format(new, stats, arc_names); summary_format(new, stats, arc_names);
@ -680,6 +694,7 @@ int *stats;
char swap_buffer[MAX_COLS]; char swap_buffer[MAX_COLS];
void
i_swap(stats) i_swap(stats)
int *stats; int *stats;
@ -693,6 +708,7 @@ int *stats;
fputs(swap_buffer, stdout); fputs(swap_buffer, stdout);
} }
void
u_swap(stats) u_swap(stats)
int *stats; int *stats;
@ -724,6 +740,7 @@ static int msglen = 0;
/* Invariant: msglen is always the length of the message currently displayed /* Invariant: msglen is always the length of the message currently displayed
on the screen (even when next_msg doesn't contain that message). */ on the screen (even when next_msg doesn't contain that message). */
void
i_message() i_message()
{ {
@ -745,6 +762,7 @@ i_message()
} }
} }
void
u_message() u_message()
{ {
@ -786,6 +804,7 @@ char *text;
* Assumptions: cursor is on the previous line and lastline is consistent * Assumptions: cursor is on the previous line and lastline is consistent
*/ */
void
i_header(text) i_header(text)
char *text; char *text;
@ -811,9 +830,10 @@ char *text;
} }
/*ARGSUSED*/ /*ARGSUSED*/
void
u_header(text) u_header(text)
char *text; /* ignored */ char *text __unused; /* ignored */
{ {
@ -832,6 +852,7 @@ char *text; /* ignored */
* Assumptions: lastline is consistent * Assumptions: lastline is consistent
*/ */
void
i_process(line, thisline) i_process(line, thisline)
int line; int line;
@ -862,6 +883,7 @@ char *thisline;
memzero(p, display_width - (p - base)); memzero(p, display_width - (p - base));
} }
void
u_process(line, newline) u_process(line, newline)
int line; int line;
@ -909,9 +931,10 @@ char *newline;
} }
} }
void
u_endscreen(hi) u_endscreen(hi)
register int hi; int hi;
{ {
register int screen_line = hi + Header_lines; register int screen_line = hi + Header_lines;
@ -969,6 +992,7 @@ register int hi;
} }
} }
void
display_header(t) display_header(t)
int t; int t;
@ -985,6 +1009,7 @@ int t;
} }
/*VARARGS2*/ /*VARARGS2*/
void
new_message(type, msgfmt, a1, a2, a3) new_message(type, msgfmt, a1, a2, a3)
int type; int type;
@ -1025,6 +1050,7 @@ caddr_t a1, a2, a3;
} }
} }
void
clear_message() clear_message()
{ {
@ -1034,6 +1060,7 @@ clear_message()
} }
} }
int
readline(buffer, size, numeric) readline(buffer, size, numeric)
char *buffer; char *buffer;
@ -1336,6 +1363,7 @@ char *str;
return(str); return(str);
} }
void
i_uptime(bt, tod) i_uptime(bt, tod)
struct timeval* bt; struct timeval* bt;

View File

@ -5,3 +5,37 @@
#define MT_standout 1 #define MT_standout 1
#define MT_delayed 2 #define MT_delayed 2
#include "machine.h"
int display_updatecpus(struct statics *statics);
void clear_message(void);
int display_resize(void);
void i_header(char *text);
char *printable(char *string);
char *cpustates_tag(void);
void display_header(int t);
int display_init(struct statics *statics);
void i_arc(int *stats);
void i_cpustates(int *states);
void i_loadave(int mpid, double *avenrun);
void i_memory(int *stats);
void i_message(void);
void i_process(int line, char *thisline);
void i_procstates(int total, int *brkdn);
void i_swap(int *stats);
void i_timeofday(time_t *tod);
void i_uptime(struct timeval *bt, time_t *tod);
void new_message();
int readline(char *buffer, int size, int numeric);
char *trim_header(char *text);
void u_arc(int *stats);
void u_cpustates(int *states);
void u_endscreen(int hi);
void u_header(char *text);
void u_loadave(int mpid, double *avenrun);
void u_memory(int *stats);
void u_message(void);
void u_process(int line, char *newline);
void u_procstates(int total, int *brkdn);
void u_swap(int *stats);
void z_cpustates(void);

View File

@ -7,6 +7,10 @@
* module. It is NOT machine dependent and should not need to be changed * module. It is NOT machine dependent and should not need to be changed
* for any specific machine. * for any specific machine.
*/ */
#ifndef MACHINE_H
#define MACHINE_H
#include "top.h"
/* /*
* the statics struct is filled in by machine_init * the statics struct is filled in by machine_init
@ -74,8 +78,14 @@ struct process_select
/* routines defined by the machine dependent module */ /* routines defined by the machine dependent module */
char *format_header(); char *format_header();
char *format_next_process(); char *format_next_process();
void toggle_pcpustats(void);
void get_system_info(struct system_info *si);
int machine_init(struct statics *statics, char do_unames);
int proc_owner(int pid);
/* non-int routines typically used by the machine dependent module */ /* non-int routines typically used by the machine dependent module */
char *printable(); char *printable();
#endif /* MACHINE_H */

View File

@ -50,7 +50,6 @@
extern char *myname; extern char *myname;
int putstdout();
int overstrike; int overstrike;
int screen_length; int screen_length;
@ -236,6 +235,7 @@ int interactive;
#endif #endif
} }
void
init_screen() init_screen()
{ {
@ -326,6 +326,7 @@ init_screen()
} }
} }
void
end_screen() end_screen()
{ {
@ -356,6 +357,7 @@ end_screen()
} }
} }
void
reinit_screen() reinit_screen()
{ {
@ -383,6 +385,7 @@ reinit_screen()
} }
} }
void
get_screensize() get_screensize()
{ {
@ -428,6 +431,7 @@ get_screensize()
lower_left[sizeof(lower_left) - 1] = '\0'; lower_left[sizeof(lower_left) - 1] = '\0';
} }
void
standout(msg) standout(msg)
char *msg; char *msg;
@ -445,6 +449,7 @@ char *msg;
} }
} }
void
clear() clear()
{ {
@ -454,6 +459,7 @@ clear()
} }
} }
int
clear_eol(len) clear_eol(len)
int len; int len;
@ -478,6 +484,7 @@ int len;
return(-1); return(-1);
} }
void
go_home() go_home()
{ {
@ -489,6 +496,7 @@ go_home()
/* This has to be defined as a subroutine for tputs (instead of a macro) */ /* This has to be defined as a subroutine for tputs (instead of a macro) */
void
putstdout(ch) putstdout(ch)
char ch; char ch;

View File

@ -28,4 +28,14 @@ extern int screen_length;
extern int screen_width; extern int screen_width;
/* a function that puts a single character on stdout */ /* a function that puts a single character on stdout */
int putstdout(); void putstdout(char ch);
int clear_eol(int len);
void standout(char *msg);
void clear(void);
void go_home(void);
void reinit_screen(void);
void get_screensize(void);
void init_termcap(int interactive);
void end_screen(void);
void init_screen(void);

View File

@ -34,15 +34,19 @@ char *copyright =
*/ */
#include "os.h" #include "os.h"
#include <errno.h>
#include <signal.h>
#include <setjmp.h>
#include <ctype.h>
#include <sys/jail.h> #include <sys/jail.h>
#include <sys/time.h> #include <sys/time.h>
#include <ctype.h>
#include <errno.h>
#include <jail.h> #include <jail.h>
#include <setjmp.h>
#include <signal.h>
#include <unistd.h>
/* includes specific to top */ /* includes specific to top */
#include "commands.h"
#include "display.h" /* interface to display package */ #include "display.h" /* interface to display package */
#include "screen.h" /* interface to screen package */ #include "screen.h" /* interface to screen package */
#include "top.h" #include "top.h"
@ -50,6 +54,7 @@ char *copyright =
#include "boolean.h" #include "boolean.h"
#include "machine.h" #include "machine.h"
#include "utils.h" #include "utils.h"
#include "username.h"
/* Size of the stdio buffer given to stdout */ /* Size of the stdio buffer given to stdout */
#define Buffersize 2048 #define Buffersize 2048
@ -114,38 +119,21 @@ caddr_t get_process_info();
char *username(); char *username();
char *itoa7(); char *itoa7();
/* display routines that need to be predeclared */
int i_loadave();
int u_loadave();
int i_procstates();
int u_procstates();
int i_cpustates();
int u_cpustates();
int i_memory();
int u_memory();
int i_arc();
int u_arc();
int i_swap();
int u_swap();
int i_message();
int u_message();
int i_header();
int u_header();
int i_process();
int u_process();
/* pointers to display routines */ /* pointers to display routines */
int (*d_loadave)() = i_loadave; void (*d_loadave)() = i_loadave;
int (*d_procstates)() = i_procstates; void (*d_procstates)() = i_procstates;
int (*d_cpustates)() = i_cpustates; void (*d_cpustates)() = i_cpustates;
int (*d_memory)() = i_memory; void (*d_memory)() = i_memory;
int (*d_arc)() = i_arc; void (*d_arc)() = i_arc;
int (*d_swap)() = i_swap; void (*d_swap)() = i_swap;
int (*d_message)() = i_message; void (*d_message)() = i_message;
int (*d_header)() = i_header; void (*d_header)() = i_header;
int (*d_process)() = i_process; void (*d_process)() = i_process;
void reset_display(void);
int
main(argc, argv) main(argc, argv)
int argc; int argc;
@ -1178,6 +1166,7 @@ char *argv[];
* screen will get redrawn. * screen will get redrawn.
*/ */
void
reset_display() reset_display()
{ {

View File

@ -7,6 +7,9 @@
* General (global) definitions * General (global) definitions
*/ */
#ifndef TOP_H
#define TOP_H
/* Current major version number */ /* Current major version number */
#define VERSION 3 #define VERSION 3
@ -47,3 +50,5 @@ enum displaymodes { DISP_CPU = 0, DISP_IO, DISP_MAX };
extern enum displaymodes displaymode; extern enum displaymodes displaymode;
extern int pcpu_stats; extern int pcpu_stats;
#endif /* TOP_H */

View File

@ -32,11 +32,15 @@
#include <sys/param.h> #include <sys/param.h>
#include <sys/types.h> #include <sys/types.h>
#include <stdio.h>
#include <pwd.h> #include <pwd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "top.local.h" #include "top.local.h"
#include "utils.h" #include "utils.h"
#include "username.h"
struct hash_el { struct hash_el {
int uid; int uid;
@ -55,6 +59,8 @@ struct hash_el {
/* We depend on that for hash_table and YOUR compiler had BETTER do it! */ /* We depend on that for hash_table and YOUR compiler had BETTER do it! */
struct hash_el hash_table[Table_size]; struct hash_el hash_table[Table_size];
void
init_hash() init_hash()
{ {
@ -67,7 +73,7 @@ init_hash()
char *username(uid) char *username(uid)
register int uid; int uid;
{ {
register int hashindex; register int hashindex;
@ -106,8 +112,8 @@ char *username;
int enter_user(uid, name, wecare) int enter_user(uid, name, wecare)
register int uid; int uid;
register char *name; char *name;
int wecare; /* 1 = enter it always, 0 = nice to have */ int wecare; /* 1 = enter it always, 0 = nice to have */
{ {
@ -142,7 +148,7 @@ int wecare; /* 1 = enter it always, 0 = nice to have */
int get_user(uid) int get_user(uid)
register int uid; int uid;
{ {
struct passwd *pwd; struct passwd *pwd;

23
contrib/top/username.h Normal file
View File

@ -0,0 +1,23 @@
/*
* Top users/processes display for Unix
* Version 3
*
* This program may be freely redistributed,
* but this entire comment MUST remain intact.
*
* Copyright (c) 1984, 1989, William LeFebvre, Rice University
* Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University
* Copyright (c) 2016, Randy Westlund
*
* $FreeBSD$
*/
#ifndef USERNAME_H
#define USERNAME_H
int enter_user(int uid, char *name, int wecare);
int get_user(int uid);
void init_hash(void);
char *username(int uid);
int userid(char *username);
#endif /* USERNAME_H */

View File

@ -22,3 +22,5 @@ char *errmsg();
char *format_time(); char *format_time();
char *format_k(); char *format_k();
char *format_k2(unsigned long long); char *format_k2(unsigned long long);
int string_index(char *string, char **array);

View File

@ -9,6 +9,9 @@
* Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University * Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University
*/ */
#include <stdio.h>
#include <string.h>
#include "top.h" #include "top.h"
#include "patchlevel.h" #include "patchlevel.h"