/*
- * folder_delmsgs.c -- "remove" SELECTED messages from a folder
- *
- * This code is Copyright (c) 2002, by the authors of nmh. See the
- * COPYRIGHT file in the root directory of the nmh distribution for
- * complete copyright information.
- */
+** folder_delmsgs.c -- "remove" SELECTED messages from a folder
+**
+** This code is Copyright (c) 2002, by the authors of nmh. See the
+** COPYRIGHT file in the root directory of the nmh distribution for
+** complete copyright information.
+*/
#include <h/mh.h>
/*
- * 1) If we are using an external rmmproc, then exec it.
- * 2) Else if unlink_msgs is non-zero, then unlink the
- * SELECTED messages.
- * 3) Else rename SELECTED messages by prefixing name
- * with backup_prefix.
- *
- * If there is an error, return -1, else return 0.
- */
+** 1) If we are using an external rmmproc, then exec it.
+** 2) Else if unlink_msgs is non-zero, then unlink the
+** SELECTED messages.
+** 3) Else rename SELECTED messages by prefixing name
+** with backup_prefix.
+**
+** If there is an error, return -1, else return 0.
+*/
int
-folder_delmsgs (struct msgs *mp, int unlink_msgs, int nohook)
+folder_delmsgs(struct msgs *mp, int unlink_msgs, int nohook)
{
pid_t pid;
int msgnum, vecp, retval = 0;
char msgpath[BUFSIZ];
/*
- * If "rmmproc" is defined, exec it to remove messages.
- */
+ ** If "rmmproc" is defined, exec it to remove messages.
+ */
if (rmmproc) {
/* Unset the EXISTS flag for each message to be removed */
for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++) {
- if (is_selected (mp, msgnum))
- unset_exists (mp, msgnum);
+ if (is_selected(mp, msgnum))
+ unset_exists(mp, msgnum);
}
/* Mark that the sequence information has changed */
mp->msgflags |= SEQMOD;
if (mp->numsel > MAXARGS - 2)
- adios (NULL, "more than %d messages for %s exec", MAXARGS - 2,
+ adios(NULL, "more than %d messages for %s exec", MAXARGS - 2,
rmmproc);
- vec = (char **) calloc ((size_t) (mp->numsel + 2), sizeof(*vec));
+ vec = (char **) calloc((size_t) (mp->numsel + 2), sizeof(*vec));
if (vec == NULL)
- adios (NULL, "unable to allocate exec vector");
+ adios(NULL, "unable to allocate exec vector");
vecp = 1;
for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++) {
- if (is_selected (mp, msgnum) &&
- !(vec[vecp++] = strdup (m_name (msgnum))))
- adios (NULL, "strdup failed");
+ if (is_selected(mp, msgnum) &&
+ !(vec[vecp++] = strdup(m_name(msgnum))))
+ adios(NULL, "strdup failed");
}
vec[vecp] = NULL;
- fflush (stdout);
- vec[0] = r1bindex (rmmproc, '/');
+ fflush(stdout);
+ vec[0] = mhbasename(rmmproc);
switch (pid = vfork()) {
case -1:
- advise ("fork", "unable to");
+ advise("fork", "unable to");
return -1;
case 0:
- execvp (rmmproc, vec);
- fprintf (stderr, "unable to exec ");
- perror (rmmproc);
- _exit (-1);
+ execvp(rmmproc, vec);
+ fprintf(stderr, "unable to exec ");
+ perror(rmmproc);
+ _exit(-1);
default:
- return (pidwait (pid, -1));
+ return (pidwait(pid, -1));
}
}
/*
- * Either unlink or rename the SELECTED messages
- */
+ ** Either unlink or rename the SELECTED messages
+ */
for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++) {
- if (is_selected (mp, msgnum)) {
+ if (is_selected(mp, msgnum)) {
/* unselect message */
- unset_selected (mp, msgnum);
+ unset_selected(mp, msgnum);
mp->numsel--;
/*
- * Run the external hook on the message if one was specified in the context.
- * All we have is the message number; we have changed to the directory
- * containing the message. So, we need to extract that directory to form
- * the complete path. Note that the caller knows the directory, but has
- * no way of passing that to us.
- */
+ ** Run the external hook on the message if one
+ ** was specified in the context. All we have
+ ** is the message number; we have changed to
+ ** the directory containing the message. So,
+ ** we need to extract that directory to form the
+ ** complete path. Note that the caller knows the
+ ** directory, but has no way of passing that to us.
+ */
if (!nohook) {
- (void)snprintf(msgpath, sizeof (msgpath), "%s/%d", mp->foldpath, msgnum);
- (void)ext_hook("del-hook", msgpath, (char *)0);
+ snprintf(msgpath, sizeof (msgpath), "%s/%d",
+ mp->foldpath, msgnum);
+ ext_hook("del-hook", msgpath, NULL);
}
- dp = m_name (msgnum);
+ dp = m_name(msgnum);
if (unlink_msgs) {
/* just unlink the messages */
- if (unlink (dp) == -1) {
- admonish (dp, "unable to unlink");
+ if (unlink(dp) == -1) {
+ admonish(dp, "unable to unlink");
retval = -1;
continue;
}
} else {
/* or rename messages with standard prefix */
- strncpy (buf, m_backup (dp), sizeof(buf));
- if (rename (dp, buf) == -1) {
- admonish (buf, "unable to rename %s to", dp);
+ strncpy(buf, m_backup(dp), sizeof(buf));
+ if (rename(dp, buf) == -1) {
+ admonish(buf, "unable to rename %s to", dp);
retval = -1;
continue;
}
}
/* If removal was successful, decrement message count */
- unset_exists (mp, msgnum);
+ unset_exists(mp, msgnum);
mp->nummsg--;
}
}
/* Sanity check */
if (mp->numsel != 0)
- adios (NULL, "oops, mp->numsel should be 0");
+ adios(NULL, "oops, mp->numsel should be 0");
/* Mark that the sequence information has changed */
mp->msgflags |= SEQMOD;