]> diplodocus.org Git - nmh/log
nmh
9 years agoUse HasPrefix() instead of strncmp().
Ralph Corderoy [Sun, 23 Oct 2016 22:20:45 +0000 (23:20 +0100)]
Use HasPrefix() instead of strncmp().

9 years agoUse HasPrefix() instead of strncmp().
Ralph Corderoy [Sun, 23 Oct 2016 22:20:31 +0000 (23:20 +0100)]
Use HasPrefix() instead of strncmp().

9 years agoUse HasPrefix() instead of strncmp().
Ralph Corderoy [Sun, 23 Oct 2016 22:02:49 +0000 (23:02 +0100)]
Use HasPrefix() instead of strncmp().

9 years agoUse HasPrefix() instead of strncmp().
Ralph Corderoy [Sun, 23 Oct 2016 22:02:01 +0000 (23:02 +0100)]
Use HasPrefix() instead of strncmp().

9 years agonmh_command_generator(): Fix indentation.
Ralph Corderoy [Sun, 23 Oct 2016 21:59:57 +0000 (22:59 +0100)]
nmh_command_generator(): Fix indentation.

9 years agoUse HasPrefix() instead of strncmp().
Ralph Corderoy [Sun, 23 Oct 2016 21:51:24 +0000 (22:51 +0100)]
Use HasPrefix() instead of strncmp().

9 years agoUse HasPrefix() instead of strncmp().
Ralph Corderoy [Sun, 23 Oct 2016 21:49:25 +0000 (22:49 +0100)]
Use HasPrefix() instead of strncmp().

9 years agoUse HasPrefix() instead of strncmp().
Ralph Corderoy [Sun, 23 Oct 2016 21:48:49 +0000 (22:48 +0100)]
Use HasPrefix() instead of strncmp().

9 years agoUse HasPrefix() instead of strncmp().
Ralph Corderoy [Sun, 23 Oct 2016 21:47:08 +0000 (22:47 +0100)]
Use HasPrefix() instead of strncmp().

9 years agoUse HasPrefix() instead of strncmp().
Ralph Corderoy [Sun, 23 Oct 2016 21:36:26 +0000 (22:36 +0100)]
Use HasPrefix() instead of strncmp().

9 years agoUse HasPrefix() instead of strncmp().
Ralph Corderoy [Sun, 23 Oct 2016 17:56:58 +0000 (18:56 +0100)]
Use HasPrefix() instead of strncmp().

9 years agoUse HasPrefix() instead of strncmp().
Ralph Corderoy [Sun, 23 Oct 2016 17:56:33 +0000 (18:56 +0100)]
Use HasPrefix() instead of strncmp().

9 years agoAlter HasSuffixC()'s char * to be const.
Ralph Corderoy [Sun, 23 Oct 2016 11:08:31 +0000 (12:08 +0100)]
Alter HasSuffixC()'s char * to be const.

9 years agoutils.c: Add HasPrefix(s, prefix).
Ralph Corderoy [Sun, 23 Oct 2016 11:02:55 +0000 (12:02 +0100)]
utils.c: Add HasPrefix(s, prefix).

HasPrefix returns true if non-NULL s starts with non-NULL prefix.

9 years agoRename EndsWithC() to HasSuffixC().
Ralph Corderoy [Sun, 23 Oct 2016 00:18:49 +0000 (01:18 +0100)]
Rename EndsWithC() to HasSuffixC().

9 years agomh-folders.man: Remove empty `.I' immediately followed by `.IR'.
Ralph Corderoy [Sun, 23 Oct 2016 00:13:57 +0000 (01:13 +0100)]
mh-folders.man: Remove empty `.I' immediately followed by `.IR'.

9 years agobuild_nmh: If cloning with git, make a shallow clone.
Ralph Corderoy [Mon, 24 Oct 2016 08:59:44 +0000 (09:59 +0100)]
build_nmh: If cloning with git, make a shallow clone.

9 years agoshowbuildenv: Drop lsb_release(1); /etc/lsb_release tested earlier.
Ralph Corderoy [Mon, 24 Oct 2016 08:46:52 +0000 (09:46 +0100)]
showbuildenv: Drop lsb_release(1);  /etc/lsb_release tested earlier.

9 years agobuild_nmh: Use `gzip -d' rather than assume tar has -z.
Ralph Corderoy [Mon, 24 Oct 2016 08:33:56 +0000 (09:33 +0100)]
build_nmh: Use `gzip -d' rather than assume tar has -z.

9 years agobuild_nmh: Have a silent curl still show errors.
Ralph Corderoy [Mon, 24 Oct 2016 08:31:00 +0000 (09:31 +0100)]
build_nmh: Have a silent curl still show errors.

Arguably, -sS should be curl's defaults!

9 years agoFixed output of commit hash by git log command.
David Levine [Sun, 23 Oct 2016 21:16:31 +0000 (17:16 -0400)]
Fixed output of commit hash by git log command.

9 years agoCheck for existence of tools/showbuildenv.
David Levine [Sun, 23 Oct 2016 21:12:04 +0000 (17:12 -0400)]
Check for existence of tools/showbuildenv.

9 years agoRedirect verbose build_nmh messages so they're visible while running.
David Levine [Sun, 23 Oct 2016 20:25:00 +0000 (16:25 -0400)]
Redirect verbose build_nmh messages so they're visible while running.

9 years agoEnhanced build_nmh to support standalone use.
David Levine [Sun, 23 Oct 2016 20:03:11 +0000 (16:03 -0400)]
Enhanced build_nmh to support standalone use.

1) If not in nmh directory, download the nmh sources from savannah
   using git clone, wget, or curl.
2) Added -b branch option, for use when downloading.
3) Support -l -.
4) Capture build environment with tools/showbuildenv.

9 years agoman: Use lowercase for command name at start of sentence.
Ralph Corderoy [Sun, 23 Oct 2016 00:10:58 +0000 (01:10 +0100)]
man: Use lowercase for command name at start of sentence.

`Inc' is a different command to `inc'.

9 years agouprf(): Rewrite, using types rather than masking ints.
Ralph Corderoy [Sat, 22 Oct 2016 23:08:17 +0000 (00:08 +0100)]
uprf(): Rewrite, using types rather than masking ints.

9 years agoAdd comment describing uprf().
Ralph Corderoy [Sat, 22 Oct 2016 22:37:19 +0000 (23:37 +0100)]
Add comment describing uprf().

9 years agoUse ToLower() instead of loop.
Ralph Corderoy [Sat, 22 Oct 2016 18:56:52 +0000 (19:56 +0100)]
Use ToLower() instead of loop.

9 years agoUse ToUpper() instead of loop.
Ralph Corderoy [Sat, 22 Oct 2016 18:53:01 +0000 (19:53 +0100)]
Use ToUpper() instead of loop.

9 years agoUse ToUpper() instead of loop.
Ralph Corderoy [Sat, 22 Oct 2016 18:52:42 +0000 (19:52 +0100)]
Use ToUpper() instead of loop.

9 years agoAdd ToLower(s) and ToUpper(s).
Ralph Corderoy [Sat, 22 Oct 2016 18:43:12 +0000 (19:43 +0100)]
Add ToLower(s) and ToUpper(s).

9 years agoputcomp(): Use local to avoid repeating tautological ternary.
Ralph Corderoy [Sat, 22 Oct 2016 18:33:24 +0000 (19:33 +0100)]
putcomp(): Use local to avoid repeating tautological ternary.

9 years agoAlter netrc permissions error message to match code. Add test.
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.

9 years agoFix netrc's token()'s bug if backslash escapes EOF.
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.

9 years agoFix netrc's token() bug of first character being backslash.
Ralph Corderoy [Sat, 22 Oct 2016 17:01:16 +0000 (18:01 +0100)]
Fix netrc's token() bug of first character being backslash.

9 years agoMerge .netrc's token() file-reading loops; quoted and not.
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.

9 years agoHave ruserpass() return TOK_EOF and put "" in the token table.
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.

9 years agoReplace getcpy() with mh_xstrdup() where the string isn't NULL.
Ralph Corderoy [Sat, 22 Oct 2016 15:04:58 +0000 (16:04 +0100)]
Replace getcpy() with mh_xstrdup() where the string isn't NULL.

9 years agoCheck advertise()'s iob[] isn't too short with assert(3).
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

9 years agoUse macros in advertise() to simplify source.
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.

9 years agoDocument advise(), adios(), admonish(), and advertise().
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.

9 years agoPOSIX, 2016 Ed, removes bcopy(3). Stop referring to it.
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.

9 years agoDon't need to cast to `char *' for free(3) these days.
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.

9 years agoDon'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.

9 years agoDon'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.

9 years agoDon'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.

9 years agoDon'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.

9 years agoDon'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.

9 years agoDon'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.

9 years agoDon't need to cast to `char *' for free(3) these days.
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.

9 years agoDon'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.

9 years agoDon'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.

9 years agoDon'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.

9 years agoDon'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.

9 years agoMove smtp_init's last-ditch attempt for client inside first test.
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.

9 years agoMove smtp_init's last-ditch attempt for client inside first test.
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.

9 years agoDon't `else' after return. Simplify control flow.
Ralph Corderoy [Fri, 21 Oct 2016 23:40:30 +0000 (00:40 +0100)]
Don't `else' after return.  Simplify control flow.

9 years agoReplace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 23:27:58 +0000 (00:27 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoDon't test boundary in output_content() for NULL; it never is.
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.

9 years agoReplace `if (p) free(p)' with `mh_xfree(p)'.
Ralph Corderoy [Fri, 21 Oct 2016 22:21:30 +0000 (23:21 +0100)]
Replace `if (p) free(p)' with `mh_xfree(p)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoReplace `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)'.

9 years agoAdd FIXME raising if iscntrl(3) test should be based on isprint(3)
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.

9 years agoAssume POSIX ctype.h; don't vet toupper()'s parameter.
Ralph Corderoy [Fri, 21 Oct 2016 20:18:16 +0000 (21:18 +0100)]
Assume POSIX ctype.h;  don't vet toupper()'s parameter.

9 years agoExplain isascii() test more in netsec_set_sasl_params().
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.

9 years agoAssume POSIX ctype.h; don't vet toupper()'s parameter.
Ralph Corderoy [Fri, 21 Oct 2016 20:10:42 +0000 (21:10 +0100)]
Assume POSIX ctype.h;  don't vet toupper()'s parameter.

9 years agoAssume POSIX ctype.h; don't vet tolower()'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.

9 years agoAssume 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.

9 years agoOops, stop showbuildenv reading from stdin when run from a TTY.
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.

9 years agoAssume POSIX ctype.h; don't vet tolower()'s parameter.
Ralph Corderoy [Fri, 21 Oct 2016 13:42:35 +0000 (14:42 +0100)]
Assume POSIX ctype.h;  don't vet tolower()'s parameter.

9 years agoAssume 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.

9 years agoAssume 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.