summaryrefslogtreecommitdiffstats
path: root/driver/prefs.c
diff options
context:
space:
mode:
authorSimon Rettberg2020-12-02 08:35:55 +0100
committerSimon Rettberg2020-12-02 08:35:55 +0100
commite5319b91d163384ee22db077b2d37688d65646c9 (patch)
tree04acbf822516634814098b38a9878ffc1a55529d /driver/prefs.c
parentdriver/timers.c: fix flush_events() (diff)
parent5.44 (diff)
downloadxscreensaver-e5319b91d163384ee22db077b2d37688d65646c9.tar.gz
xscreensaver-e5319b91d163384ee22db077b2d37688d65646c9.tar.xz
xscreensaver-e5319b91d163384ee22db077b2d37688d65646c9.zip
Merge branch 'master' into openslx
Diffstat (limited to 'driver/prefs.c')
-rw-r--r--driver/prefs.c55
1 files changed, 30 insertions, 25 deletions
diff --git a/driver/prefs.c b/driver/prefs.c
index ec5583b..e5762ff 100644
--- a/driver/prefs.c
+++ b/driver/prefs.c
@@ -1,5 +1,5 @@
/* dotfile.c --- management of the ~/.xscreensaver file.
- * xscreensaver, Copyright (c) 1998-2018 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 1998-2020 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
@@ -136,33 +136,34 @@ init_file_name (void)
if (!file)
{
uid_t uid = getuid ();
- struct passwd *p = getpwuid (uid);
+ const char *home = getenv("HOME");
- if (i_am_a_nobody (uid))
- /* If we're running as nobody, then use root's .xscreensaver file
- (since ~root/.xscreensaver and ~nobody/.xscreensaver are likely
- to be different -- if we didn't do this, then xscreensaver-demo
- would appear to have no effect when the luser is running as root.)
- */
- uid = 0;
-
- p = getpwuid (uid);
-
- if (!p || !p->pw_name || !*p->pw_name)
- {
- fprintf (stderr, "%s: couldn't get user info of uid %d\n",
- blurb(), getuid ());
- file = "";
- }
- else if (!p->pw_dir || !*p->pw_dir)
+ if (i_am_a_nobody (uid) || !home || !*home)
{
- fprintf (stderr, "%s: couldn't get home directory of \"%s\"\n",
- blurb(), (p->pw_name ? p->pw_name : "???"));
- file = "";
+ /* If we're running as nobody, then use root's .xscreensaver file
+ (since ~root/.xscreensaver and ~nobody/.xscreensaver are likely
+ to be different -- if we didn't do this, then xscreensaver-demo
+ would appear to have no effect when the luser is running as root.)
+ */
+ struct passwd *p = getpwuid (uid);
+ uid = 0;
+ if (!p || !p->pw_name || !*p->pw_name)
+ {
+ fprintf (stderr, "%s: couldn't get user info of uid %d\n",
+ blurb(), getuid ());
+ }
+ else if (!p->pw_dir || !*p->pw_dir)
+ {
+ fprintf (stderr, "%s: couldn't get home directory of \"%s\"\n",
+ blurb(), (p->pw_name ? p->pw_name : "???"));
+ }
+ else
+ {
+ home = p->pw_dir;
+ }
}
- else
+ if (home && *home)
{
- const char *home = p->pw_dir;
const char *name = ".xscreensaver";
file = (char *) malloc(strlen(home) + strlen(name) + 2);
strcpy(file, home);
@@ -170,6 +171,10 @@ init_file_name (void)
strcat(file, "/");
strcat(file, name);
}
+ else
+ {
+ file = "";
+ }
}
if (file && *file)
@@ -1661,7 +1666,7 @@ stop_the_insanity (saver_preferences *p)
if (p->watchdog_timeout > 57000) p->watchdog_timeout = 57000; /* 57 secs */
if (p->pointer_hysteresis < 0) p->pointer_hysteresis = 0;
- if (p->pointer_hysteresis > 100) p->pointer_hysteresis = 100;
+/* if (p->pointer_hysteresis > 100) p->pointer_hysteresis = 100; */
if (p->auth_warning_slack < 0) p->auth_warning_slack = 0;
if (p->auth_warning_slack > 300) p->auth_warning_slack = 300;