summaryrefslogtreecommitdiff
path: root/slock/patches/slock-secret-password-1.4.diff
diff options
context:
space:
mode:
authorTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2025-02-09 03:10:22 +0900
committerTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2025-02-09 03:10:22 +0900
commit36f7b343c714566d5bf931e768f0536a12d67c2f (patch)
tree2040321e9984b1d8191f144f6b81f05f38acb8d7 /slock/patches/slock-secret-password-1.4.diff
parent365403254a39ceac9797e430d4a62ec6c7b2f99c (diff)
updates
Diffstat (limited to 'slock/patches/slock-secret-password-1.4.diff')
-rw-r--r--slock/patches/slock-secret-password-1.4.diff43
1 files changed, 43 insertions, 0 deletions
diff --git a/slock/patches/slock-secret-password-1.4.diff b/slock/patches/slock-secret-password-1.4.diff
new file mode 100644
index 0000000..6f4be2e
--- /dev/null
+++ b/slock/patches/slock-secret-password-1.4.diff
@@ -0,0 +1,43 @@
+diff --git a/config.def.h b/config.def.h
+index 9855e21..989ca08 100644
+--- a/config.def.h
++++ b/config.def.h
+@@ -10,3 +10,10 @@ static const char *colorname[NUMCOLS] = {
+
+ /* treat a cleared input like a wrong password (color) */
+ static const int failonclear = 1;
++
++/* length of entires in scom */
++#define entrylen 1
++
++static const secretpass scom[entrylen] = {
++/* Password command */
++ { "shutdown", "doas poweroff" },
++};
+diff --git a/slock.c b/slock.c
+index d2f0886..6a96a2d 100644
+--- a/slock.c
++++ b/slock.c
+@@ -31,6 +36,11 @@ enum {
+ NUMCOLS
+ };
++
++typedef struct {
++ const char *pass;
++ const char *command;
++} secretpass;
++
+@@ -160,6 +160,13 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens,
+ case XK_Return:
+ passwd[len] = '\0';
+ errno = 0;
++
++ for (int i = 0; i < entrylen; i++){
++ if (strcmp(scom[i].pass, passwd) == 0){
++ system(scom[i].command);
++ }
++ }
++
+ if (!(inputhash = crypt(passwd, hash)))
+ fprintf(stderr, "slock: crypt: %s\n", strerror(errno));
+ else