[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdeutils/klaptopdaemon
From: Adriaan de Groot <groot () kde ! org>
Date: 2005-04-05 21:03:47
Message-ID: 20050405210347.4C7D4492 () office ! kde ! org
[Download RAW message or body]
CVS commit by adridg:
Factor out the code to run a helper script; this is prep-work for bug 93533
M +30 -13 acpi_helper.cpp 1.17
--- kdeutils/klaptopdaemon/acpi_helper.cpp #1.16:1.17
@@ -49,5 +49,8 @@
#define MAX_TOSHIBA_STRING 64
-int write_to_proc_sleep(int value)
+/* Write a value to /proc/acpi/sleep, where value may be between
+ 1 and 4 (whatever they mean). Does not return; calls exit(). */
+
+void write_to_proc_sleep(int value)
{
char tmp[256];
@@ -76,4 +79,29 @@ int write_to_proc_sleep(int value)
}
+/* Run the program @param path, if it exists and seems safe to do so.
+ Returns only if the program does not exist; if the program exists
+ and is unsafe, exit; if the program exists and is safe, run it
+ and never return. */
+void run_program(const char *path)
+{
+ struct stat sb;
+ int err;
+
+ if (!path) exit(1); /* Bad pointer */
+ if (path[0] != '/') exit(1); /* Not an absolute path */
+
+ if ((err = stat(path, &sb)) != 0 || sb.st_mode&S_IWOTH) {
+ if (err != 0) {
+ fprintf(stderr, "Can't find %s\n", path);
+ return;
+ } else {
+ fprintf(stderr, "%s is writeable by anyone - we don't trust \
it\n", path); + }
+ exit(1);
+ }
+ ::setuid(::geteuid()); // otherwise bash \
will throw it away + ::execl(path, NULL); // this is not KDE environment \
code + exit(0);
+}
int
@@ -103,16 +131,5 @@ main(int argc, char **argv)
} else
if (strcmp(argv[i], "--software-suspend") == 0 || strcmp(argv[i], \
"-software-suspend") == 0) {
- struct stat sb;
- int err;
- if ((err = stat("/usr/sbin/hibernate", &sb)) != 0 || \
sb.st_mode&S_IWOTH) {
- if (err != 0) {
- fprintf(stderr, "Can't find /usr/sbin/hibernate\n");
- } else {
- fprintf(stderr, "/usr/sbin/hibernate is writeable by \
anyone - we don't trust it\n");
- }
- exit(0);
- }
- ::setuid(::geteuid()); // otherwise \
bash will throw it away
- ::execl("/usr/sbin/hibernate", NULL); // this is not KDE \
environment code + run_program("/usr/sbin/hibernate");
exit(0);
} else
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic