diff options
author | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2024-04-07 13:25:49 +0200 |
---|---|---|
committer | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2024-04-07 13:25:49 +0200 |
commit | 9cb56dabb676391a9382731347e8d2b07b9437a5 (patch) | |
tree | 95302f041497679202722d9896ec1386bed2d86c /files/faces.patch | |
parent | 0a37a1cc5909e11098963267edc9654b85e7ce16 (diff) |
big cleanup
Diffstat (limited to 'files/faces.patch')
-rw-r--r-- | files/faces.patch | 105 |
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(); |