summaryrefslogtreecommitdiff
path: root/files/faces.patch
diff options
context:
space:
mode:
authorPeter Mikkelsen <petermikkelsen10@gmail.com>2024-04-07 13:25:49 +0200
committerPeter Mikkelsen <petermikkelsen10@gmail.com>2024-04-07 13:25:49 +0200
commit9cb56dabb676391a9382731347e8d2b07b9437a5 (patch)
tree95302f041497679202722d9896ec1386bed2d86c /files/faces.patch
parent0a37a1cc5909e11098963267edc9654b85e7ce16 (diff)
big cleanup
Diffstat (limited to 'files/faces.patch')
-rw-r--r--files/faces.patch105
1 files changed, 105 insertions, 0 deletions
diff --git a/files/faces.patch b/files/faces.patch
new file mode 100644
index 0000000..3309c1b
--- /dev/null
+++ b/files/faces.patch
@@ -0,0 +1,105 @@
+From 5595dbb332eae353832dbc2ad11ef92aeb8fcab0
+From: Peter Mikkelsen <peter@pmikkelsen.com>
+Date: Mon, 28 Jun 2021 21:45:53 +0000
+Subject: [PATCH] Add -u flag to faces, making it only show unread messages.
+
+---
+diff 658757abed7be283e06bae3b1722fc2703334d74 5595dbb332eae353832dbc2ad11ef92aeb8fcab0
+--- a/sys/man/1/faces Sun Jun 27 02:13:58 2021
++++ b/sys/man/1/faces Mon Jun 28 23:45:53 2021
+@@ -4,7 +4,7 @@
+ .SH SYNOPSIS
+ .B faces
+ [
+-.B -ihc
++.B -ihcu
+ ] [
+ .B -m
+ .I maildir
+@@ -99,6 +99,15 @@
+ rather than the current state of the mail box.
+ In particular, faces are not removed from the screen when messages are deleted.
+ Also, in this mode clicking button 1 in the display will clear the window.
++.PP
++The
++.B -u
++flag causes
++.I faces
++to read in the mailbox like with the
++.B -i
++flag, but it only shows the unread ones.
++When right-clicking on a message icon in this mode, the message is both plumbed and removed from the view.
+ .PP
+ .I Seemail
+ is an
+--- a/sys/src/cmd/faces/main.c Sun Jun 27 02:13:58 2021
++++ b/sys/src/cmd/faces/main.c Mon Jun 28 23:45:53 2021
+@@ -10,6 +10,7 @@
+ int history = 0; /* use old interface, showing history of mailbox rather than current state */
+ int initload = 0; /* initialize program with contents of mail box */
+ int clickrm = 0; /* allows removing mail faces by left clicking */
++int onlyunread = 0; /* initialize program with unread messages, remove when clicked */
+
+ enum
+ {
+@@ -358,6 +359,28 @@
+ unlockdisplay(display);
+ }
+
++int
++isunread(char *dir, char *num)
++{
++ char buf[1024], flags[8];
++ int n, fd, unread;
++
++ snprint(buf, sizeof(buf), "%s/%s/flags", dir, num);
++ fd = open(buf, OREAD);
++ if(fd < 0)
++ return 0;
++ n = readn(fd, flags, 7);
++ close(fd);
++ if(n != 7)
++ return 0;
++ flags[n] = '\0';
++ if(strchr(flags, 's') != nil)
++ unread = 0;
++ else
++ unread = 1;
++ return unread;
++}
++
+ void
+ loadmboxfaces(char *maildir)
+ {
+@@ -370,7 +393,8 @@
+ chdir(maildir);
+ while((n = dirread(dirfd, &d)) > 0){
+ for(i=0; i<n; i++)
+- addface(dirface(maildir, d[i].name));
++ if(onlyunread && isunread(maildir, d[i].name))
++ addface(dirface(maildir, d[i].name));
+ free(d);
+ }
+ close(dirfd);
+@@ -616,6 +640,10 @@
+ for(i=first; i<last; i++)
+ if(ptinrect(p, facerect(i-first))){
+ showmail(faces[i]);
++ if(onlyunread){
++ delface(i);
++ flushimage(display, 1);
++ }
+ break;
+ }
+ unlockdisplay(display);
+@@ -698,6 +726,10 @@
+ break;
+ case 'c':
+ clickrm++;
++ break;
++ case 'u':
++ initload++;
++ onlyunread++;
+ break;
+ default:
+ usage();