mtinit.c 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /*
  2. * Copyright (C) 2012 by egnite GmbH
  3. *
  4. * All rights reserved.
  5. *
  6. * Redistribution and use in source and binary forms, with or without
  7. * modification, are permitted provided that the following conditions
  8. * are met:
  9. *
  10. * 1. Redistributions of source code must retain the above copyright
  11. * notice, this list of conditions and the following disclaimer.
  12. * 2. Redistributions in binary form must reproduce the above copyright
  13. * notice, this list of conditions and the following disclaimer in the
  14. * documentation and/or other materials provided with the distribution.
  15. * 3. Neither the name of the copyright holders nor the names of
  16. * contributors may be used to endorse or promote products derived
  17. * from this software without specific prior written permission.
  18. *
  19. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  20. * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  21. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
  22. * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  23. * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
  24. * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
  25. * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
  26. * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
  27. * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  28. * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
  29. * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  30. * SUCH DAMAGE.
  31. *
  32. * For additional information see http://www.ethernut.de/
  33. */
  34. /*!
  35. * $Id$
  36. */
  37. #include <isc/list.h>
  38. #include <pro/uhttp/modules/mod_ssi.h>
  39. #include <pro/uhttp/mediatypes.h>
  40. extern ISC_LIST(MEDIA_TYPE_ENTRY) mediaTypeList;
  41. static char mtc_text[] = "text";
  42. static char mtc_image[] = "image";
  43. char mtc_application[] = "application";
  44. /* Extensions must be sorted in reverse order. */
  45. static MEDIA_TYPE_ENTRY mt_defaults[] = {
  46. #ifdef HTTP_MEDIATYPE_XML
  47. { ISC_LINK_INITIAL(MEDIA_TYPE_ENTRY), mtc_text, NULL, MTFLAG_INITIAL, MediaTypeHandlerText, "xml" },
  48. #endif
  49. { ISC_LINK_INITIAL(MEDIA_TYPE_ENTRY), mtc_text, "plain", MTFLAG_INITIAL, MediaTypeHandlerText, "txt" },
  50. #ifdef HTTP_MEDIATYPE_SVG
  51. { ISC_LINK_INITIAL(MEDIA_TYPE_ENTRY), mtc_image, "svg+xml", MTFLAG_INITIAL, MediaTypeHandlerBinary, "svg" },
  52. #endif
  53. #ifdef HTTP_MEDIATYPE_SHTML
  54. { ISC_LINK_INITIAL(MEDIA_TYPE_ENTRY), mtc_text, "html", MTFLAG_INITIAL, HttpSsiHandler, "shtml" },
  55. #endif
  56. { ISC_LINK_INITIAL(MEDIA_TYPE_ENTRY), mtc_image, NULL, MTFLAG_INITIAL, MediaTypeHandlerBinary, "png" },
  57. #ifdef HTTP_MEDIATYPE_PDF
  58. { ISC_LINK_INITIAL(MEDIA_TYPE_ENTRY), mtc_application, NULL, MTFLAG_INITIAL, MediaTypeHandlerBinary, "pdf" },
  59. #endif
  60. #ifdef HTTP_MEDIATYPE_JS
  61. { ISC_LINK_INITIAL(MEDIA_TYPE_ENTRY), mtc_text, "javascript", MTFLAG_INITIAL, MediaTypeHandlerText, "js" },
  62. #endif
  63. #ifdef HTTP_MEDIATYPE_JPG
  64. { ISC_LINK_INITIAL(MEDIA_TYPE_ENTRY), mtc_image, "jpeg", MTFLAG_INITIAL, MediaTypeHandlerBinary, "jpg" },
  65. #endif
  66. #ifdef HTTP_MEDIATYPE_JAR
  67. { ISC_LINK_INITIAL(MEDIA_TYPE_ENTRY), mtc_application, "x-java-archive", MTFLAG_INITIAL, MediaTypeHandlerBinary, "jar" },
  68. #endif
  69. { ISC_LINK_INITIAL(MEDIA_TYPE_ENTRY), mtc_text, NULL, MTFLAG_INITIAL, MediaTypeHandlerText, "html" },
  70. #ifdef HTTP_MEDIATYPE_HTM
  71. { ISC_LINK_INITIAL(MEDIA_TYPE_ENTRY), mtc_text, "html", MTFLAG_INITIAL, MediaTypeHandlerText, "htm" },
  72. #endif
  73. #ifdef HTTP_MEDIATYPE_GIF
  74. { ISC_LINK_INITIAL(MEDIA_TYPE_ENTRY), mtc_image, NULL, MTFLAG_INITIAL, MediaTypeHandlerBinary, "gif" },
  75. #endif
  76. #ifdef HTTP_MEDIATYPE_CSS
  77. { ISC_LINK_INITIAL(MEDIA_TYPE_ENTRY), mtc_text, NULL, MTFLAG_INITIAL, MediaTypeHandlerText, "css" },
  78. #endif
  79. #ifdef HTTP_MEDIATYPE_BMP
  80. { ISC_LINK_INITIAL(MEDIA_TYPE_ENTRY), mtc_image, NULL, MTFLAG_INITIAL, MediaTypeHandlerBinary, "bmp" }
  81. #endif
  82. };
  83. #define MT_DEFAULTS (sizeof(mt_defaults) / sizeof(MEDIA_TYPE_ENTRY))
  84. int MediaTypeInitDefaults(void)
  85. {
  86. int i;
  87. ISC_LIST_INIT(mediaTypeList);
  88. for (i = 0; i < MT_DEFAULTS; i++) {
  89. ISC_LIST_APPEND(mediaTypeList, &mt_defaults[i], media_link);
  90. }
  91. return 0;
  92. }