diff --git a/lkm/syscons/blank/Makefile b/lkm/syscons/blank/Makefile index 2c9491506a9f..d6a411e81118 100644 --- a/lkm/syscons/blank/Makefile +++ b/lkm/syscons/blank/Makefile @@ -1,9 +1,9 @@ -# $Id$ +# $Id: Makefile,v 1.5 1997/02/22 12:49:02 peter Exp $ KMOD= blank_saver_mod SRCS= blank_saver.c NOMAN= -CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys +CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys .include diff --git a/lkm/syscons/blank/blank_saver.c b/lkm/syscons/blank/blank_saver.c index d0194283b7e3..a534ab390d09 100644 --- a/lkm/syscons/blank/blank_saver.c +++ b/lkm/syscons/blank/blank_saver.c @@ -25,23 +25,21 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: blank_saver.c,v 1.8 1997/02/22 12:49:06 peter Exp $ + * $Id: blank_saver.c,v 1.9 1997/04/06 10:48:10 dufault Exp $ */ #include #include -#include #include #include #include -#include + +#include + #include MOD_MISC(blank_saver); -void (*current_saver)(int blank); -void (*old_saver)(int blank); - static void blank_saver(int blank) { @@ -61,18 +59,15 @@ blank_saver(int blank) static int blank_saver_load(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - old_saver = current_saver; - current_saver = blank_saver; - return 0; + if (!crtc_vga) + return EINVAL; + return add_scrn_saver(blank_saver); } static int blank_saver_unload(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - current_saver = old_saver; - return 0; + return remove_scrn_saver(blank_saver); } int diff --git a/lkm/syscons/daemon/Makefile b/lkm/syscons/daemon/Makefile index 3c5a3205ded9..25d2cfe0019d 100644 --- a/lkm/syscons/daemon/Makefile +++ b/lkm/syscons/daemon/Makefile @@ -1,15 +1,9 @@ -# $Id: Makefile,v 1.1 1997/05/21 14:18:26 yokota Exp $ +# $Id: Makefile,v 1.2 1997/06/24 12:43:18 yokota Exp $ KMOD= daemon_saver_mod SRCS= daemon_saver.c NOMAN= -CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys - -# Omits the bouncing message text and shows only the daemon. -#CFLAGS+= -DDAEMON_ONLY - -# Includes the host name in the message text. -#CFLAGS+= -DSHOW_HOSTNAME +CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys .include diff --git a/lkm/syscons/daemon/daemon_saver.c b/lkm/syscons/daemon/daemon_saver.c index 232f41689369..3325ad3a011d 100644 --- a/lkm/syscons/daemon/daemon_saver.c +++ b/lkm/syscons/daemon/daemon_saver.c @@ -25,28 +25,22 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: daemon_saver.c,v 1.4 1997/05/26 01:02:41 yokota Exp $ + * $Id: daemon_saver.c,v 1.5 1997/06/24 12:43:18 yokota Exp $ */ #include #include -#include #include #include #include -#include +#include #include #include -#include #include +#include -#include "saver.h" - -MOD_MISC(daemon_saver); - -void (*current_saver)(int blank); -void (*old_saver)(int blank); +#include #define CONSOLE_VECT(x, y) \ *((u_short*)(Crtat + (y)*cur_console->xsize + (x))) @@ -54,10 +48,10 @@ void (*old_saver)(int blank); #define DAEMON_MAX_WIDTH 32 #define DAEMON_MAX_HEIGHT 19 -/* - * Define this to disable the bouncing text. - */ -#undef DAEMON_ONLY +MOD_MISC(daemon_saver); + +static char *message; +static int messagelen; /* Who is the author of this ASCII pic? */ @@ -152,10 +146,6 @@ draw_daemon(int xpos, int ypos, int dxdir) } } -#ifndef DAEMON_ONLY -static char *message; -static int messagelen; - static void draw_string(int xpos, int ypos, char *s, int len) { @@ -165,15 +155,12 @@ draw_string(int xpos, int ypos, char *s, int len) CONSOLE_VECT(xpos + x, ypos) = scr_map[s[x]]|(FG_LIGHTGREEN|BG_BLACK)<<8; } -#endif static void daemon_saver(int blank) { -#ifndef DAEMON_ONLY static int txpos = 10, typos = 10; static int txdir = -1, tydir = -1; -#endif static int dxpos = 0, dypos = 0; static int dxdir = 1, dydir = 1; static int moved_daemon = 0; @@ -204,7 +191,6 @@ daemon_saver(int blank) dxpos += dxdir; dypos += dydir; } -#ifndef DAEMON_ONLY if (txdir > 0) { if (txpos == scp->xsize - messagelen) txdir = -1; @@ -218,18 +204,13 @@ daemon_saver(int blank) if (typos == 0) tydir = 1; } txpos += txdir; typos += tydir; -#endif draw_daemon(dxpos, dypos, dxdir); -#ifndef DAEMON_ONLY draw_string(txpos, typos, (char *)message, messagelen); -#endif } else { - if (scrn_blanked) { + if (scrn_blanked > 0) { set_border(scp->border); scrn_blanked = 0; - scp->start = 0; - scp->end = scp->xsize * scp->ysize; } } } @@ -237,36 +218,28 @@ daemon_saver(int blank) static int daemon_saver_load(struct lkm_table *lkmtp, int cmd) { -#ifdef SHOW_HOSTNAME - static const char *freebsd = " - FreeBSD "; -#else - static const char *freebsd = "FreeBSD "; -#endif /* SHOW_HOSTNAME */ + int err; - (*current_saver)(0); - old_saver = current_saver; - current_saver = daemon_saver; + messagelen = strlen(hostname) + 3 + strlen(ostype) + 1 + + strlen(osrelease); + message = malloc(messagelen + 1, M_DEVBUF, M_WAITOK); + sprintf(message, "%s - %s %s", hostname, ostype, osrelease); -#ifdef SHOW_HOSTNAME - messagelen = strlen(hostname) + strlen(freebsd) + strlen(osrelease); - message = malloc(messagelen + 1, M_DEVBUF, M_NOWAIT); - sprintf(message, "%s%s%s", hostname, freebsd, osrelease); -#else - messagelen = strlen(freebsd) + strlen(osrelease); - message = malloc(messagelen + 1, M_DEVBUF, M_NOWAIT); - sprintf(message, "%s%s", freebsd, osrelease); -#endif /* SHOW_HOSTNAME */ - return 0; + err = add_scrn_saver(daemon_saver); + if (err != 0) + free(message, M_DEVBUF); + return err; } static int daemon_saver_unload(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - current_saver = old_saver; + int err; - free(message, M_DEVBUF); - return 0; + err = remove_scrn_saver(daemon_saver); + if (err == 0) + free(message, M_DEVBUF); + return err; } int diff --git a/lkm/syscons/fade/Makefile b/lkm/syscons/fade/Makefile index 15d5331db202..393912da1590 100644 --- a/lkm/syscons/fade/Makefile +++ b/lkm/syscons/fade/Makefile @@ -1,9 +1,9 @@ -# $Id$ +# $Id: Makefile,v 1.5 1997/02/22 12:49:09 peter Exp $ KMOD= fade_saver_mod SRCS= fade_saver.c NOMAN= -CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys +CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys .include diff --git a/lkm/syscons/fade/fade_saver.c b/lkm/syscons/fade/fade_saver.c index 4fda21cdd48e..d68bba93959f 100644 --- a/lkm/syscons/fade/fade_saver.c +++ b/lkm/syscons/fade/fade_saver.c @@ -25,23 +25,21 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: fade_saver.c,v 1.9 1997/02/22 12:49:10 peter Exp $ + * $Id: fade_saver.c,v 1.10 1997/04/06 10:48:18 dufault Exp $ */ #include #include -#include #include #include #include -#include + +#include + #include MOD_MISC(fade_saver); -void (*current_saver)(int blank); -void (*old_saver)(int blank); - static void fade_saver(int blank) { @@ -76,18 +74,15 @@ fade_saver(int blank) static int fade_saver_load(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - old_saver = current_saver; - current_saver = fade_saver; - return 0; + if (!crtc_vga) + return EINVAL; + return add_scrn_saver(fade_saver); } static int fade_saver_unload(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - current_saver = old_saver; - return 0; + return remove_scrn_saver(fade_saver); } int diff --git a/lkm/syscons/green/Makefile b/lkm/syscons/green/Makefile index e27e00c5a4f9..2943a06f79d3 100644 --- a/lkm/syscons/green/Makefile +++ b/lkm/syscons/green/Makefile @@ -1,9 +1,9 @@ -# $Id$ +# $Id: Makefile,v 1.5 1997/02/22 12:49:13 peter Exp $ KMOD= green_saver_mod SRCS= green_saver.c NOMAN= -CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys +CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys .include diff --git a/lkm/syscons/green/green_saver.c b/lkm/syscons/green/green_saver.c index c3c9a7ed93dd..0454753d6b0b 100644 --- a/lkm/syscons/green/green_saver.c +++ b/lkm/syscons/green/green_saver.c @@ -25,23 +25,21 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: green_saver.c,v 1.8 1997/02/22 12:49:15 peter Exp $ + * $Id: green_saver.c,v 1.9 1997/04/06 10:49:13 dufault Exp $ */ #include #include -#include #include #include #include -#include + +#include + #include MOD_MISC(green_saver); -void (*current_saver)(int blank); -void (*old_saver)(int blank); - static void green_saver(int blank) { @@ -65,18 +63,15 @@ green_saver(int blank) static int green_saver_load(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - old_saver = current_saver; - current_saver = green_saver; - return 0; + if (!crtc_vga) + return EINVAL; + return add_scrn_saver(green_saver); } static int green_saver_unload(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - current_saver = old_saver; - return 0; + return remove_scrn_saver(green_saver); } int diff --git a/lkm/syscons/saver.h b/lkm/syscons/saver.h index 67ac358b22f1..7ba6c1192049 100644 --- a/lkm/syscons/saver.h +++ b/lkm/syscons/saver.h @@ -25,18 +25,12 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: saver.h,v 1.7 1997/02/22 12:49:00 peter Exp $ + * $Id: saver.h,v 1.8 1997/05/21 14:18:00 yokota Exp $ */ -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include + #include extern scr_stat *cur_console; diff --git a/lkm/syscons/snake/Makefile b/lkm/syscons/snake/Makefile index 38417aeb25fe..7288f2ca0afc 100644 --- a/lkm/syscons/snake/Makefile +++ b/lkm/syscons/snake/Makefile @@ -1,9 +1,9 @@ -# $Id$ +# $Id: Makefile,v 1.5 1997/02/22 12:49:18 peter Exp $ KMOD= snake_saver_mod SRCS= snake_saver.c NOMAN= -CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys +CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys .include diff --git a/lkm/syscons/snake/snake_saver.c b/lkm/syscons/snake/snake_saver.c index f0580ae2d325..c5a9842b4fda 100644 --- a/lkm/syscons/snake/snake_saver.c +++ b/lkm/syscons/snake/snake_saver.c @@ -25,47 +25,52 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: snake_saver.c,v 1.13 1997/02/22 12:49:19 peter Exp $ + * $Id: snake_saver.c,v 1.14 1997/04/06 10:49:22 dufault Exp $ */ #include #include -#include #include #include #include -#include +#include +#include +#include #include +#include -#include "saver.h" +#include MOD_MISC(snake_saver); -void (*current_saver)(int blank); -void (*old_saver)(int blank); +static char *message; +static u_char **messagep; +static int messagelen; static void snake_saver(int blank) { - const char saves[] = {"FreeBSD-3.0-CURRENT"}; - static u_char *savs[sizeof(saves)-1]; static int dirx, diry; int f; scr_stat *scp = cur_console; +/* XXX hack for minimal changes. */ +#define save message +#define savs messagep + if (blank) { - if (!scrn_blanked) { + if (scrn_blanked <= 0) { fillw((FG_LIGHTGREY|BG_BLACK)<<8 | scr_map[0x20], Crtat, scp->xsize * scp->ysize); set_border(0); dirx = (scp->xpos ? 1 : -1); diry = (scp->ypos ? scp->xsize : -scp->xsize); - for (f=0; f< sizeof(saves)-1; f++) + for (f=0; f< messagelen; f++) savs[f] = (u_char *)Crtat + 2 * (scp->xpos+scp->ypos*scp->xsize); - *(savs[0]) = scr_map[*saves]; + *(savs[0]) = scr_map[*save]; f = scp->ysize * scp->xsize + 5; outb(crtc_addr, 14); outb(crtc_addr+1, f >> 8); @@ -76,8 +81,8 @@ snake_saver(int blank) if (scrn_blanked++ < 4) return; scrn_blanked = 1; - *(savs[sizeof(saves)-2]) = scr_map[0x20]; - for (f=sizeof(saves)-2; f > 0; f--) + *(savs[messagelen-1]) = scr_map[0x20]; + for (f=messagelen-1; f > 0; f--) savs[f] = savs[f-1]; f = (savs[0] - (u_char *)Crtat) / 2; if ((f % scp->xsize) == 0 || @@ -89,15 +94,13 @@ snake_saver(int blank) (random() % 20) == 0) diry = -diry; savs[0] += 2*dirx + 2*diry; - for (f=sizeof(saves)-2; f>=0; f--) - *(savs[f]) = scr_map[saves[f]]; + for (f=messagelen-1; f>=0; f--) + *(savs[f]) = scr_map[save[f]]; } else { - if (scrn_blanked) { + if (scrn_blanked > 0) { set_border(scp->border); scrn_blanked = 0; - scp->start = 0; - scp->end = scp->xsize * scp->ysize; } } } @@ -105,18 +108,32 @@ snake_saver(int blank) static int snake_saver_load(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - old_saver = current_saver; - current_saver = snake_saver; - return 0; + int err; + + messagelen = strlen(ostype) + 1 + strlen(osrelease); + message = malloc(messagelen + 1, M_DEVBUF, M_WAITOK); + sprintf(message, "%s %s", ostype, osrelease); + messagep = malloc(messagelen * sizeof *messagep, M_DEVBUF, M_WAITOK); + + err = add_scrn_saver(snake_saver); + if (err != 0) { + free(message, M_DEVBUF); + free(messagep, M_DEVBUF); + } + return err; } static int snake_saver_unload(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - current_saver = old_saver; - return 0; + int err; + + err = remove_scrn_saver(snake_saver); + if (err == 0) { + free(message, M_DEVBUF); + free(messagep, M_DEVBUF); + } + return err; } int diff --git a/lkm/syscons/star/Makefile b/lkm/syscons/star/Makefile index 39aa7dd4b9b8..aa3ed6aeb96a 100644 --- a/lkm/syscons/star/Makefile +++ b/lkm/syscons/star/Makefile @@ -1,9 +1,9 @@ -# $Id$ +# $Id: Makefile,v 1.5 1997/02/22 12:49:21 peter Exp $ KMOD= star_saver_mod SRCS= star_saver.c NOMAN= -CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys +CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys .include diff --git a/lkm/syscons/star/star_saver.c b/lkm/syscons/star/star_saver.c index 465c493a3dcf..d025b16afdba 100644 --- a/lkm/syscons/star/star_saver.c +++ b/lkm/syscons/star/star_saver.c @@ -25,26 +25,22 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: star_saver.c,v 1.10 1997/02/22 12:49:22 peter Exp $ + * $Id: star_saver.c,v 1.11 1997/04/06 11:07:01 dufault Exp $ */ #include #include -#include #include #include #include -#include #include +#include -#include "saver.h" +#include MOD_MISC(star_saver); -void (*current_saver)(int blank); -void (*old_saver)(int blank); - #define NUM_STARS 50 /* @@ -62,7 +58,7 @@ star_saver(int blank) static u_short stars[NUM_STARS][2]; if (blank) { - if (!scrn_blanked) { + if (scrn_blanked <= 0) { scrn_blanked = 1; fillw((FG_LIGHTGREY|BG_BLACK)<<8|scr_map[0x20], Crtat, scp->xsize * scp->ysize); @@ -83,11 +79,9 @@ star_saver(int blank) } } else { - if (scrn_blanked) { + if (scrn_blanked > 0) { set_border(scp->border); scrn_blanked = 0; - scp->start = 0; - scp->end = scp->xsize * scp->ysize; } } } @@ -95,18 +89,13 @@ star_saver(int blank) static int star_saver_load(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - old_saver = current_saver; - current_saver = star_saver; - return 0; + return add_scrn_saver(star_saver); } static int star_saver_unload(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - current_saver = old_saver; - return 0; + return remove_scrn_saver(star_saver); } int diff --git a/sys/dev/syscons/blank/blank_saver.c b/sys/dev/syscons/blank/blank_saver.c index d0194283b7e3..a534ab390d09 100644 --- a/sys/dev/syscons/blank/blank_saver.c +++ b/sys/dev/syscons/blank/blank_saver.c @@ -25,23 +25,21 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: blank_saver.c,v 1.8 1997/02/22 12:49:06 peter Exp $ + * $Id: blank_saver.c,v 1.9 1997/04/06 10:48:10 dufault Exp $ */ #include #include -#include #include #include #include -#include + +#include + #include MOD_MISC(blank_saver); -void (*current_saver)(int blank); -void (*old_saver)(int blank); - static void blank_saver(int blank) { @@ -61,18 +59,15 @@ blank_saver(int blank) static int blank_saver_load(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - old_saver = current_saver; - current_saver = blank_saver; - return 0; + if (!crtc_vga) + return EINVAL; + return add_scrn_saver(blank_saver); } static int blank_saver_unload(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - current_saver = old_saver; - return 0; + return remove_scrn_saver(blank_saver); } int diff --git a/sys/dev/syscons/daemon/daemon_saver.c b/sys/dev/syscons/daemon/daemon_saver.c index 232f41689369..3325ad3a011d 100644 --- a/sys/dev/syscons/daemon/daemon_saver.c +++ b/sys/dev/syscons/daemon/daemon_saver.c @@ -25,28 +25,22 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: daemon_saver.c,v 1.4 1997/05/26 01:02:41 yokota Exp $ + * $Id: daemon_saver.c,v 1.5 1997/06/24 12:43:18 yokota Exp $ */ #include #include -#include #include #include #include -#include +#include #include #include -#include #include +#include -#include "saver.h" - -MOD_MISC(daemon_saver); - -void (*current_saver)(int blank); -void (*old_saver)(int blank); +#include #define CONSOLE_VECT(x, y) \ *((u_short*)(Crtat + (y)*cur_console->xsize + (x))) @@ -54,10 +48,10 @@ void (*old_saver)(int blank); #define DAEMON_MAX_WIDTH 32 #define DAEMON_MAX_HEIGHT 19 -/* - * Define this to disable the bouncing text. - */ -#undef DAEMON_ONLY +MOD_MISC(daemon_saver); + +static char *message; +static int messagelen; /* Who is the author of this ASCII pic? */ @@ -152,10 +146,6 @@ draw_daemon(int xpos, int ypos, int dxdir) } } -#ifndef DAEMON_ONLY -static char *message; -static int messagelen; - static void draw_string(int xpos, int ypos, char *s, int len) { @@ -165,15 +155,12 @@ draw_string(int xpos, int ypos, char *s, int len) CONSOLE_VECT(xpos + x, ypos) = scr_map[s[x]]|(FG_LIGHTGREEN|BG_BLACK)<<8; } -#endif static void daemon_saver(int blank) { -#ifndef DAEMON_ONLY static int txpos = 10, typos = 10; static int txdir = -1, tydir = -1; -#endif static int dxpos = 0, dypos = 0; static int dxdir = 1, dydir = 1; static int moved_daemon = 0; @@ -204,7 +191,6 @@ daemon_saver(int blank) dxpos += dxdir; dypos += dydir; } -#ifndef DAEMON_ONLY if (txdir > 0) { if (txpos == scp->xsize - messagelen) txdir = -1; @@ -218,18 +204,13 @@ daemon_saver(int blank) if (typos == 0) tydir = 1; } txpos += txdir; typos += tydir; -#endif draw_daemon(dxpos, dypos, dxdir); -#ifndef DAEMON_ONLY draw_string(txpos, typos, (char *)message, messagelen); -#endif } else { - if (scrn_blanked) { + if (scrn_blanked > 0) { set_border(scp->border); scrn_blanked = 0; - scp->start = 0; - scp->end = scp->xsize * scp->ysize; } } } @@ -237,36 +218,28 @@ daemon_saver(int blank) static int daemon_saver_load(struct lkm_table *lkmtp, int cmd) { -#ifdef SHOW_HOSTNAME - static const char *freebsd = " - FreeBSD "; -#else - static const char *freebsd = "FreeBSD "; -#endif /* SHOW_HOSTNAME */ + int err; - (*current_saver)(0); - old_saver = current_saver; - current_saver = daemon_saver; + messagelen = strlen(hostname) + 3 + strlen(ostype) + 1 + + strlen(osrelease); + message = malloc(messagelen + 1, M_DEVBUF, M_WAITOK); + sprintf(message, "%s - %s %s", hostname, ostype, osrelease); -#ifdef SHOW_HOSTNAME - messagelen = strlen(hostname) + strlen(freebsd) + strlen(osrelease); - message = malloc(messagelen + 1, M_DEVBUF, M_NOWAIT); - sprintf(message, "%s%s%s", hostname, freebsd, osrelease); -#else - messagelen = strlen(freebsd) + strlen(osrelease); - message = malloc(messagelen + 1, M_DEVBUF, M_NOWAIT); - sprintf(message, "%s%s", freebsd, osrelease); -#endif /* SHOW_HOSTNAME */ - return 0; + err = add_scrn_saver(daemon_saver); + if (err != 0) + free(message, M_DEVBUF); + return err; } static int daemon_saver_unload(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - current_saver = old_saver; + int err; - free(message, M_DEVBUF); - return 0; + err = remove_scrn_saver(daemon_saver); + if (err == 0) + free(message, M_DEVBUF); + return err; } int diff --git a/sys/dev/syscons/fade/fade_saver.c b/sys/dev/syscons/fade/fade_saver.c index 4fda21cdd48e..d68bba93959f 100644 --- a/sys/dev/syscons/fade/fade_saver.c +++ b/sys/dev/syscons/fade/fade_saver.c @@ -25,23 +25,21 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: fade_saver.c,v 1.9 1997/02/22 12:49:10 peter Exp $ + * $Id: fade_saver.c,v 1.10 1997/04/06 10:48:18 dufault Exp $ */ #include #include -#include #include #include #include -#include + +#include + #include MOD_MISC(fade_saver); -void (*current_saver)(int blank); -void (*old_saver)(int blank); - static void fade_saver(int blank) { @@ -76,18 +74,15 @@ fade_saver(int blank) static int fade_saver_load(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - old_saver = current_saver; - current_saver = fade_saver; - return 0; + if (!crtc_vga) + return EINVAL; + return add_scrn_saver(fade_saver); } static int fade_saver_unload(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - current_saver = old_saver; - return 0; + return remove_scrn_saver(fade_saver); } int diff --git a/sys/dev/syscons/green/green_saver.c b/sys/dev/syscons/green/green_saver.c index c3c9a7ed93dd..0454753d6b0b 100644 --- a/sys/dev/syscons/green/green_saver.c +++ b/sys/dev/syscons/green/green_saver.c @@ -25,23 +25,21 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: green_saver.c,v 1.8 1997/02/22 12:49:15 peter Exp $ + * $Id: green_saver.c,v 1.9 1997/04/06 10:49:13 dufault Exp $ */ #include #include -#include #include #include #include -#include + +#include + #include MOD_MISC(green_saver); -void (*current_saver)(int blank); -void (*old_saver)(int blank); - static void green_saver(int blank) { @@ -65,18 +63,15 @@ green_saver(int blank) static int green_saver_load(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - old_saver = current_saver; - current_saver = green_saver; - return 0; + if (!crtc_vga) + return EINVAL; + return add_scrn_saver(green_saver); } static int green_saver_unload(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - current_saver = old_saver; - return 0; + return remove_scrn_saver(green_saver); } int diff --git a/sys/dev/syscons/snake/snake_saver.c b/sys/dev/syscons/snake/snake_saver.c index f0580ae2d325..c5a9842b4fda 100644 --- a/sys/dev/syscons/snake/snake_saver.c +++ b/sys/dev/syscons/snake/snake_saver.c @@ -25,47 +25,52 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: snake_saver.c,v 1.13 1997/02/22 12:49:19 peter Exp $ + * $Id: snake_saver.c,v 1.14 1997/04/06 10:49:22 dufault Exp $ */ #include #include -#include #include #include #include -#include +#include +#include +#include #include +#include -#include "saver.h" +#include MOD_MISC(snake_saver); -void (*current_saver)(int blank); -void (*old_saver)(int blank); +static char *message; +static u_char **messagep; +static int messagelen; static void snake_saver(int blank) { - const char saves[] = {"FreeBSD-3.0-CURRENT"}; - static u_char *savs[sizeof(saves)-1]; static int dirx, diry; int f; scr_stat *scp = cur_console; +/* XXX hack for minimal changes. */ +#define save message +#define savs messagep + if (blank) { - if (!scrn_blanked) { + if (scrn_blanked <= 0) { fillw((FG_LIGHTGREY|BG_BLACK)<<8 | scr_map[0x20], Crtat, scp->xsize * scp->ysize); set_border(0); dirx = (scp->xpos ? 1 : -1); diry = (scp->ypos ? scp->xsize : -scp->xsize); - for (f=0; f< sizeof(saves)-1; f++) + for (f=0; f< messagelen; f++) savs[f] = (u_char *)Crtat + 2 * (scp->xpos+scp->ypos*scp->xsize); - *(savs[0]) = scr_map[*saves]; + *(savs[0]) = scr_map[*save]; f = scp->ysize * scp->xsize + 5; outb(crtc_addr, 14); outb(crtc_addr+1, f >> 8); @@ -76,8 +81,8 @@ snake_saver(int blank) if (scrn_blanked++ < 4) return; scrn_blanked = 1; - *(savs[sizeof(saves)-2]) = scr_map[0x20]; - for (f=sizeof(saves)-2; f > 0; f--) + *(savs[messagelen-1]) = scr_map[0x20]; + for (f=messagelen-1; f > 0; f--) savs[f] = savs[f-1]; f = (savs[0] - (u_char *)Crtat) / 2; if ((f % scp->xsize) == 0 || @@ -89,15 +94,13 @@ snake_saver(int blank) (random() % 20) == 0) diry = -diry; savs[0] += 2*dirx + 2*diry; - for (f=sizeof(saves)-2; f>=0; f--) - *(savs[f]) = scr_map[saves[f]]; + for (f=messagelen-1; f>=0; f--) + *(savs[f]) = scr_map[save[f]]; } else { - if (scrn_blanked) { + if (scrn_blanked > 0) { set_border(scp->border); scrn_blanked = 0; - scp->start = 0; - scp->end = scp->xsize * scp->ysize; } } } @@ -105,18 +108,32 @@ snake_saver(int blank) static int snake_saver_load(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - old_saver = current_saver; - current_saver = snake_saver; - return 0; + int err; + + messagelen = strlen(ostype) + 1 + strlen(osrelease); + message = malloc(messagelen + 1, M_DEVBUF, M_WAITOK); + sprintf(message, "%s %s", ostype, osrelease); + messagep = malloc(messagelen * sizeof *messagep, M_DEVBUF, M_WAITOK); + + err = add_scrn_saver(snake_saver); + if (err != 0) { + free(message, M_DEVBUF); + free(messagep, M_DEVBUF); + } + return err; } static int snake_saver_unload(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - current_saver = old_saver; - return 0; + int err; + + err = remove_scrn_saver(snake_saver); + if (err == 0) { + free(message, M_DEVBUF); + free(messagep, M_DEVBUF); + } + return err; } int diff --git a/sys/dev/syscons/star/star_saver.c b/sys/dev/syscons/star/star_saver.c index 465c493a3dcf..d025b16afdba 100644 --- a/sys/dev/syscons/star/star_saver.c +++ b/sys/dev/syscons/star/star_saver.c @@ -25,26 +25,22 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: star_saver.c,v 1.10 1997/02/22 12:49:22 peter Exp $ + * $Id: star_saver.c,v 1.11 1997/04/06 11:07:01 dufault Exp $ */ #include #include -#include #include #include #include -#include #include +#include -#include "saver.h" +#include MOD_MISC(star_saver); -void (*current_saver)(int blank); -void (*old_saver)(int blank); - #define NUM_STARS 50 /* @@ -62,7 +58,7 @@ star_saver(int blank) static u_short stars[NUM_STARS][2]; if (blank) { - if (!scrn_blanked) { + if (scrn_blanked <= 0) { scrn_blanked = 1; fillw((FG_LIGHTGREY|BG_BLACK)<<8|scr_map[0x20], Crtat, scp->xsize * scp->ysize); @@ -83,11 +79,9 @@ star_saver(int blank) } } else { - if (scrn_blanked) { + if (scrn_blanked > 0) { set_border(scp->border); scrn_blanked = 0; - scp->start = 0; - scp->end = scp->xsize * scp->ysize; } } } @@ -95,18 +89,13 @@ star_saver(int blank) static int star_saver_load(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - old_saver = current_saver; - current_saver = star_saver; - return 0; + return add_scrn_saver(star_saver); } static int star_saver_unload(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - current_saver = old_saver; - return 0; + return remove_scrn_saver(star_saver); } int diff --git a/sys/modules/syscons/blank/Makefile b/sys/modules/syscons/blank/Makefile index 2c9491506a9f..d6a411e81118 100644 --- a/sys/modules/syscons/blank/Makefile +++ b/sys/modules/syscons/blank/Makefile @@ -1,9 +1,9 @@ -# $Id$ +# $Id: Makefile,v 1.5 1997/02/22 12:49:02 peter Exp $ KMOD= blank_saver_mod SRCS= blank_saver.c NOMAN= -CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys +CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys .include diff --git a/sys/modules/syscons/blank/blank_saver.c b/sys/modules/syscons/blank/blank_saver.c index d0194283b7e3..a534ab390d09 100644 --- a/sys/modules/syscons/blank/blank_saver.c +++ b/sys/modules/syscons/blank/blank_saver.c @@ -25,23 +25,21 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: blank_saver.c,v 1.8 1997/02/22 12:49:06 peter Exp $ + * $Id: blank_saver.c,v 1.9 1997/04/06 10:48:10 dufault Exp $ */ #include #include -#include #include #include #include -#include + +#include + #include MOD_MISC(blank_saver); -void (*current_saver)(int blank); -void (*old_saver)(int blank); - static void blank_saver(int blank) { @@ -61,18 +59,15 @@ blank_saver(int blank) static int blank_saver_load(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - old_saver = current_saver; - current_saver = blank_saver; - return 0; + if (!crtc_vga) + return EINVAL; + return add_scrn_saver(blank_saver); } static int blank_saver_unload(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - current_saver = old_saver; - return 0; + return remove_scrn_saver(blank_saver); } int diff --git a/sys/modules/syscons/daemon/Makefile b/sys/modules/syscons/daemon/Makefile index 3c5a3205ded9..25d2cfe0019d 100644 --- a/sys/modules/syscons/daemon/Makefile +++ b/sys/modules/syscons/daemon/Makefile @@ -1,15 +1,9 @@ -# $Id: Makefile,v 1.1 1997/05/21 14:18:26 yokota Exp $ +# $Id: Makefile,v 1.2 1997/06/24 12:43:18 yokota Exp $ KMOD= daemon_saver_mod SRCS= daemon_saver.c NOMAN= -CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys - -# Omits the bouncing message text and shows only the daemon. -#CFLAGS+= -DDAEMON_ONLY - -# Includes the host name in the message text. -#CFLAGS+= -DSHOW_HOSTNAME +CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys .include diff --git a/sys/modules/syscons/daemon/daemon_saver.c b/sys/modules/syscons/daemon/daemon_saver.c index 232f41689369..3325ad3a011d 100644 --- a/sys/modules/syscons/daemon/daemon_saver.c +++ b/sys/modules/syscons/daemon/daemon_saver.c @@ -25,28 +25,22 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: daemon_saver.c,v 1.4 1997/05/26 01:02:41 yokota Exp $ + * $Id: daemon_saver.c,v 1.5 1997/06/24 12:43:18 yokota Exp $ */ #include #include -#include #include #include #include -#include +#include #include #include -#include #include +#include -#include "saver.h" - -MOD_MISC(daemon_saver); - -void (*current_saver)(int blank); -void (*old_saver)(int blank); +#include #define CONSOLE_VECT(x, y) \ *((u_short*)(Crtat + (y)*cur_console->xsize + (x))) @@ -54,10 +48,10 @@ void (*old_saver)(int blank); #define DAEMON_MAX_WIDTH 32 #define DAEMON_MAX_HEIGHT 19 -/* - * Define this to disable the bouncing text. - */ -#undef DAEMON_ONLY +MOD_MISC(daemon_saver); + +static char *message; +static int messagelen; /* Who is the author of this ASCII pic? */ @@ -152,10 +146,6 @@ draw_daemon(int xpos, int ypos, int dxdir) } } -#ifndef DAEMON_ONLY -static char *message; -static int messagelen; - static void draw_string(int xpos, int ypos, char *s, int len) { @@ -165,15 +155,12 @@ draw_string(int xpos, int ypos, char *s, int len) CONSOLE_VECT(xpos + x, ypos) = scr_map[s[x]]|(FG_LIGHTGREEN|BG_BLACK)<<8; } -#endif static void daemon_saver(int blank) { -#ifndef DAEMON_ONLY static int txpos = 10, typos = 10; static int txdir = -1, tydir = -1; -#endif static int dxpos = 0, dypos = 0; static int dxdir = 1, dydir = 1; static int moved_daemon = 0; @@ -204,7 +191,6 @@ daemon_saver(int blank) dxpos += dxdir; dypos += dydir; } -#ifndef DAEMON_ONLY if (txdir > 0) { if (txpos == scp->xsize - messagelen) txdir = -1; @@ -218,18 +204,13 @@ daemon_saver(int blank) if (typos == 0) tydir = 1; } txpos += txdir; typos += tydir; -#endif draw_daemon(dxpos, dypos, dxdir); -#ifndef DAEMON_ONLY draw_string(txpos, typos, (char *)message, messagelen); -#endif } else { - if (scrn_blanked) { + if (scrn_blanked > 0) { set_border(scp->border); scrn_blanked = 0; - scp->start = 0; - scp->end = scp->xsize * scp->ysize; } } } @@ -237,36 +218,28 @@ daemon_saver(int blank) static int daemon_saver_load(struct lkm_table *lkmtp, int cmd) { -#ifdef SHOW_HOSTNAME - static const char *freebsd = " - FreeBSD "; -#else - static const char *freebsd = "FreeBSD "; -#endif /* SHOW_HOSTNAME */ + int err; - (*current_saver)(0); - old_saver = current_saver; - current_saver = daemon_saver; + messagelen = strlen(hostname) + 3 + strlen(ostype) + 1 + + strlen(osrelease); + message = malloc(messagelen + 1, M_DEVBUF, M_WAITOK); + sprintf(message, "%s - %s %s", hostname, ostype, osrelease); -#ifdef SHOW_HOSTNAME - messagelen = strlen(hostname) + strlen(freebsd) + strlen(osrelease); - message = malloc(messagelen + 1, M_DEVBUF, M_NOWAIT); - sprintf(message, "%s%s%s", hostname, freebsd, osrelease); -#else - messagelen = strlen(freebsd) + strlen(osrelease); - message = malloc(messagelen + 1, M_DEVBUF, M_NOWAIT); - sprintf(message, "%s%s", freebsd, osrelease); -#endif /* SHOW_HOSTNAME */ - return 0; + err = add_scrn_saver(daemon_saver); + if (err != 0) + free(message, M_DEVBUF); + return err; } static int daemon_saver_unload(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - current_saver = old_saver; + int err; - free(message, M_DEVBUF); - return 0; + err = remove_scrn_saver(daemon_saver); + if (err == 0) + free(message, M_DEVBUF); + return err; } int diff --git a/sys/modules/syscons/fade/Makefile b/sys/modules/syscons/fade/Makefile index 15d5331db202..393912da1590 100644 --- a/sys/modules/syscons/fade/Makefile +++ b/sys/modules/syscons/fade/Makefile @@ -1,9 +1,9 @@ -# $Id$ +# $Id: Makefile,v 1.5 1997/02/22 12:49:09 peter Exp $ KMOD= fade_saver_mod SRCS= fade_saver.c NOMAN= -CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys +CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys .include diff --git a/sys/modules/syscons/fade/fade_saver.c b/sys/modules/syscons/fade/fade_saver.c index 4fda21cdd48e..d68bba93959f 100644 --- a/sys/modules/syscons/fade/fade_saver.c +++ b/sys/modules/syscons/fade/fade_saver.c @@ -25,23 +25,21 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: fade_saver.c,v 1.9 1997/02/22 12:49:10 peter Exp $ + * $Id: fade_saver.c,v 1.10 1997/04/06 10:48:18 dufault Exp $ */ #include #include -#include #include #include #include -#include + +#include + #include MOD_MISC(fade_saver); -void (*current_saver)(int blank); -void (*old_saver)(int blank); - static void fade_saver(int blank) { @@ -76,18 +74,15 @@ fade_saver(int blank) static int fade_saver_load(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - old_saver = current_saver; - current_saver = fade_saver; - return 0; + if (!crtc_vga) + return EINVAL; + return add_scrn_saver(fade_saver); } static int fade_saver_unload(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - current_saver = old_saver; - return 0; + return remove_scrn_saver(fade_saver); } int diff --git a/sys/modules/syscons/green/Makefile b/sys/modules/syscons/green/Makefile index e27e00c5a4f9..2943a06f79d3 100644 --- a/sys/modules/syscons/green/Makefile +++ b/sys/modules/syscons/green/Makefile @@ -1,9 +1,9 @@ -# $Id$ +# $Id: Makefile,v 1.5 1997/02/22 12:49:13 peter Exp $ KMOD= green_saver_mod SRCS= green_saver.c NOMAN= -CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys +CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys .include diff --git a/sys/modules/syscons/green/green_saver.c b/sys/modules/syscons/green/green_saver.c index c3c9a7ed93dd..0454753d6b0b 100644 --- a/sys/modules/syscons/green/green_saver.c +++ b/sys/modules/syscons/green/green_saver.c @@ -25,23 +25,21 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: green_saver.c,v 1.8 1997/02/22 12:49:15 peter Exp $ + * $Id: green_saver.c,v 1.9 1997/04/06 10:49:13 dufault Exp $ */ #include #include -#include #include #include #include -#include + +#include + #include MOD_MISC(green_saver); -void (*current_saver)(int blank); -void (*old_saver)(int blank); - static void green_saver(int blank) { @@ -65,18 +63,15 @@ green_saver(int blank) static int green_saver_load(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - old_saver = current_saver; - current_saver = green_saver; - return 0; + if (!crtc_vga) + return EINVAL; + return add_scrn_saver(green_saver); } static int green_saver_unload(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - current_saver = old_saver; - return 0; + return remove_scrn_saver(green_saver); } int diff --git a/sys/modules/syscons/saver.h b/sys/modules/syscons/saver.h index 67ac358b22f1..7ba6c1192049 100644 --- a/sys/modules/syscons/saver.h +++ b/sys/modules/syscons/saver.h @@ -25,18 +25,12 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: saver.h,v 1.7 1997/02/22 12:49:00 peter Exp $ + * $Id: saver.h,v 1.8 1997/05/21 14:18:00 yokota Exp $ */ -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include + #include extern scr_stat *cur_console; diff --git a/sys/modules/syscons/snake/Makefile b/sys/modules/syscons/snake/Makefile index 38417aeb25fe..7288f2ca0afc 100644 --- a/sys/modules/syscons/snake/Makefile +++ b/sys/modules/syscons/snake/Makefile @@ -1,9 +1,9 @@ -# $Id$ +# $Id: Makefile,v 1.5 1997/02/22 12:49:18 peter Exp $ KMOD= snake_saver_mod SRCS= snake_saver.c NOMAN= -CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys +CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys .include diff --git a/sys/modules/syscons/snake/snake_saver.c b/sys/modules/syscons/snake/snake_saver.c index f0580ae2d325..c5a9842b4fda 100644 --- a/sys/modules/syscons/snake/snake_saver.c +++ b/sys/modules/syscons/snake/snake_saver.c @@ -25,47 +25,52 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: snake_saver.c,v 1.13 1997/02/22 12:49:19 peter Exp $ + * $Id: snake_saver.c,v 1.14 1997/04/06 10:49:22 dufault Exp $ */ #include #include -#include #include #include #include -#include +#include +#include +#include #include +#include -#include "saver.h" +#include MOD_MISC(snake_saver); -void (*current_saver)(int blank); -void (*old_saver)(int blank); +static char *message; +static u_char **messagep; +static int messagelen; static void snake_saver(int blank) { - const char saves[] = {"FreeBSD-3.0-CURRENT"}; - static u_char *savs[sizeof(saves)-1]; static int dirx, diry; int f; scr_stat *scp = cur_console; +/* XXX hack for minimal changes. */ +#define save message +#define savs messagep + if (blank) { - if (!scrn_blanked) { + if (scrn_blanked <= 0) { fillw((FG_LIGHTGREY|BG_BLACK)<<8 | scr_map[0x20], Crtat, scp->xsize * scp->ysize); set_border(0); dirx = (scp->xpos ? 1 : -1); diry = (scp->ypos ? scp->xsize : -scp->xsize); - for (f=0; f< sizeof(saves)-1; f++) + for (f=0; f< messagelen; f++) savs[f] = (u_char *)Crtat + 2 * (scp->xpos+scp->ypos*scp->xsize); - *(savs[0]) = scr_map[*saves]; + *(savs[0]) = scr_map[*save]; f = scp->ysize * scp->xsize + 5; outb(crtc_addr, 14); outb(crtc_addr+1, f >> 8); @@ -76,8 +81,8 @@ snake_saver(int blank) if (scrn_blanked++ < 4) return; scrn_blanked = 1; - *(savs[sizeof(saves)-2]) = scr_map[0x20]; - for (f=sizeof(saves)-2; f > 0; f--) + *(savs[messagelen-1]) = scr_map[0x20]; + for (f=messagelen-1; f > 0; f--) savs[f] = savs[f-1]; f = (savs[0] - (u_char *)Crtat) / 2; if ((f % scp->xsize) == 0 || @@ -89,15 +94,13 @@ snake_saver(int blank) (random() % 20) == 0) diry = -diry; savs[0] += 2*dirx + 2*diry; - for (f=sizeof(saves)-2; f>=0; f--) - *(savs[f]) = scr_map[saves[f]]; + for (f=messagelen-1; f>=0; f--) + *(savs[f]) = scr_map[save[f]]; } else { - if (scrn_blanked) { + if (scrn_blanked > 0) { set_border(scp->border); scrn_blanked = 0; - scp->start = 0; - scp->end = scp->xsize * scp->ysize; } } } @@ -105,18 +108,32 @@ snake_saver(int blank) static int snake_saver_load(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - old_saver = current_saver; - current_saver = snake_saver; - return 0; + int err; + + messagelen = strlen(ostype) + 1 + strlen(osrelease); + message = malloc(messagelen + 1, M_DEVBUF, M_WAITOK); + sprintf(message, "%s %s", ostype, osrelease); + messagep = malloc(messagelen * sizeof *messagep, M_DEVBUF, M_WAITOK); + + err = add_scrn_saver(snake_saver); + if (err != 0) { + free(message, M_DEVBUF); + free(messagep, M_DEVBUF); + } + return err; } static int snake_saver_unload(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - current_saver = old_saver; - return 0; + int err; + + err = remove_scrn_saver(snake_saver); + if (err == 0) { + free(message, M_DEVBUF); + free(messagep, M_DEVBUF); + } + return err; } int diff --git a/sys/modules/syscons/star/Makefile b/sys/modules/syscons/star/Makefile index 39aa7dd4b9b8..aa3ed6aeb96a 100644 --- a/sys/modules/syscons/star/Makefile +++ b/sys/modules/syscons/star/Makefile @@ -1,9 +1,9 @@ -# $Id$ +# $Id: Makefile,v 1.5 1997/02/22 12:49:21 peter Exp $ KMOD= star_saver_mod SRCS= star_saver.c NOMAN= -CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys +CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys .include diff --git a/sys/modules/syscons/star/star_saver.c b/sys/modules/syscons/star/star_saver.c index 465c493a3dcf..d025b16afdba 100644 --- a/sys/modules/syscons/star/star_saver.c +++ b/sys/modules/syscons/star/star_saver.c @@ -25,26 +25,22 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: star_saver.c,v 1.10 1997/02/22 12:49:22 peter Exp $ + * $Id: star_saver.c,v 1.11 1997/04/06 11:07:01 dufault Exp $ */ #include #include -#include #include #include #include -#include #include +#include -#include "saver.h" +#include MOD_MISC(star_saver); -void (*current_saver)(int blank); -void (*old_saver)(int blank); - #define NUM_STARS 50 /* @@ -62,7 +58,7 @@ star_saver(int blank) static u_short stars[NUM_STARS][2]; if (blank) { - if (!scrn_blanked) { + if (scrn_blanked <= 0) { scrn_blanked = 1; fillw((FG_LIGHTGREY|BG_BLACK)<<8|scr_map[0x20], Crtat, scp->xsize * scp->ysize); @@ -83,11 +79,9 @@ star_saver(int blank) } } else { - if (scrn_blanked) { + if (scrn_blanked > 0) { set_border(scp->border); scrn_blanked = 0; - scp->start = 0; - scp->end = scp->xsize * scp->ysize; } } } @@ -95,18 +89,13 @@ star_saver(int blank) static int star_saver_load(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - old_saver = current_saver; - current_saver = star_saver; - return 0; + return add_scrn_saver(star_saver); } static int star_saver_unload(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - current_saver = old_saver; - return 0; + return remove_scrn_saver(star_saver); } int