ncsa-html.h
上传用户:ladybrid91
上传日期:2007-01-04
资源大小:287k
文件大小:3k
源码类别:

Web服务器

开发平台:

Unix_Linux

  1. /*
  2. ** ncsa-html.h
  3. **
  4. ** Copyright (c) 1995 Marcus E. Hennecke <marcush@leland.stanford.edu>
  5. ** Copyright (c) 1994-1995 Peter Eriksson <pen@signum.se>
  6. **
  7. ** This program is free software; you can redistribute it and/or modify
  8. ** it under the terms of the GNU General Public License as published by
  9. ** the Free Software Foundation; either version 2 of the License, or
  10. ** (at your option) any later version.
  11. **
  12. ** This program is distributed in the hope that it will be useful,
  13. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. ** GNU General Public License for more details.
  16. ** You should have received a copy of the GNU General Public License
  17. ** along with this program; if not, write to the Free Software
  18. ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  19. */
  20. #ifndef PHTTPD_NCSA_HTML_H
  21. #define PHTTPD_NCSA_HTML_H
  22. /* Defines the maximum inclusion level */
  23. #define MAXINCLUDE 8
  24. /* The segment structure contains all the necessary information for */
  25. /* one piece of the parsed file. */
  26. struct segment
  27. {
  28.     struct segment *next; /* Pointer to next segment */
  29.     char *block; /* Pointer to data block */
  30.     size_t size; /* Size of data block */
  31.     
  32.     /* The following two are set of this segment is the last of a block */
  33.     /* of memory that needs to be freed or unmapped. If free_start is */
  34.     /* not NULL, the block starting at free_start needs to be freed or */
  35.     /* unmapped. If free_size is not 0, the block is unmapped, otherwise */
  36.     /* it is freed. */
  37.     char *free_start; /* Start of block to be freed or unmapped */
  38.     size_t free_size; /* Size of block to be freed or unmapped */
  39.     fscentry_t *fep; /* File info of mapped block */
  40. };
  41. /* Contains all the necessary information during parsing that needs to */
  42. /* be passed on to the inclusion routines. */
  43. struct includeinfo
  44. {
  45.     struct connectioninfo *cip; /* The connection info */
  46.     int level; /* Inclusion level */
  47.     unsigned int fsc_flags;     /* Fscache flags to use */
  48.     fscentry_t *fep; /* Cache entry of urrent file */
  49.     time_t lastmod; /* Last modification date. This may be */
  50.                                 /* different from sb.st_mtime if a */
  51.                                 /* file or information from a file is */
  52.                                 /* included that is younger than the */
  53.                                 /* current file. */
  54.     size_t length; /* Content length */
  55.     char *errmsg; /* Message to be printed if errors occur */
  56.     char *timefmt; /* Format for all time displays */
  57.     char *sizefmt; /* Format for all size displays */
  58. };
  59. /* List element for the attribute pairs. */
  60. struct attr_pair
  61. {
  62.     struct attr_pair *next; /* Points to next pair */
  63.     char *name; /* Attribute name */
  64.     char *value; /* Attribute value */
  65. };
  66. /* Defines command names, the corresponding function and a flag to */
  67. /* indicate whether the parser should bother to parse the attributes. */
  68. struct command
  69. {
  70.     const char *name;
  71.     void (*function)(struct segment*, struct attr_pair*, struct includeinfo*);
  72.     int has_attributes;
  73. };
  74. #endif