pop_dele.c
上传用户:dayuan858
上传日期:2007-01-04
资源大小:194k
文件大小:2k
源码类别:

网络编程

开发平台:

Unix_Linux

  1. /*
  2.  * Copyright (c) 1989 Regents of the University of California.
  3.  * All rights reserved.  The Berkeley software License Agreement
  4.  * specifies the terms and conditions for redistribution.
  5.  */
  6. /*
  7.  * Copyright (c) 1997 by Qualcomm Incorporated.
  8.  */
  9. #include <config.h>
  10. #include <stdio.h>
  11. #include <sys/types.h>
  12. #include <ctype.h>
  13. #include <popper.h>
  14. /* 
  15.  *  dele:   Delete a message from the POP maildrop
  16.  */
  17. pop_dele (p)
  18. POP     *   p;
  19. {
  20.     MsgInfoList     *   mp;         /*  Pointer to message info list */
  21.     int                 msg_num;
  22.     /*  Convert the message number parameter to an integer */
  23.     msg_num = atoi(p->pop_parm[1]);
  24.     /*  Is requested message out of range? */
  25.     if ((msg_num < 1) || (msg_num > p->msg_count))
  26.         return (pop_msg (p,POP_FAILURE,"Message %d does not exist.",msg_num));
  27.     /*  Get a pointer to the message in the message list */
  28.     mp = &(p->mlp[msg_num-1]);
  29.     /*  Is the message already flagged for deletion? */
  30.     if (mp->del_flag)
  31.         return (pop_msg (p,POP_FAILURE,"Message %d has already been deleted.",
  32.             msg_num));
  33.     /*  Flag the message for deletion */
  34.     mp->del_flag = TRUE;
  35. #ifdef DEBUG
  36.     if(p->debug)
  37.         pop_log(p,POP_DEBUG,"Deleting message %u at offset %u of length %u",
  38.             mp->number,mp->offset,mp->length);
  39. #endif
  40.     /*  Update the messages_deleted and bytes_deleted counters */
  41.     p->msgs_deleted++;
  42.     p->bytes_deleted += mp->length;
  43.     p->dirty = 1;
  44.     /*  Update the last-message-accessed number if it is lower than 
  45.         the deleted message */
  46.     if (p->last_msg < msg_num) p->last_msg = msg_num;
  47.     return (pop_msg (p,POP_SUCCESS,"Message %d has been deleted.",msg_num));
  48. }