** complete copyright information.
*/
+#include <unistd.h>
#include <h/mh.h>
#include <fcntl.h>
#include <errno.h>
+#include <sys/stat.h>
/*
** Link message into a folder. Return the new number
*/
int
-folder_addmsg (struct msgs **mpp, char *msgfile, int selected,
+folder_addmsg(struct msgs **mpp, char *msgfile, int selected,
int unseen, int preserve, int deleting, char *from_dir)
{
int infd, outfd, linkerr, msgnum;
mp = *mpp;
/* should we preserve the numbering of the message? */
- if (preserve && (msgnum = m_atoi (msgfile)) > 0) {
+ if (preserve && (msgnum = m_atoi(msgfile)) > 0) {
;
} else if (mp->nummsg == 0) {
/* check if we are adding to empty folder */
** extend message status range to cover this message number.
*/
if (msgnum > mp->hghoff) {
- if ((mp = folder_realloc (mp, mp->lowoff, msgnum + 100)))
+ if ((mp = folder_realloc(mp, mp->lowoff, msgnum + 100)))
*mpp = mp;
else {
- advise (NULL, "unable to allocate folder storage");
+ advise(NULL, "unable to allocate folder storage");
return -1;
}
} else if (msgnum < mp->lowoff) {
- if ((mp = folder_realloc (mp, msgnum, mp->hghoff)))
+ if ((mp = folder_realloc(mp, msgnum, mp->hghoff)))
*mpp = mp;
else {
- advise (NULL, "unable to allocate folder storage");
+ advise(NULL, "unable to allocate folder storage");
return -1;
}
}
** If a message is already in that slot,
** then loop to next available slot.
*/
- if (does_exist (mp, msgnum))
+ if (does_exist(mp, msgnum))
continue;
/* setup the bit flags for this message */
- clear_msg_flags (mp, msgnum);
- set_exists (mp, msgnum);
+ clear_msg_flags(mp, msgnum);
+ set_exists(mp, msgnum);
/* should we set the SELECT_UNSEEN bit? */
if (unseen) {
- set_unseen (mp, msgnum);
+ set_unseen(mp, msgnum);
}
/* should we set the SELECTED bit? */
if (selected) {
- set_selected (mp, msgnum);
-
- /* check if highest or lowest selected */
- if (mp->numsel == 0) {
- mp->lowsel = msgnum;
- mp->hghsel = msgnum;
- } else {
- if (msgnum < mp->lowsel)
- mp->lowsel = msgnum;
- if (msgnum > mp->hghsel)
- mp->hghsel = msgnum;
- }
-
- /* increment number selected */
- mp->numsel++;
+ set_selected(mp, msgnum);
}
/*
/* increment message count */
mp->nummsg++;
- nmsg = m_name (msgnum);
- snprintf (newmsg, sizeof(newmsg), "%s/%s", mp->foldpath, nmsg);
+ nmsg = m_name(msgnum);
+ snprintf(newmsg, sizeof(newmsg), "%s/%s", mp->foldpath, nmsg);
/*
** Now try to link message into folder. Then run the
** Run the add hook if the message is getting copied or
** linked somewhere else.
*/
- if (link (msgfile, newmsg) != -1) {
+ if (link(msgfile, newmsg) != -1) {
if (deleting) {
- (void)snprintf(oldmsg, sizeof (oldmsg), "%s/%s", from_dir, msgfile);
- (void)ext_hook("ref-hook", oldmsg, newmsg);
+ snprintf(oldmsg, sizeof (oldmsg), "%s/%s",
+ from_dir, msgfile);
+ ext_hook("ref-hook", oldmsg, newmsg);
} else
- (void)ext_hook("add-hook", newmsg, (char *)0);
+ ext_hook("add-hook", newmsg, NULL);
return msgnum;
} else {
linkerr = errno;
-#ifdef EISREMOTE
- if (linkerr == EISREMOTE)
- linkerr = EXDEV;
-#endif /* EISREMOTE */
-
/*
** Check if the file in our desired location is
** the same as the source file. If so, then just
** slot (hghmsg+1).
*/
if (linkerr == EEXIST) {
- if (stat (msgfile, &st2) == 0 && stat (newmsg, &st1) == 0
+ if (stat(msgfile, &st2) == 0 && stat(newmsg, &st1) == 0
&& st2.st_ino == st1.st_ino) {
return msgnum;
} else {
** error, else just copy the message.
*/
if (linkerr == EXDEV) {
- if (stat (newmsg, &st1) == 0) {
- advise (NULL, "message %s:%s already exists", mp->foldpath, newmsg);
+ if (stat(newmsg, &st1) == 0) {
+ advise(NULL, "message %s:%s already exists", mp->foldpath, newmsg);
return -1;
} else {
- if ((infd = open (msgfile, O_RDONLY)) == -1) {
- advise (msgfile, "unable to open message %s", msgfile);
+ if ((infd = open(msgfile, O_RDONLY)) == -1) {
+ advise(msgfile, "unable to open message %s", msgfile);
return -1;
}
- fstat (infd, &st1);
- if ((outfd = creat (newmsg, (int) st1.st_mode & 0777)) == -1) {
- advise (newmsg, "unable to create");
- close (infd);
+ fstat(infd, &st1);
+ if ((outfd = creat(newmsg, (int) st1.st_mode & 0777)) == -1) {
+ advise(newmsg, "unable to create");
+ close(infd);
return -1;
}
- cpydata (infd, outfd, msgfile, newmsg);
- close (infd);
- close (outfd);
+ cpydata(infd, outfd, msgfile, newmsg);
+ close(infd);
+ close(outfd);
if (deleting) {
- (void)snprintf(oldmsg, sizeof (oldmsg), "%s/%s", from_dir, msgfile);
- (void)ext_hook("ref-hook", oldmsg, newmsg);
+ snprintf(oldmsg, sizeof oldmsg,
+ "%s/%s",
+ from_dir,
+ msgfile);
+ ext_hook("ref-hook", oldmsg, newmsg);
} else
- (void)ext_hook("add-hook", newmsg, (char *)0);
+ ext_hook("add-hook", newmsg, NULL);
return msgnum;
}
** Else, some other type of link error,
** so just return error.
*/
- advise (newmsg, "error linking %s to", msgfile);
+ advise(newmsg, "error linking %s to", msgfile);
return -1;
}
}