Re: [Toybox] macOS sitrep

2018-12-04 Thread Rob Landley
On 12/4/18 7:06 PM, enh wrote:
> okay, so now toybox builds out of the box (with a custom .config) i
> added a bunch more stuff to my .config. the following were all
> painless:
> 
> ascii base64 basename cal cat catv chgrp chmod chown cksum clear cmp
> comm count cpio crc32 cut dirname dos2unix du echo egrep env expand
> factor false fgrep file flock fmt ftpget ftpput grep groups head help
> hexedit hostname iconv id kill killall5 link ln logname md5sum microcom
> mkdir mkfifo mktemp nc netcat nice nl nohup od paste patch printenv
> printf pwd pwdx readlink realpath renice rev rm rmdir sed seq setsid
> sha1sum sha224sum sha256sum sha384sum sha512sum sleep sort split strings
> tac tee timeout true truncate tty uname uniq unix2dos unlink usleep
> uudecode uuencode uuidgen w watch wc which who whoami xargs xxd yes

Could you send me your .config? I can check in a "make macos_defconfig".

> (i haven't even bothered trying anything from pending.)

If you get the urge for specific commands out of there, lemme know. I just
finished redoing test.c and I'm squinting at tftpd.c now (using a dhcp/bootp
thing at $DAYJOB)...

I'm aware android's building bc, dd, diff, expr, getfattr, gzip, lsof, modprobe,
more, stty, tar, tr, and traceroute. But most of that isn't low hanging fruit
for cleanup. Although I'm close on the compression side of gzip, and since
watch.c I think I know how to tackle less/more now (although I need to go _back_
to watch and add ansi color support, which I also need to do in grep although
_that's_ a genericiation of the -o logic), and getfattr _would_ be low hanging
fruit if I had any sort of test case for it (what files on ubuntu normally have
xattrs I can examine?) Last time I tried to tackle expr. I spent all the
time/energy I had reading a chunk of that pdf on the precedence climbing thing
and the window got buried and my machine eventually rebooted...

Mostly when I look at pending it's ls -lS toys/pending, but vi.c is a stub,
groupdel is part of the userdel/useradd/groupadd cluster, getfattr.c I haven't
got any real test cases for (what on ubuntu has attributes I can look at?),
ipcrm I've never really used (and it's in suite with ipcs, need to read up on
both), and that brings us to fold which is basically "not fmt".

Chipping away at it as I can...

Rob
___
Toybox mailing list
Toybox@lists.landley.net
http://lists.landley.net/listinfo.cgi/toybox-landley.net


Re: [Toybox] macOS sitrep

2018-12-04 Thread enh via Toybox
okay, so now toybox builds out of the box (with a custom .config) i
added a bunch more stuff to my .config. the following were all
painless:

ascii base64 basename cal cat catv chgrp chmod chown cksum clear cmp
comm count cpio crc32 cut dirname dos2unix du echo egrep env expand
factor false fgrep file flock fmt ftpget ftpput grep groups head help
hexedit hostname iconv id kill killall5 link ln logname md5sum microcom
mkdir mkfifo mktemp nc netcat nice nl nohup od paste patch printenv
printf pwd pwdx readlink realpath renice rev rm rmdir sed seq setsid
sha1sum sha224sum sha256sum sha384sum sha512sum sleep sort split strings
tac tee timeout true truncate tty uname uniq unix2dos unlink usleep
uudecode uuencode uuidgen w watch wc which who whoami xargs xxd yes

(i haven't even bothered trying anything from pending.)
On Fri, Nov 30, 2018 at 4:50 PM enh  wrote:
>
> On Fri, Nov 30, 2018 at 4:41 PM Rob Landley  wrote:
> >
> > On 11/30/18 4:46 PM, enh via Toybox wrote:
> > > so, if you merge this afternoon's patches, you can build toybox for
> > > macOS. with two provisos:
> > >
> > > 1. i'm only talking about a very limited .config, that's basically
> > > "the easy parts of the subset needed by the AOSP build". specifically:
> > >
> > > CONFIG_TOYBOX_ICONV=y
> > > CONFIG_TOYBOX_UTMPX=y
> > > CONFIG_TOYBOX_FORK=y
> > > CONFIG_BASENAME=y
> > > CONFIG_CAT=y
> > > CONFIG_CHMOD=y
> > > CONFIG_CMP=y
> > > CONFIG_COMM=y
> > > CONFIG_CUT=y
> > > CONFIG_DIRNAME=y
> > > CONFIG_DU=y
> > > CONFIG_ECHO=y
> > > CONFIG_FALSE=y
> > > CONFIG_FILE=y
> > > CONFIG_GREP=y
> > > CONFIG_EGREP=y
> > > CONFIG_FGREP=y
> > > CONFIG_HEAD=y
> > > CONFIG_ID=y
> > > CONFIG_WHOAMI=y
> > > CONFIG_LN=y
> > > CONFIG_MKDIR=y
> > > CONFIG_OD=y
> > > CONFIG_PASTE=y
> > > CONFIG_PATCH=y
> > > CONFIG_PWD=y
> > > CONFIG_RM=y
> > > CONFIG_RMDIR=y
> > > CONFIG_SED=y
> > > CONFIG_SLEEP=y
> > > CONFIG_SLEEP_FLOAT=y
> > > CONFIG_SORT=y
> > > CONFIG_SORT_BIG=y
> > > CONFIG_SORT_FLOAT=y
> > > CONFIG_TAIL_SEEK=y
> > > CONFIG_TEE=y
> > > CONFIG_TRUE=y
> > > CONFIG_UNAME=y
> > > CONFIG_UNIQ=y
> > > CONFIG_WC=y
> > > CONFIG_XARGS=y
> > > CONFIG_DOS2UNIX=y
> > > CONFIG_UNIX2DOS=y
> > > CONFIG_HELP=y
> > > CONFIG_HELP_EXTRAS=y
> > > CONFIG_READLINK=y
> > > CONFIG_REALPATH=y
> > > CONFIG_SETSID=y
> > > CONFIG_TIMEOUT=y
> > > CONFIG_XXD=y
> > > CONFIG_HOSTNAME=y
> > > CONFIG_MD5SUM=y
> > > CONFIG_SHA1SUM=y
> > > CONFIG_MKTEMP=y
> > > CONFIG_TOYBOX=y
> > > CONFIG_TOYBOX_SUID=y
> > > CONFIG_TOYBOX_LSM_NONE=y
> > > CONFIG_TOYBOX_FLOAT=y
> > > CONFIG_TOYBOX_HELP=y
> > > CONFIG_TOYBOX_HELP_DASHDASH=y
> > > CONFIG_TOYBOX_I18N=y
> >
> > Easiest thing might be to put that in a file and have a "make 
> > mac_defconfig"?
>
> up to you. if i'm the only user, it doesn't even matter. i'm guessing
> it's been years since the last person tried to build for macOS, so
> it'll probably be years before the next one too.
>
> > > i'm not sure what we want to do about that long-term. add `depends on
> > > TOYBOX_LINUX` to all the stuff like dmesg that's never going to work?
> > > (and probably to the "too much work for anyone to care" stuff like ps
> > > too.)
> >
> > I might reopen the ps can of worms for bsd, or if darwin became an actual
> > runnable thing, but probably not for a proprietary OS. :)
> >
> > > 2. lib/getmountlist.c doesn't compile. i have #ifndef __APPLE__ ...
> > > #endif around the whole file locally. macos seems to have a wholly
> > > different API, getmntinfo(3).
> >
> > Thank you _ever_ so much, Posix.
> >
> > > if/when i get around to porting toybox
> > > stat(1) to macOS i might have to fix this properly, but for now i'm
> > > punting. (df isn't used by AOSP and mount/umount seem to be in the
> > > "probably not worth it" territory mentioned in #1.)
> >
> > I ranted about that in the posix section of roadmap.html. I tried to figure 
> > out
> > a proper way to do it and there isn't one. But there's a reason it _doesn't_
> > return struct mntent, and that's also why I broke commas.c out from that 
> > file
> > when it started getting more generically used.
> >
> > It might be best to just move the remaining 3 mntent functions into 
> > portability.c...
>
> oops, speaking of which i've just sent you one more patch removing
> unneeded macOS < 10.7 workarounds.
>
> i'm heading home now, but i can move these into lib/portability.c on
> monday if you don't beat me to it over the weekend.
>
> > > things like struct stat and struct statfs turn out to be quite
> > > different on macOS. but that's a problem for another day.
> > > __
> >
> > In theory, stat has a posix subset. Dunno if dirtree adheres to it, though. 
> > (But
> > openat() is posix-2008!) And there's a posix statvfs too:
> >
> > http://pubs.opengroup.org/onlinepubs/009604599/basedefs/sys/statvfs.h.html
> >
> > I've tried not to be _gratuitously_ linux-specific. But there are large 
> > chunks
> > of things that just haven't got portable APIs. :(
> >
> > Rob
__

[Toybox] [PATCH] macOS: iconv(1) needs libiconv on the mac.

2018-12-04 Thread enh via Toybox
---
 scripts/make.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/make.sh b/scripts/make.sh
index 640dcbed..45d6f1ca 100755
--- a/scripts/make.sh
+++ b/scripts/make.sh
@@ -112,7 +112,7 @@ then
   # for it.

   > generated/optlibs.dat
-  for i in util crypt m resolv selinux smack attr rt crypto z log
+  for i in util crypt m resolv selinux smack attr rt crypto z log iconv
   do
 echo "int main(int argc, char *argv[]) {return 0;}" | \
 ${CROSS_COMPILE}${CC} $CFLAGS $LDFLAGS -xc - -o
generated/libprobe $LDASNEEDED -l$i > /dev/null 2>/dev/null &&
-- 
2.20.0.rc1.387.gf8505762e3-goog
From 76804eb5752d25547c38d13f57487723695b7498 Mon Sep 17 00:00:00 2001
From: Elliott Hughes 
Date: Tue, 4 Dec 2018 16:31:14 -0800
Subject: [PATCH] macOS: iconv(1) needs libiconv on the mac.

---
 scripts/make.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/make.sh b/scripts/make.sh
index 640dcbed..45d6f1ca 100755
--- a/scripts/make.sh
+++ b/scripts/make.sh
@@ -112,7 +112,7 @@ then
   # for it.
 
   > generated/optlibs.dat
-  for i in util crypt m resolv selinux smack attr rt crypto z log
+  for i in util crypt m resolv selinux smack attr rt crypto z log iconv
   do
 echo "int main(int argc, char *argv[]) {return 0;}" | \
 ${CROSS_COMPILE}${CC} $CFLAGS $LDFLAGS -xc - -o generated/libprobe $LDASNEEDED -l$i > /dev/null 2>/dev/null &&
-- 
2.20.0.rc1.387.gf8505762e3-goog

___
Toybox mailing list
Toybox@lists.landley.net
http://lists.landley.net/listinfo.cgi/toybox-landley.net


Re: [Toybox] [PATCH] Clean up some --help formatting.

2018-12-04 Thread enh via Toybox
On Tue, Dec 4, 2018 at 3:10 PM Rob Landley  wrote:
>
> On 12/4/18 4:48 PM, enh via Toybox wrote:
> > since rob's so responsive right now, this seems like the best
> > opportunity there's ever been to stop the --help output irritating my
> > OCD on a daily basis!
> >
> > i did choose to just ignore everything in pending for now, though.
>
> I'm in the process of doing the FLAG() conversion, and git isn't smart enough
> for "git am" to know what to do wit the patch applies without conflict. The 
> file
> has to be _unmodified_. Grumble.

ah, sorry... i thought you were doing that a few at a time, and
committing as you go.

> Sigh: git diff > xxx; git checkout -f; git am thingy.patch; patch -p1 -i xxx
>
> And I have to fix up su.c and cpio.c here, but your patch is in.

thanks!

> Rob
___
Toybox mailing list
Toybox@lists.landley.net
http://lists.landley.net/listinfo.cgi/toybox-landley.net


Re: [Toybox] [PATCH] Clean up some --help formatting.

2018-12-04 Thread Rob Landley
On 12/4/18 4:48 PM, enh via Toybox wrote:
> since rob's so responsive right now, this seems like the best
> opportunity there's ever been to stop the --help output irritating my
> OCD on a daily basis!
> 
> i did choose to just ignore everything in pending for now, though.

I'm in the process of doing the FLAG() conversion, and git isn't smart enough
for "git am" to know what to do wit the patch applies without conflict. The file
has to be _unmodified_. Grumble.

Sigh: git diff > xxx; git checkout -f; git am thingy.patch; patch -p1 -i xxx

And I have to fix up su.c and cpio.c here, but your patch is in.

Rob
___
Toybox mailing list
Toybox@lists.landley.net
http://lists.landley.net/listinfo.cgi/toybox-landley.net


Re: [Toybox] [PATCH] Clean up some --help formatting.

2018-12-04 Thread Rob Landley
On 12/4/18 4:35 PM, enh via Toybox wrote:
> Be consistent about upper versus lower case. (Upper seems to have the
> majority, so I went with that, though I'm happy to provide the opposite
> patch as long as we're consistent!)
> 
> Be consistent about using \t. (Though saving a few bytes seems like it
> might be better done in the code that generates help.h rather than
> directly in the source, since tabs make careful ASCII art layout hard
> enough that we regularly have things misaligned.)

My todo item here is when I get deflate properly merged into lib and gzip
promoted, I should have the option to compress the help text and do a "zcat |
cut" thing inside help.c to go "output the 17th null terminated string".

(I vaguely recall busybox did something like back when I was on that project, I
just haven't had a compression engine in the build yet.)

Won't help standalone builds, but it does help the "common case" of one big
binary you fit in an initramfs. And that should make "run of spaces" vs "tabs"
be basically a wash.

Rob
___
Toybox mailing list
Toybox@lists.landley.net
http://lists.landley.net/listinfo.cgi/toybox-landley.net


Re: [Toybox] [PATCH] Clean up some --help formatting.

2018-12-04 Thread enh via Toybox
since rob's so responsive right now, this seems like the best
opportunity there's ever been to stop the --help output irritating my
OCD on a daily basis!

i did choose to just ignore everything in pending for now, though.
On Tue, Dec 4, 2018 at 2:35 PM enh  wrote:
>
> Be consistent about upper versus lower case. (Upper seems to have the
> majority, so I went with that, though I'm happy to provide the opposite
> patch as long as we're consistent!)
>
> Be consistent about using \t. (Though saving a few bytes seems like it
> might be better done in the code that generates help.h rather than
> directly in the source, since tabs make careful ASCII art layout hard
> enough that we regularly have things misaligned.)
>
> Remove trailing periods (most of which seem to have been added by me).
>
> Always use the US "human readable" rather than my British
> "human-readable", and be more consistent about declaring whether we're
> showing multiples of 1000 or 1024.
>
> Just say "verbose" rather than adding a useless "mode" or "output".
> ---
>  toys/android/log.c |  4 ++--
>  toys/android/restorecon.c  | 10 +-
>  toys/example/demo_number.c |  2 +-
>  toys/lsb/dmesg.c   |  2 +-
>  toys/lsb/hostname.c| 10 +-
>  toys/lsb/killall.c | 10 +-
>  toys/lsb/md5sum.c  |  4 ++--
>  toys/lsb/mount.c   | 14 +++---
>  toys/lsb/pidof.c   |  4 ++--
>  toys/lsb/su.c  |  8 
>  toys/lsb/umount.c  |  8 
>  toys/net/microcom.c|  2 +-
>  toys/net/netcat.c  | 14 +++---
>  toys/net/netstat.c | 18 +-
>  toys/other/acpi.c  | 10 +-
>  toys/other/base64.c|  6 +++---
>  toys/other/bzcat.c | 10 +-
>  toys/other/chcon.c |  6 +++---
>  toys/other/fmt.c   |  2 +-
>  toys/other/free.c  |  2 +-
>  toys/other/fsfreeze.c  |  4 ++--
>  toys/other/makedevs.c  |  2 +-
>  toys/other/mkpasswd.c  |  4 ++--
>  toys/other/nsenter.c   |  6 +++---
>  toys/other/readlink.c  | 10 +-
>  toys/other/stat.c  |  2 +-
>  toys/other/uptime.c|  2 +-
>  toys/other/watch.c |  8 
>  toys/pending/stty.c|  4 ++--
>  toys/posix/basename.c  |  4 ++--
>  toys/posix/chgrp.c | 14 +++---
>  toys/posix/cmp.c   |  4 ++--
>  toys/posix/comm.c  |  6 +++---
>  toys/posix/cp.c| 34 +-
>  toys/posix/cpio.c  | 14 +++---
>  toys/posix/cut.c   | 16 
>  toys/posix/df.c|  4 ++--
>  toys/posix/du.c| 20 ++--
>  toys/posix/echo.c  | 22 +++---
>  toys/posix/file.c  |  4 ++--
>  toys/posix/grep.c  |  2 +-
>  toys/posix/iconv.c |  4 ++--
>  toys/posix/id.c|  2 +-
>  toys/posix/kill.c  |  2 +-
>  toys/posix/mkdir.c |  8 
>  toys/posix/nl.c|  4 ++--
>  toys/posix/paste.c |  4 ++--
>  toys/posix/patch.c |  4 ++--
>  toys/posix/ps.c| 10 +-
>  toys/posix/pwd.c   |  4 ++--
>  toys/posix/rm.c|  6 +++---
>  toys/posix/sed.c   |  4 ++--
>  toys/posix/sort.c  | 30 +++---
>  toys/posix/tail.c  |  6 +++---
>  toys/posix/tee.c   |  4 ++--
>  toys/posix/time.c  |  4 ++--
>  toys/posix/touch.c | 14 +++---
>  toys/posix/tty.c   |  2 +-
>  toys/posix/uniq.c  | 16 
>  toys/posix/uudecode.c  |  2 +-
>  toys/posix/uuencode.c  |  2 +-
>  toys/posix/wc.c|  8 
>  62 files changed, 236 insertions(+), 236 deletions(-)
___
Toybox mailing list
Toybox@lists.landley.net
http://lists.landley.net/listinfo.cgi/toybox-landley.net


[Toybox] [PATCH] Clean up some --help formatting.

2018-12-04 Thread enh via Toybox
Be consistent about upper versus lower case. (Upper seems to have the
majority, so I went with that, though I'm happy to provide the opposite
patch as long as we're consistent!)

Be consistent about using \t. (Though saving a few bytes seems like it
might be better done in the code that generates help.h rather than
directly in the source, since tabs make careful ASCII art layout hard
enough that we regularly have things misaligned.)

Remove trailing periods (most of which seem to have been added by me).

Always use the US "human readable" rather than my British
"human-readable", and be more consistent about declaring whether we're
showing multiples of 1000 or 1024.

Just say "verbose" rather than adding a useless "mode" or "output".
---
 toys/android/log.c |  4 ++--
 toys/android/restorecon.c  | 10 +-
 toys/example/demo_number.c |  2 +-
 toys/lsb/dmesg.c   |  2 +-
 toys/lsb/hostname.c| 10 +-
 toys/lsb/killall.c | 10 +-
 toys/lsb/md5sum.c  |  4 ++--
 toys/lsb/mount.c   | 14 +++---
 toys/lsb/pidof.c   |  4 ++--
 toys/lsb/su.c  |  8 
 toys/lsb/umount.c  |  8 
 toys/net/microcom.c|  2 +-
 toys/net/netcat.c  | 14 +++---
 toys/net/netstat.c | 18 +-
 toys/other/acpi.c  | 10 +-
 toys/other/base64.c|  6 +++---
 toys/other/bzcat.c | 10 +-
 toys/other/chcon.c |  6 +++---
 toys/other/fmt.c   |  2 +-
 toys/other/free.c  |  2 +-
 toys/other/fsfreeze.c  |  4 ++--
 toys/other/makedevs.c  |  2 +-
 toys/other/mkpasswd.c  |  4 ++--
 toys/other/nsenter.c   |  6 +++---
 toys/other/readlink.c  | 10 +-
 toys/other/stat.c  |  2 +-
 toys/other/uptime.c|  2 +-
 toys/other/watch.c |  8 
 toys/pending/stty.c|  4 ++--
 toys/posix/basename.c  |  4 ++--
 toys/posix/chgrp.c | 14 +++---
 toys/posix/cmp.c   |  4 ++--
 toys/posix/comm.c  |  6 +++---
 toys/posix/cp.c| 34 +-
 toys/posix/cpio.c  | 14 +++---
 toys/posix/cut.c   | 16 
 toys/posix/df.c|  4 ++--
 toys/posix/du.c| 20 ++--
 toys/posix/echo.c  | 22 +++---
 toys/posix/file.c  |  4 ++--
 toys/posix/grep.c  |  2 +-
 toys/posix/iconv.c |  4 ++--
 toys/posix/id.c|  2 +-
 toys/posix/kill.c  |  2 +-
 toys/posix/mkdir.c |  8 
 toys/posix/nl.c|  4 ++--
 toys/posix/paste.c |  4 ++--
 toys/posix/patch.c |  4 ++--
 toys/posix/ps.c| 10 +-
 toys/posix/pwd.c   |  4 ++--
 toys/posix/rm.c|  6 +++---
 toys/posix/sed.c   |  4 ++--
 toys/posix/sort.c  | 30 +++---
 toys/posix/tail.c  |  6 +++---
 toys/posix/tee.c   |  4 ++--
 toys/posix/time.c  |  4 ++--
 toys/posix/touch.c | 14 +++---
 toys/posix/tty.c   |  2 +-
 toys/posix/uniq.c  | 16 
 toys/posix/uudecode.c  |  2 +-
 toys/posix/uuencode.c  |  2 +-
 toys/posix/wc.c|  8 
 62 files changed, 236 insertions(+), 236 deletions(-)
From b144367867625d753ccdd44be6313beb45a81d9d Mon Sep 17 00:00:00 2001
From: Elliott Hughes 
Date: Tue, 4 Dec 2018 14:22:12 -0800
Subject: [PATCH] Clean up some --help formatting.

Be consistent about upper versus lower case. (Upper seems to have the
majority, so I went with that, though I'm happy to provide the opposite
patch as long as we're consistent!)

Be consistent about using \t. (Though saving a few bytes seems like it
might be better done in the code that generates help.h rather than
directly in the source, since tabs make careful ASCII art layout hard
enough that we regularly have things misaligned.)

Remove trailing periods (most of which seem to have been added by me).

Always use the US "human readable" rather than my British
"human-readable", and be more consistent about declaring whether we're
showing multiples of 1000 or 1024.

Just say "verbose" rather than adding a useless "mode" or "output".
---
 toys/android/log.c |  4 ++--
 toys/android/restorecon.c  | 10 +-
 toys/example/demo_number.c |  2 +-
 toys/lsb/dmesg.c   |  2 +-
 toys/lsb/hostname.c| 10 +-
 toys/lsb/killall.c | 10 +-
 toys/lsb/md5sum.c  |  4 ++--
 toys/lsb/mount.c   | 14 +++---
 toys/lsb/pidof.c   |  4 ++--
 toys/lsb/su.c  |  8 
 toys/lsb/umount.c  |  8 
 toys/net/microcom.c|  2 +-
 toys/net/netcat.c  | 14 +++---
 toys/net/netstat.c | 18 +-
 toys/other/acpi.c  | 10 +-
 toys/other/base64.c|  6 +++---
 toys/other/bzcat.c

Re: [Toybox] [PATCH] macOS: move getmountlist.c functions into portability.c.

2018-12-04 Thread Rob Landley
On 12/4/18 3:34 PM, enh via Toybox wrote:
> it'll fail to build if you actually try to build a toy that needs these :-)
> On Tue, Dec 4, 2018 at 1:28 PM Reverend Homer  wrote:

Oddy enough for that one I got your reply, but not Revend Homer's, and going
through the spam filter (about 35 things from the buildroot list and such had
wound up in there since I last checked)... still didn't find it.

I suspect gmail did the "refuse delivery" thing, except I didn't get unsubcribed
from the list again? (Does it have a third "accept delivery but discard and not
even put it in the spam folder" option?)

Wheee,

Rob
___
Toybox mailing list
Toybox@lists.landley.net
http://lists.landley.net/listinfo.cgi/toybox-landley.net


Re: [Toybox] [PATCH] macOS: move getmountlist.c functions into portability.c.

2018-12-04 Thread enh via Toybox
it'll fail to build if you actually try to build a toy that needs these :-)
On Tue, Dec 4, 2018 at 1:28 PM Reverend Homer  wrote:
>
>
> On 04/12/2018 23:48, enh via Toybox wrote:
> > <...>
> > +
> > +// Get a linked list of mount points, with stat information.
> > +#ifdef __APPLE__
> > +
> > +// Not implemented for macOS.
> > +// See 's getmntinfo(3) for the BSD API.
> > +
>
>
> Shouldn't there be some warning?
>
>
> R.H.
>
>
> > +#else
> > +
> > +#include 
> > +
> > +static void octal_deslash(char *s)
> > +{
> > +  char *o = s;
> > +
> > +  while (*s) {
> > +if (*s == '\\') {
> > +  int i, oct = 0;
> > +
> > +  for (i = 1; i < 4; i++) {
> > +if (!isdigit(s[i])) break;
> > +oct = (oct<<3)+s[i]-'0';
> > +  }
> > +  if (i == 4) {
> > +*o++ = oct;
> > +s += i;
> > +continue;
> > +  }
> > +}
> > +*o++ = *s++;
> > +  }
> > +
> > +  *o = 0;
> > +}
> > +
> > +// Check if this type matches list.
> > +// Odd syntax: typelist all yes = if any, typelist all no = if none.
> > +
> > +int mountlist_istype(struct mtab_list *ml, char *typelist)
> > +{
> > +  int len, skip;
> > +  char *t;
> > +
> > +  if (!typelist) return 1;
> > +
> > +  skip = strncmp(typelist, "no", 2);
> > +
> > +  for (;;) {
> > +if (!(t = comma_iterate(&typelist, &len))) break;
> > +if (!skip) {
> > +  // If one -t starts with "no", the rest must too
> > +  if (strncmp(t, "no", 2)) error_exit("bad typelist");
> > +  if (!strncmp(t+2, ml->type, len-2)) {
> > +skip = 1;
> > +break;
> > +  }
> > +} else if (!strncmp(t, ml->type, len) && !ml->type[len]) {
> > +  skip = 0;
> > +  break;
> > +}
> > +  }
> > +
> > +  return !skip;
> > +}
> > +
> > +// Get list of mounted filesystems, including stat and statvfs info.
> > +// Returns a reversed list, which is good for finding overmounts and such.
> > +
> > +struct mtab_list *xgetmountlist(char *path)
> > +{
> > +  struct mtab_list *mtlist = 0, *mt;
> > +  struct mntent *me;
> > +  FILE *fp;
> > +  char *p = path ? path : "/proc/mounts";
> > +
> > +  if (!(fp = setmntent(p, "r"))) perror_exit("bad %s", p);
> > +
> > +  // The "test" part of the loop is done before the first time through and
> > +  // again after each "increment", so putting the actual load there avoids
> > +  // duplicating it. If the load was NULL, the loop stops.
> > +
> > +  while ((me = getmntent(fp))) {
> > +mt = xzalloc(sizeof(struct mtab_list) + strlen(me->mnt_fsname) +
> > +  strlen(me->mnt_dir) + strlen(me->mnt_type) + strlen(me->mnt_opts) + 
> > 4);
> > +dlist_add_nomalloc((void *)&mtlist, (void *)mt);
> > +
> > +// Collect details about mounted filesystem
> > +// Don't report errors, just leave data zeroed
> > +if (!path) {
> > +  stat(me->mnt_dir, &(mt->stat));
> > +  statvfs(me->mnt_dir, &(mt->statvfs));
> > +}
> > +
> > +// Remember information from /proc/mounts
> > +mt->dir = stpcpy(mt->type, me->mnt_type)+1;
> > +mt->device = stpcpy(mt->dir, me->mnt_dir)+1;
> > +mt->opts = stpcpy(mt->device, me->mnt_fsname)+1;
> > +strcpy(mt->opts, me->mnt_opts);
> > +
> > +octal_deslash(mt->dir);
> > +octal_deslash(mt->device);
> > +  }
> > +  endmntent(fp);
> > +
> > +  return mtlist;
> > +}
> > +
> > +#endif
> >
> > ___
> > Toybox mailing list
> > Toybox@lists.landley.net
> > http://lists.landley.net/listinfo.cgi/toybox-landley.net
> ___
> Toybox mailing list
> Toybox@lists.landley.net
> http://lists.landley.net/listinfo.cgi/toybox-landley.net
___
Toybox mailing list
Toybox@lists.landley.net
http://lists.landley.net/listinfo.cgi/toybox-landley.net


Re: [Toybox] [PATCH] macOS: move getmountlist.c functions into portability.c.

2018-12-04 Thread Reverend Homer



On 04/12/2018 23:48, enh via Toybox wrote:

<...>
+
+// Get a linked list of mount points, with stat information.
+#ifdef __APPLE__
+
+// Not implemented for macOS.
+// See 's getmntinfo(3) for the BSD API.
+



Shouldn't there be some warning?


R.H.



+#else
+
+#include 
+
+static void octal_deslash(char *s)
+{
+  char *o = s;
+
+  while (*s) {
+if (*s == '\\') {
+  int i, oct = 0;
+
+  for (i = 1; i < 4; i++) {
+if (!isdigit(s[i])) break;
+oct = (oct<<3)+s[i]-'0';
+  }
+  if (i == 4) {
+*o++ = oct;
+s += i;
+continue;
+  }
+}
+*o++ = *s++;
+  }
+
+  *o = 0;
+}
+
+// Check if this type matches list.
+// Odd syntax: typelist all yes = if any, typelist all no = if none.
+
+int mountlist_istype(struct mtab_list *ml, char *typelist)
+{
+  int len, skip;
+  char *t;
+
+  if (!typelist) return 1;
+
+  skip = strncmp(typelist, "no", 2);
+
+  for (;;) {
+if (!(t = comma_iterate(&typelist, &len))) break;
+if (!skip) {
+  // If one -t starts with "no", the rest must too
+  if (strncmp(t, "no", 2)) error_exit("bad typelist");
+  if (!strncmp(t+2, ml->type, len-2)) {
+skip = 1;
+break;
+  }
+} else if (!strncmp(t, ml->type, len) && !ml->type[len]) {
+  skip = 0;
+  break;
+}
+  }
+
+  return !skip;
+}
+
+// Get list of mounted filesystems, including stat and statvfs info.
+// Returns a reversed list, which is good for finding overmounts and such.
+
+struct mtab_list *xgetmountlist(char *path)
+{
+  struct mtab_list *mtlist = 0, *mt;
+  struct mntent *me;
+  FILE *fp;
+  char *p = path ? path : "/proc/mounts";
+
+  if (!(fp = setmntent(p, "r"))) perror_exit("bad %s", p);
+
+  // The "test" part of the loop is done before the first time through and
+  // again after each "increment", so putting the actual load there avoids
+  // duplicating it. If the load was NULL, the loop stops.
+
+  while ((me = getmntent(fp))) {
+mt = xzalloc(sizeof(struct mtab_list) + strlen(me->mnt_fsname) +
+  strlen(me->mnt_dir) + strlen(me->mnt_type) + strlen(me->mnt_opts) + 4);
+dlist_add_nomalloc((void *)&mtlist, (void *)mt);
+
+// Collect details about mounted filesystem
+// Don't report errors, just leave data zeroed
+if (!path) {
+  stat(me->mnt_dir, &(mt->stat));
+  statvfs(me->mnt_dir, &(mt->statvfs));
+}
+
+// Remember information from /proc/mounts
+mt->dir = stpcpy(mt->type, me->mnt_type)+1;
+mt->device = stpcpy(mt->dir, me->mnt_dir)+1;
+mt->opts = stpcpy(mt->device, me->mnt_fsname)+1;
+strcpy(mt->opts, me->mnt_opts);
+
+octal_deslash(mt->dir);
+octal_deslash(mt->device);
+  }
+  endmntent(fp);
+
+  return mtlist;
+}
+
+#endif

___
Toybox mailing list
Toybox@lists.landley.net
http://lists.landley.net/listinfo.cgi/toybox-landley.net

___
Toybox mailing list
Toybox@lists.landley.net
http://lists.landley.net/listinfo.cgi/toybox-landley.net


[Toybox] [PATCH] macOS: move getmountlist.c functions into portability.c.

2018-12-04 Thread enh via Toybox
I think this was the preferred option for this code that turns out
to be very different on Linux vs BSD. I don't yet have a BSD
implementation, and I'm not likely to have chance to work on one
in the near future, so this just #ifdefs it out for macOS right
now.

With this (and a suitably minimal .config), toybox builds for macOS
out of the box.
---
 lib/getmountlist.c | 103 --
 lib/portability.c  | 108 +
 2 files changed, 108 insertions(+), 103 deletions(-)
 delete mode 100644 lib/getmountlist.c

diff --git a/lib/getmountlist.c b/lib/getmountlist.c
deleted file mode 100644
index 791636fb..
--- a/lib/getmountlist.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/* getmountlist.c - Get a linked list of mount points, with stat information.
- *
- * Copyright 2006 Rob Landley 
- */
-
-#include "toys.h"
-#include 
-
-static void octal_deslash(char *s)
-{
-  char *o = s;
-
-  while (*s) {
-if (*s == '\\') {
-  int i, oct = 0;
-
-  for (i = 1; i < 4; i++) {
-if (!isdigit(s[i])) break;
-oct = (oct<<3)+s[i]-'0';
-  }
-  if (i == 4) {
-*o++ = oct;
-s += i;
-continue;
-  }
-}
-*o++ = *s++;
-  }
-
-  *o = 0;
-}
-
-// Check if this type matches list.
-// Odd syntax: typelist all yes = if any, typelist all no = if none.
-
-int mountlist_istype(struct mtab_list *ml, char *typelist)
-{
-  int len, skip;
-  char *t;
-
-  if (!typelist) return 1;
-
-  skip = strncmp(typelist, "no", 2);
-
-  for (;;) {
-if (!(t = comma_iterate(&typelist, &len))) break;
-if (!skip) {
-  // If one -t starts with "no", the rest must too
-  if (strncmp(t, "no", 2)) error_exit("bad typelist");
-  if (!strncmp(t+2, ml->type, len-2)) {
-skip = 1;
-break;
-  }
-} else if (!strncmp(t, ml->type, len) && !ml->type[len]) {
-  skip = 0;
-  break;
-}
-  }
-
-  return !skip;
-}
-
-// Get list of mounted filesystems, including stat and statvfs info.
-// Returns a reversed list, which is good for finding overmounts and such.
-
-struct mtab_list *xgetmountlist(char *path)
-{
-  struct mtab_list *mtlist = 0, *mt;
-  struct mntent *me;
-  FILE *fp;
-  char *p = path ? path : "/proc/mounts";
-
-  if (!(fp = setmntent(p, "r"))) perror_exit("bad %s", p);
-
-  // The "test" part of the loop is done before the first time through and
-  // again after each "increment", so putting the actual load there avoids
-  // duplicating it. If the load was NULL, the loop stops.
-
-  while ((me = getmntent(fp))) {
-mt = xzalloc(sizeof(struct mtab_list) + strlen(me->mnt_fsname) +
-  strlen(me->mnt_dir) + strlen(me->mnt_type) + strlen(me->mnt_opts) + 4);
-dlist_add_nomalloc((void *)&mtlist, (void *)mt);
-
-// Collect details about mounted filesystem
-// Don't report errors, just leave data zeroed
-if (!path) {
-  stat(me->mnt_dir, &(mt->stat));
-  statvfs(me->mnt_dir, &(mt->statvfs));
-}
-
-// Remember information from /proc/mounts
-mt->dir = stpcpy(mt->type, me->mnt_type)+1;
-mt->device = stpcpy(mt->dir, me->mnt_dir)+1;
-mt->opts = stpcpy(mt->device, me->mnt_fsname)+1;
-strcpy(mt->opts, me->mnt_opts);
-
-octal_deslash(mt->dir);
-octal_deslash(mt->device);
-  }
-  endmntent(fp);
-
-  return mtlist;
-}
diff --git a/lib/portability.c b/lib/portability.c
index b9d65bab..a80ca56c 100644
--- a/lib/portability.c
+++ b/lib/portability.c
@@ -53,3 +53,111 @@ int clearenv(void)
   return 0;
 }
 #endif
+
+// Get a linked list of mount points, with stat information.
+#ifdef __APPLE__
+
+// Not implemented for macOS.
+// See 's getmntinfo(3) for the BSD API.
+
+#else
+
+#include 
+
+static void octal_deslash(char *s)
+{
+  char *o = s;
+
+  while (*s) {
+if (*s == '\\') {
+  int i, oct = 0;
+
+  for (i = 1; i < 4; i++) {
+if (!isdigit(s[i])) break;
+oct = (oct<<3)+s[i]-'0';
+  }
+  if (i == 4) {
+*o++ = oct;
+s += i;
+continue;
+  }
+}
+*o++ = *s++;
+  }
+
+  *o = 0;
+}
+
+// Check if this type matches list.
+// Odd syntax: typelist all yes = if any, typelist all no = if none.
+
+int mountlist_istype(struct mtab_list *ml, char *typelist)
+{
+  int len, skip;
+  char *t;
+
+  if (!typelist) return 1;
+
+  skip = strncmp(typelist, "no", 2);
+
+  for (;;) {
+if (!(t = comma_iterate(&typelist, &len))) break;
+if (!skip) {
+  // If one -t starts with "no", the rest must too
+  if (strncmp(t, "no", 2)) error_exit("bad typelist");
+  if (!strncmp(t+2, ml->type, len-2)) {
+skip = 1;
+break;
+  }
+} else if (!strncmp(t, ml->type, len) && !ml->type[len]) {
+  skip = 0;
+  break;
+}
+  }
+
+  return !skip;
+}
+
+// Get list of mounted filesystems, including stat and statvfs info.
+// Returns a reversed list, which is good for finding overmounts and such.
+
+struct mtab_list *xgetmountlist(char *path)
+{
+  struct m

Re: [Toybox] Tired of gmails nonsense.

2018-12-04 Thread Rob Landley
On 12/4/18 1:30 PM, Ivo van Poorten wrote:
> On Tue, 4 Dec 2018 13:54:10 +1000 David Seikel
>  wrote:
>> I'm not sure if it's gmails fault entirely, but I've only been seeing
>> about half of the posts to this list.  Mostly those from enh of late.
> 
> The same is happening here. I only see enh's replies and none of Rob.

It's showing up in the web archive. :P

The ironic part is my email is going out through gmail's smtp servers. It's a
weird "gmail hosted domain" thing (of a type I'm pretty sure they discontinued),
which I mostly wash through their smtp and pop3 servers and only use the web
interface to fish stuff out of the spam folder.

I could point the DNS mx records to dreamhost's mail servers (or theoretically
set up my own), but A) leveraging the giant spam filtering dataset is why I did
that in the first place, B) gmail's out of control spam filter could still
decide it didn't like me.

What you've gotta do is go into the spam filter, click "not spam" on every
message, and then do this over and over again for _weeks_ until it FINALLY 
NOTICES.

I'm back down to checking it weekly now that the header rewrite's in there, but
I also look at the web archive every day or two and see if there's something in
there I don't recognize...

Rob
___
Toybox mailing list
Toybox@lists.landley.net
http://lists.landley.net/listinfo.cgi/toybox-landley.net


Re: [Toybox] Tired of gmails nonsense.

2018-12-04 Thread Ivo van Poorten
On Tue, 4 Dec 2018 13:54:10 +1000 David Seikel
 wrote:
> I'm not sure if it's gmails fault entirely, but I've only been seeing
> about half of the posts to this list.  Mostly those from enh of late.

The same is happening here. I only see enh's replies and none of Rob.

Regards,
Ivo
___
Toybox mailing list
Toybox@lists.landley.net
http://lists.landley.net/listinfo.cgi/toybox-landley.net


Re: [Toybox] [PATCH] macOS: replace local strnstr with strcasestr.

2018-12-04 Thread enh via Toybox
On Mon, Dec 3, 2018 at 12:09 PM enh  wrote:
>
> On Mon, Dec 3, 2018 at 11:33 AM Rob Landley  wrote:
> >
> > On 12/3/18 12:00 PM, enh wrote:
> > > amusingly, the same line causes a (different) compile-time warning
> > > with old versions of glibc. glibc 2.15 at least has mktemp marked as
> > > warn_unused_result, and AOSP currently uses glibc 2.15 for host
> > > builds. i've sent a patch to fix that (and attached the same patch
> > > here too, in case the spam filter is still messing with you :-) ).
> >
> > I enabled the header rewrite whatsis in the list plumbing and that seems to 
> > have
> > fixed the worst of it.
> >
> > I was looking at doing my own mktemp with xgetrandom() but the x part says
> > "denial of service attack/exploit waiting to happen" when a script calls
> > NAME=$(mktemp) and gets an empty string with some discarded stderr output...
> >
> > If bionic and musl _both_ don't warn about it, it's a glibc bug. Still 
> > annoying,
> > but I'll leave it for now and check if I still feel like trying to do 
> > something
> > about it during pre-release cleanup...
>
> well:
>
> * POSIX 1003.1-2008 removed mktemp(3).
>
> * musl has no compile-time deprecation/warn_unused_result warnings for 
> anything.
>
> * bionic _does_ have a compile-time deprecation warning for mktemp
> because _most_ callers shouldn't use it (and POSIX did remove it, even
> if it seems unlikely that any libc will remove it any time soon).
> mktemp(1) -u/--dry-run just happens to be a weird exception where two
> wrongs make a right.
>
> * glibc doesn't have a compile-time deprecation warning because it's
> guarded behind "are we pre-2008 POSIX?".
>
> * glibc does have a link-time deprecation warning.
>
> * old glibc did have a compile-time warn_unused_result warning, but
> apparently they've thought better of that since and removed the
> attribute.
>
> so it's all just a big mess, really :-)
>
> (and, yes, i have seen uses that can't actually write to the directory
> --- the basic [anti-]pattern seems to be "there's something exposed
> via something like /proc, i want a unique name in that namespace, but
> there's some other mechanism for creating the thing than mkdir(2)". as
> far as i can tell, these are tests rather than production code.)

this made me realize i should have a test for this, and writing the
test uncovered cases where the mktemp logic still wasn't right. i've
sent a new patch with the missing tests and a rewrite of the logic
that chooses between DIR, $TMPDIR, and /tmp.

> > > someone's looking at upgrading the host glibc, but 2.15 is just inside
> > > the 7-year rule. plus i assume you'll be happy to save a line anyway.
> > > i'm not sure why i didn't write it as one line in the first place...
> > > even i don't find it obfuscatory in this case.
> >
> > Applied.
>
> thanks.
>
> > Rob
___
Toybox mailing list
Toybox@lists.landley.net
http://lists.landley.net/listinfo.cgi/toybox-landley.net


[Toybox] [PATCH] mktemp: more tests, more fixes.

2018-12-04 Thread enh via Toybox
I realized (after being questioned about my motivation) that I hadn't
added a test for the -u behavior. Adding the missing test confirmed the
usual "if there isn't a test, the code is broken", but now I think I
actually understand how we're supposed to choose between DIR, $TMPDIR,
and /tmp. I've added more tests to back this up, and rewritten the code
one more time so that we pass all the tests.
---
 tests/mktemp.test | 19 ++-
 toys/lsb/mktemp.c | 22 --
 2 files changed, 30 insertions(+), 11 deletions(-)

diff --git a/tests/mktemp.test b/tests/mktemp.test
index d09d2c4c..ee7702dc 100755
--- a/tests/mktemp.test
+++ b/tests/mktemp.test
@@ -6,16 +6,25 @@

 # mktemp by default should use tmp.XX as the template,
 # and $TMPDIR as the directory.
-testing "mktemp" "TMPDIR=/t mktemp -u | grep -q
'^/t/tmp\...$' && echo yes" "yes\n" "" ""
+testing "default" "TMPDIR=/t mktemp -u | grep -q
'^/t/tmp\...$' && echo yes" "yes\n" "" ""

 # mktemp with a template should *not* use $TMPDIR.
-testing "mktemp TEMPLATE" "TMPDIR=/t mktemp -u hello. | grep
-q '^hello\.$' && echo yes" "yes\n" "" ""
+testing "TEMPLATE" "TMPDIR=/t mktemp -u hello. | grep -q
'^hello\.$' && echo yes" "yes\n" "" ""

 # mktemp with -t and a template should use $TMPDIR.
-testing "mktemp -t TEMPLATE" "TMPDIR=/t mktemp -u -t hello. |
grep -q '^/t/hello\.$' && echo yes" "yes\n" "" ""
+testing "-t TEMPLATE" "TMPDIR=/t mktemp -u -t hello. | grep
-q '^/t/hello\.$' && echo yes" "yes\n" "" ""
+
+# mktemp with -t and a template should use $TMPDIR ... or /tmp if no $TMPDIR.
+testing "-t TEMPLATE but no TMPDIR" "TMPDIR= mktemp -u -t
hello. | grep -q '^/tmp/hello\.$' && echo yes" "yes\n"
"" ""

 # mktemp with -p DIR and a template should use DIR.
-testing "mktemp -p DIR TEMPLATE" "TMPDIR=/t mktemp -u -p DIR
hello. | grep -q '^DIR/hello\.$' && echo yes" "yes\n"
"" ""
+testing "-p DIR TEMPLATE" "TMPDIR=/t mktemp -u -p DIR hello.
| grep -q '^DIR/hello\.$' && echo yes" "yes\n" "" ""

 # mktemp -p DIR and -t: -t wins.
-testing "mktemp -p DIR -t TEMPLATE" "TMPDIR=/t mktemp -u -p DIR -t
hello. | grep -q '^/t/hello\.$' && echo yes" "yes\n"
"" ""
+testing "-p DIR -t TEMPLATE" "TMPDIR=/t mktemp -u -p DIR -t
hello. | grep -q '^/t/hello\.$' && echo yes" "yes\n"
"" ""
+
+# mktemp -p DIR and -t but no $TMPDIR: DIR wins.
+testing "-p DIR -t TEMPLATE but no TMPDIR" "TMPDIR= mktemp -u -p DIR
-t hello. | grep -q '^DIR/hello\.$' && echo yes"
"yes\n" "" ""
+
+# mktemp -u doesn't need to be able to write to the directory.
+testing "-u" "mktemp -u -p /proc | grep -q '^/proc/tmp\...$'
&& echo yes" "yes\n" "" ""
diff --git a/toys/lsb/mktemp.c b/toys/lsb/mktemp.c
index ae97e494..112f84c4 100644
--- a/toys/lsb/mktemp.c
+++ b/toys/lsb/mktemp.c
@@ -17,7 +17,7 @@ config MKTEMP
 -d Create directory instead of file (--directory)
 -p Put new file in DIR (--tmpdir)
 -q Quiet, no error messages
--t Prepend $TMPDIR or /tmp if unset
+-t Prefer $TMPDIR > DIR > /tmp (default DIR > $TMPDIR > /tmp)
 -u Don't create anything, just print what would be created

 Each X in TEMPLATE is replaced with a random printable character. The
@@ -34,18 +34,28 @@ GLOBALS(
 void mktemp_main(void)
 {
   char *template = *toys.optargs;
+  int use_dir = (toys.optflags & (FLAG_p|FLAG_t));

   if (!template) {
-toys.optflags |= FLAG_t;
 template = "tmp.XX";
+use_dir = 1;
   }

-  if (!TT.p || (toys.optflags & FLAG_t)) TT.p = getenv("TMPDIR");
-  if (!TT.p || !*TT.p) TT.p = "/tmp";
+  // Normally, the precedence is DIR (if set), $TMPDIR (if set), /tmp.
+  // With -t it's $TMPDIR, DIR, /tmp.
+  if (use_dir) {
+char *tmpdir = getenv("TMPDIR");
+
+if (toys.optflags & FLAG_t) {
+  if (tmpdir && *tmpdir) TT.p = tmpdir;
+} else {
+  if (!TT.p || !*TT.p) TT.p = tmpdir;
+}
+if (!TT.p || !*TT.p) TT.p = "/tmp";
+  }

   // TODO: coreutils cleans paths, so -p /t/// would result in /t/xxx...
-  template = (strchr(template, '/') || !(toys.optflags & (FLAG_p|FLAG_t)))
-  ? xstrdup(template) : xmprintf("%s/%s", TT.p, template);
+  template = use_dir ? xmprintf("%s/%s", TT.p, template) : xstrdup(template);

   if (toys.optflags & FLAG_u) {
 xputs(mktemp(template));
-- 
2.19.1.930.g4563a0d9d0-goog
From 44e5e494862ccc550270fbd1bfb857ef221c358e Mon Sep 17 00:00:00 2001
From: Elliott Hughes 
Date: Tue, 4 Dec 2018 10:58:13 -0800
Subject: [PATCH] mktemp: more tests, more fixes.

I realized (after being questioned about my motivation) that I hadn't
added a test for the -u behavior. Adding the missing test confirmed the
usual "if there isn't a test, the code is broken", but now I think I
actually understand how we're supposed to choose between DIR, $TMPDIR,
and /tmp. I've added more tests to back this up, and rewritten the code
one more time so t

Re: [Toybox] Tired of gmails nonsense.

2018-12-04 Thread David Seikel
> What are you using for spam filtering?

On my mail server I don't have any spam filtering, but at my client
end I use a mailfilter black / gray / white list which also sorts
things into my local IMAP folders.

-- 
A big old stinking pile of genius that no one wants
coz there are too many silver coated monkeys in the world.
___
Toybox mailing list
Toybox@lists.landley.net
http://lists.landley.net/listinfo.cgi/toybox-landley.net


Re: [Toybox] Tired of gmails nonsense.

2018-12-04 Thread Rob Landley
On 12/3/18 9:54 PM, David Seikel wrote:
> I'm not sure if it's gmails fault entirely, but I've only been seeing
> about half of the posts to this list.  Mostly those from enh of late.
> I know others post, I ran see their replies in things enh quotes.  Last
> month it was mostly just Robs posts.  And yet another "membership in
> the mailing list Toybox has been disabled due to excessive bounces".
> 
> On top of that, due to a gmail "feature" I had to have a read only and
> a write only subscription.  It's considered a feature by Google, there
> have been bug reports about it closed for many years.
> 
> So now I'm trying my own email server.  I'm slowly weening myself off
> Google everything anyway.

What are you using for spam filtering?

Rob
___
Toybox mailing list
Toybox@lists.landley.net
http://lists.landley.net/listinfo.cgi/toybox-landley.net