[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 20:43:20
Message-ID: 20050405204320.9DAB5492 () office ! kde ! org
[Download RAW message or body]
CVS commit by adridg:
Factor out the writes to /proc/acpi/sleep
M +33 -33 acpi_helper.cpp 1.16
--- kdeutils/klaptopdaemon/acpi_helper.cpp #1.15:1.16
@@ -49,14 +49,20 @@
#define MAX_TOSHIBA_STRING 64
-int
-main(int argc, char **argv)
+int write_to_proc_sleep(int value)
{
+ char tmp[256];
int fd;
- int i;
- int toshibalcd_val = 0;
- ::close(0); // we're setuid - this is just in case
- for (i = 1; i < argc; i++)
- if (strcmp(argv[i], "--suspend") == 0 || strcmp(argv[i], "-suspend") == 0) {
+ /* Sanity check value */
+ if ((value<1) || (value>4))
+ exit(1);
+
+ /* Convert value to string */
+ snprintf(tmp,sizeof(tmp),"%d",value);
+ tmp[sizeof(tmp)-1]=0;
+
+ /* Broken imitation of typing sync <enter> sync <enter>
+ on the command line before shutting down the machine;
+ part of the lore of UNIX machines. */
sync();
sync();
@@ -64,40 +70,34 @@ main(int argc, char **argv)
if (fd < 0)
exit(1);
- write(fd, "3", 1);
+ write(fd, tmp, 1);
close(fd);
setuid(getuid()); // drop all priority asap
exit(0);
+}
+
+
+int
+main(int argc, char **argv)
+{
+ int fd;
+ int i;
+ int toshibalcd_val = 0;
+
+ ::close(0); // we're setuid - this is just in case
+ for (i = 1; i < argc; i++)
+ if (strcmp(argv[i], "--suspend") == 0 || strcmp(argv[i], "-suspend") == 0) {
+ write_to_proc_sleep(3);
+ exit(0);
} else
if (strcmp(argv[i], "--standby") == 0 || strcmp(argv[i], "-standby") == 0) {
- sync();
- sync();
- fd = open("/proc/acpi/sleep", O_RDWR);
- if (fd < 0)
- exit(1);
- write(fd, "1", 1);
- close(fd);
- setuid(getuid()); // drop all priority asap
+ write_to_proc_sleep(1);
exit(0);
} else
if (strcmp(argv[i], "--standby2") == 0 || strcmp(argv[i], "-standby2") == 0) {
- sync();
- sync();
- fd = open("/proc/acpi/sleep", O_RDWR);
- if (fd < 0)
- exit(1);
- write(fd, "2", 1);
- close(fd);
- setuid(getuid()); // drop all priority asap
+ write_to_proc_sleep(2);
exit(0);
} else
if (strcmp(argv[i], "--hibernate") == 0 || strcmp(argv[i], "-hibernate") == 0) {
- sync();
- sync();
- fd = open("/proc/acpi/sleep", O_RDWR);
- if (fd < 0)
- exit(1);
- write(fd, "4", 1);
- close(fd);
- setuid(getuid()); // drop all priority asap
+ write_to_proc_sleep(4);
exit(0);
} else
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic