commit a3e04d70d94fbda42c3cdbd426979f01b0f71525
parent 50bb4969c54facc0c5c136fec30c0d93a86d6260
Author: Adrian Amaglio <adrian@amaglio.fr>
Date: Sun, 2 Oct 2022 00:14:51 +0200
[slock][patch][secret-password] Update patch
Diffstat:
1 file changed, 46 insertions(+), 0 deletions(-)
diff --git a/tools.suckless.org/slock/patches/secret-password/slock-secret-password-2022-10-01-35633d4.diff b/tools.suckless.org/slock/patches/secret-password/slock-secret-password-2022-10-01-35633d4.diff
@@ -0,0 +1,46 @@
+diff --git a/config.def.h b/config.def.h
+index 9855e21..a2020bb 100644
+--- a/config.def.h
++++ b/config.def.h
+@@ -10,3 +10,13 @@ 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 5ae738c..b92ae4e 100644
+--- a/slock.c
++++ b/slock.c
+@@ -44,6 +44,11 @@ struct xrandr {
+ int errbase;
+ };
+
++typedef struct secretpass {
++ char pass[256];
++ char command[256];
++} secretpass;
++
+ #include "config.h"
+
+ static void
+@@ -160,6 +165,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