]>
diplodocus.org Git - nmh/log
Ralph Corderoy [Sat, 22 Oct 2016 18:52:42 +0000 (19:52 +0100)]
Use ToUpper() instead of loop.
Ralph Corderoy [Sat, 22 Oct 2016 18:43:12 +0000 (19:43 +0100)]
Add ToLower(s) and ToUpper(s).
Ralph Corderoy [Sat, 22 Oct 2016 18:33:24 +0000 (19:33 +0100)]
putcomp(): Use local to avoid repeating tautological ternary.
Ralph Corderoy [Sat, 22 Oct 2016 18:18:15 +0000 (19:18 +0100)]
Alter netrc permissions error message to match code. Add test.
The code wants `go=', but the error message, and FAQ, said to clear read
permission from group and other. Add test to inc/test-pop as that is
the existing netrc test location, but it might be better in its own test
file as other tests for netrc parsing could be added.
Ralph Corderoy [Sat, 22 Oct 2016 17:09:02 +0000 (18:09 +0100)]
Fix netrc's token()'s bug if backslash escapes EOF.
Discard the whole token so the user hopefully investigates.
Ralph Corderoy [Sat, 22 Oct 2016 17:01:16 +0000 (18:01 +0100)]
Fix netrc's token() bug of first character being backslash.
Ralph Corderoy [Sat, 22 Oct 2016 16:47:06 +0000 (17:47 +0100)]
Merge .netrc's token() file-reading loops; quoted and not.
Check for ferror(3) as well as feof(3) on entry.
Comment on lack of definition of quoted-string syntax, e.g. «"foo""bar"»
is two tokens without needing a separator.
Add comments on bugs for first non-quote character of a token being
backslash, and if a backslash escapes EOF.
Ralph Corderoy [Sat, 22 Oct 2016 15:17:42 +0000 (16:17 +0100)]
Have ruserpass() return TOK_EOF and put "" in the token table.
Gives 0 a name and removes a little logic.
Ralph Corderoy [Sat, 22 Oct 2016 15:04:58 +0000 (16:04 +0100)]
Replace getcpy() with mh_xstrdup() where the string isn't NULL.
Ralph Corderoy [Sat, 22 Oct 2016 14:53:51 +0000 (15:53 +0100)]
Check advertise()'s iob[] isn't too short with assert(3).
Using DIM(a) added to h/mh.h
Ralph Corderoy [Sat, 22 Oct 2016 14:36:40 +0000 (15:36 +0100)]
Use macros in advertise() to simplify source.
Happens to remove strlen() of literals at the same time.
Ralph Corderoy [Sat, 22 Oct 2016 13:43:11 +0000 (14:43 +0100)]
Document advise(), adios(), admonish(), and advertise().
It doesn't make their design any better. Their "ad" prefix goes against
common advice of having distinguishable identifiers to avoid mix-ups,
and seems to be a theme that got out of hand. The out-of-order
parameters to advertise seem due to lack of strerror(3) that's no longer
a problem.
Before:
advertise("open", "continuing...", "couldn't read profile: %s",
path);
Could be:
error("couldn't read profile: %s: open: %s, continuing...\n",
path, strerror(errno));
And the "open" is typically dropped as superfluous so there's a
repetitive leading NULL passed a lot.
Ralph Corderoy [Sat, 22 Oct 2016 12:58:43 +0000 (13:58 +0100)]
POSIX, 2016 Ed, removes bcopy(3). Stop referring to it.
Even though it's in a comment, it shows up in searches.
Ralph Corderoy [Sat, 22 Oct 2016 12:45:35 +0000 (13:45 +0100)]
Don't need to cast to `char *' for free(3) these days.
Ralph Corderoy [Sat, 22 Oct 2016 12:45:24 +0000 (13:45 +0100)]
Don't need to cast to `char *' for free(3) these days.
Ralph Corderoy [Sat, 22 Oct 2016 12:45:22 +0000 (13:45 +0100)]
Don't need to cast to `char *' for free(3) these days.
Ralph Corderoy [Sat, 22 Oct 2016 12:45:19 +0000 (13:45 +0100)]
Don't need to cast to `char *' for free(3) these days.
Ralph Corderoy [Sat, 22 Oct 2016 12:45:16 +0000 (13:45 +0100)]
Don't need to cast to `char *' for free(3) these days.
Ralph Corderoy [Sat, 22 Oct 2016 12:45:11 +0000 (13:45 +0100)]
Don't need to cast to `char *' for free(3) these days.
Ralph Corderoy [Sat, 22 Oct 2016 12:44:47 +0000 (13:44 +0100)]
Don't need to cast to `char *' for free(3) these days.
But still need a cast to discard the const.
Use `void *' as it saves needing to check the original type.
Ralph Corderoy [Sat, 22 Oct 2016 12:42:52 +0000 (13:42 +0100)]
Don't need to cast to `char *' for free(3) these days.
Ralph Corderoy [Sat, 22 Oct 2016 12:42:47 +0000 (13:42 +0100)]
Don't need to cast to `char *' for free(3) these days.
Ralph Corderoy [Sat, 22 Oct 2016 12:42:45 +0000 (13:42 +0100)]
Don't need to cast to `char *' for free(3) these days.
Ralph Corderoy [Sat, 22 Oct 2016 12:42:43 +0000 (13:42 +0100)]
Don't need to cast to `char *' for free(3) these days.
Ralph Corderoy [Sat, 22 Oct 2016 12:42:39 +0000 (13:42 +0100)]
Don't need to cast to `char *' for free(3) these days.
Ralph Corderoy [Fri, 21 Oct 2016 23:45:09 +0000 (00:45 +0100)]
Move smtp_init's last-ditch attempt for client inside first test.
Didn't realise there was a second lot of similar code before the last
commit.
Ralph Corderoy [Fri, 21 Oct 2016 23:41:44 +0000 (00:41 +0100)]
Move smtp_init's last-ditch attempt for client inside first test.
No point checking it twice in a row if it was false the first time.
Ralph Corderoy [Fri, 21 Oct 2016 23:40:30 +0000 (00:40 +0100)]
Don't `else' after return. Simplify control flow.
Ralph Corderoy [Fri, 21 Oct 2016 23:27:58 +0000 (00:27 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 23:27:54 +0000 (00:27 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 23:27:51 +0000 (00:27 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 23:27:48 +0000 (00:27 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 23:27:42 +0000 (00:27 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 23:27:29 +0000 (00:27 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 23:27:22 +0000 (00:27 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 23:27:16 +0000 (00:27 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 23:26:57 +0000 (00:26 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 23:26:54 +0000 (00:26 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 23:26:35 +0000 (00:26 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 23:26:02 +0000 (00:26 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 23:25:53 +0000 (00:25 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 23:21:16 +0000 (00:21 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 23:20:55 +0000 (00:20 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 23:20:49 +0000 (00:20 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 23:20:46 +0000 (00:20 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 23:18:54 +0000 (00:18 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 23:18:50 +0000 (00:18 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 23:18:43 +0000 (00:18 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 23:18:39 +0000 (00:18 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 23:18:32 +0000 (00:18 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 23:18:26 +0000 (00:18 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 23:09:10 +0000 (00:09 +0100)]
Don't test boundary in output_content() for NULL; it never is.
Ralph Corderoy [Fri, 21 Oct 2016 22:21:30 +0000 (23:21 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 22:20:41 +0000 (23:20 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 22:20:06 +0000 (23:20 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 22:17:48 +0000 (23:17 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 22:16:11 +0000 (23:16 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 22:15:53 +0000 (23:15 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 22:15:47 +0000 (23:15 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 22:15:32 +0000 (23:15 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 21:01:54 +0000 (22:01 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 20:18:38 +0000 (21:18 +0100)]
Add FIXME raising if iscntrl(3) test should be based on isprint(3)
!iscntrl blocks characters that could be isspace or isblank whereas
isprint would let them through unharmed.
Ralph Corderoy [Fri, 21 Oct 2016 20:18:16 +0000 (21:18 +0100)]
Assume POSIX ctype.h; don't vet toupper()'s parameter.
Ralph Corderoy [Fri, 21 Oct 2016 20:14:24 +0000 (21:14 +0100)]
Explain isascii() test more in netsec_set_sasl_params().
It stops non-ASCII lower in the SASL mechanism being uppered, just in
case there is some.
Ralph Corderoy [Fri, 21 Oct 2016 20:10:42 +0000 (21:10 +0100)]
Assume POSIX ctype.h; don't vet toupper()'s parameter.
Ralph Corderoy [Fri, 21 Oct 2016 19:39:11 +0000 (20:39 +0100)]
Assume POSIX ctype.h; don't vet tolower()'s parameter.
Ralph Corderoy [Fri, 21 Oct 2016 19:37:32 +0000 (20:37 +0100)]
Assume POSIX ctype.h; don't vet tolower()'s parameter.
Ralph Corderoy [Fri, 21 Oct 2016 19:23:55 +0000 (20:23 +0100)]
Oops, stop showbuildenv reading from stdin when run from a TTY.
David spotted the problem I introduced with
8374c3c . Alter offset to
process any arguments, falling back to stdin if none.
Ralph Corderoy [Fri, 21 Oct 2016 13:42:35 +0000 (14:42 +0100)]
Assume POSIX ctype.h; don't vet tolower()'s parameter.
Ralph Corderoy [Fri, 21 Oct 2016 13:41:17 +0000 (14:41 +0100)]
Assume POSIX ctype.h; don't vet tolower()'s parameter.
Ralph Corderoy [Fri, 21 Oct 2016 13:35:47 +0000 (14:35 +0100)]
Assume POSIX ctype.h; don't vet tolower()'s parameter.
David Levine [Fri, 21 Oct 2016 17:26:43 +0000 (13:26 -0400)]
Fixed MIME parser so it can read binary content.
Second of two-part fix. Replaced use of strlen().
David Levine [Fri, 21 Oct 2016 17:22:22 +0000 (13:22 -0400)]
Have m_getfld() pass back indication of missing blank line.
This is part one of a two part fix to the MIME parser to
read binary content. It should have no effect.
Also added start/finish test calls to test-header.
Ralph Corderoy [Fri, 21 Oct 2016 08:53:45 +0000 (09:53 +0100)]
Fix warnings caused by recent edits; don't mix declarations and code.
Quite right too, I prefer all the declarations, codeless, up front. The
standard -Wall didn't pick this up. David pointed it out, probably due
to his defaults of `-pedantic -ansi'.
Ralph Corderoy [Thu, 20 Oct 2016 23:06:11 +0000 (00:06 +0100)]
Don't `else' after goto. Simplify control flow.
Ralph Corderoy [Thu, 20 Oct 2016 23:06:07 +0000 (00:06 +0100)]
Don't `else' after goto. Simplify control flow.
Ralph Corderoy [Thu, 20 Oct 2016 23:05:50 +0000 (00:05 +0100)]
Don't `else' after goto. Simplify control flow.
Ralph Corderoy [Thu, 20 Oct 2016 23:05:46 +0000 (00:05 +0100)]
Don't `else' after goto. Simplify control flow.
David Levine [Thu, 20 Oct 2016 23:38:01 +0000 (19:38 -0400)]
Added test/mhshow/test-binary. The MIME parser doesn't
properly handle null bytes because it uses getline().
Ralph Corderoy [Thu, 20 Oct 2016 22:57:56 +0000 (23:57 +0100)]
Don't `else' after return. Simplify control flow.
Ralph Corderoy [Thu, 20 Oct 2016 22:57:09 +0000 (23:57 +0100)]
Don't `else' after return. Simplify control flow.
Ralph Corderoy [Thu, 20 Oct 2016 22:30:39 +0000 (23:30 +0100)]
Don't `else' after return. Simplify control flow.
Ralph Corderoy [Thu, 20 Oct 2016 22:30:07 +0000 (23:30 +0100)]
Don't `else' after return. Simplify control flow.
Ralph Corderoy [Thu, 20 Oct 2016 22:30:02 +0000 (23:30 +0100)]
Don't `else' after return. Simplify control flow.
Ralph Corderoy [Thu, 20 Oct 2016 22:29:56 +0000 (23:29 +0100)]
Don't `else' after return. Simplify control flow.
Ralph Corderoy [Thu, 20 Oct 2016 22:29:49 +0000 (23:29 +0100)]
Don't `else' after return. Simplify control flow.
Ralph Corderoy [Thu, 20 Oct 2016 22:29:46 +0000 (23:29 +0100)]
Don't `else' after return. Simplify control flow.
Ralph Corderoy [Thu, 20 Oct 2016 22:29:35 +0000 (23:29 +0100)]
Don't `else' after return. Simplify control flow.
Ralph Corderoy [Thu, 20 Oct 2016 22:29:19 +0000 (23:29 +0100)]
Don't `else' after return. Simplify control flow.
Ralph Corderoy [Thu, 20 Oct 2016 22:27:42 +0000 (23:27 +0100)]
Don't `else' after return. Simplify control flow.
Ralph Corderoy [Thu, 20 Oct 2016 22:27:37 +0000 (23:27 +0100)]
Don't `else' after return. Simplify control flow.
Ralph Corderoy [Thu, 20 Oct 2016 22:27:21 +0000 (23:27 +0100)]
Don't `else' after return. Simplify control flow.
Ralph Corderoy [Thu, 20 Oct 2016 22:27:08 +0000 (23:27 +0100)]
Don't `else' after return. Simplify control flow.
Ralph Corderoy [Thu, 20 Oct 2016 22:27:05 +0000 (23:27 +0100)]
Don't `else' after return. Simplify control flow.
Ralph Corderoy [Thu, 20 Oct 2016 22:23:46 +0000 (23:23 +0100)]
Don't `else' after return. Simplify control flow.
Ralph Corderoy [Thu, 20 Oct 2016 22:23:41 +0000 (23:23 +0100)]
Don't `else' after return. Simplify control flow.
Ralph Corderoy [Thu, 20 Oct 2016 22:23:38 +0000 (23:23 +0100)]
Don't `else' after return. Simplify control flow.
Ralph Corderoy [Thu, 20 Oct 2016 22:23:35 +0000 (23:23 +0100)]
Don't `else' after return. Simplify control flow.
Ralph Corderoy [Thu, 20 Oct 2016 22:23:28 +0000 (23:23 +0100)]
Don't `else' after return. Simplify control flow.
Ralph Corderoy [Thu, 20 Oct 2016 22:23:00 +0000 (23:23 +0100)]
Don't `else' after return. Simplify control flow.