rfc2045find.c
上传用户:s81996212
上传日期:2007-01-04
资源大小:722k
文件大小:1k
源码类别:

WEB邮件程序

开发平台:

C/C++

  1. /*
  2. ** Copyright 1998 - 1999 Double Precision, Inc.  See COPYING for
  3. ** distribution information.
  4. */
  5. /*
  6. ** $Id: rfc2045find.c,v 1.3 1999/12/06 13:29:02 mrsam Exp $
  7. */
  8. #include "rfc2045.h"
  9. #include <ctype.h>
  10. struct rfc2045findstruct {
  11. const char *partnum;
  12. struct rfc2045 *ptr;
  13. } ;
  14. static void do_decode(struct rfc2045 *p, struct rfc2045id *id, void *ptr)
  15. {
  16. struct rfc2045findstruct *fs=(struct rfc2045findstruct *)ptr;
  17. const char *partnum=fs->partnum;
  18. unsigned n;
  19. while (id)
  20. {
  21. if (!isdigit((int)(unsigned char)*partnum)) return;
  22. n=0;
  23. while (isdigit((int)(unsigned char)*partnum))
  24. n=n*10 + *partnum++ - '0';
  25. if (*partnum)
  26. {
  27. if (*partnum != '.') return;
  28. ++partnum;
  29. }
  30. if (n != (unsigned)id->idnum) return;
  31. id=id->next;
  32. }
  33. if ( *partnum == '') fs->ptr=p;
  34. }
  35. struct rfc2045 *rfc2045_find(struct rfc2045 *p, const char *str)
  36. {
  37. struct rfc2045findstruct fs;
  38. fs.partnum=str;
  39. fs.ptr=0;
  40. rfc2045_decode(p, &do_decode, &fs);
  41. return (fs.ptr);
  42. }