+ /* viamail doesn't read the context and postproc isn't always what
+ we want, such as when running make distcheck. If we have the
+ absolute path, set postproc to point to post in the same
+ directory as this executable.
+ This could be generalized to handle relative paths (by
+ converting to absolute), to find the full path from PATH given
+ just the basename, and to squash out ../ but it's only needed
+ here. viamail is typically called from sendfiles, which
+ provides the absolute path.
+ */
+ if (argv[0] && argv[0][0] == '/' &&
+ strlen(argv[0]) - 3 < sizeof postpath) {
+ strncpy (postpath, argv[0], sizeof postpath - 1);
+ postpath[sizeof postpath - 1] = '\0';
+ if ((cp = strrchr (postpath, '/'))) {
+ struct stat st;
+
+ *(cp + 1) = '\0';
+ /* strlen ("post") <= sizeof postpath - (cp - postpath) - 2
+ but use strncat just in case the code above changes. */
+ strncat (postpath, "post", sizeof postpath - (cp - postpath) - 2);
+
+ if (stat (postpath, &st) == OK) {
+ postproc = postpath;
+ }
+ }
+ }
+