X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/544bbb173f984ee034b67ae2d22c4fe884301dc9..2deca2a28ba6492fb3a4e4e7368a6f9752e44b68:/usr.bin/syscons/syscons.c diff --git a/usr.bin/syscons/syscons.c b/usr.bin/syscons/syscons.c index 0c2a79e1c6..9637d7b6ad 100644 --- a/usr.bin/syscons/syscons.c +++ b/usr.bin/syscons/syscons.c @@ -47,6 +47,7 @@ char *prgname; __BEGIN_DECLS int is_syscons __P((int)); void screensaver __P((char *)); +void screensavertype __P((char *)); void linemode __P((char *)); void keyrate __P((char *)); void keymap __P((char *)); @@ -75,11 +76,14 @@ int opt; prgname = argv[0]; if (!is_syscons(0)) exit(1); - while((opt = getopt(argc, argv, "s:m:r:k:f:t:F:S:vd")) != -1) + while((opt = getopt(argc, argv, "s:S:m:r:k:f:t:F:V:vd")) != -1) switch(opt) { case 's': screensaver(optarg); break; + case 'V': + screensavertype(optarg); + break; case 'm': linemode(optarg); break; @@ -150,6 +154,7 @@ usage(void) const char usagestr[] = {"\ Usage: syscons -v (be verbose)\n\ -s {TIME|off} (set screensaver timeout to TIME seconds)\n\ + -V {NAME|list} (set screensaver type or list available types\n\ -m {80x25|80x50} (set screen to 25 or 50 lines)\n\ -r DELAY.REPEAT (set keyboard delay & repeat rate)\n\ -r fast (set keyboard delay & repeat to fast)\n\ @@ -159,7 +164,7 @@ Usage: syscons -v (be verbose)\n\ -f SIZE FILE (load font file of size 8, 14 or 16)\n\ -t SCRNUM (switch to specified VT)\n\ -F NUM STRING (set function key NUM to send STRING)\n\ - -S SCRNMAP (load screen map file)\n\ + -S SCRNMAP (load screen map file)\n\ "}; fprintf(stderr, usagestr); } @@ -233,6 +238,46 @@ char *s1; } +void +screensavertype(opt) +char *opt; +{ +ssaver_t shaver; +int i, e; + + + if (!strcmp(opt, "list")) { + i = 0; + printf("available screen saver types:\n"); + do { + shaver.num = i; + e = ioctl(0, CONS_GSAVER, &shaver); + i ++; + if (e == 0) + printf("\t%d\t%s\n", shaver.num, shaver.name); + } while (e == 0); + if (e == -1 && errno != EIO) + perror("getting screensaver info"); + } else { + i = 0; + do { + shaver.num = i; + e = ioctl(0, CONS_GSAVER, &shaver); + i ++; + if (e == 0 && !strcmp(opt, shaver.name)) { + if (ioctl(0, CONS_SSAVER, &shaver) == -1) + perror("setting screensaver type"); + return; + } + } while (e == 0); + if (e == -1 && errno != EIO) + perror("getting screensaver info"); + else + fprintf(stderr, "%s: No such screensaver\n", opt); + } +} + + void linemode(opt) char *opt;