+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");
+ }
+}
+
+