/* ----------------------------------------------------------------------------- 
 * mime.c
 *
 *     This file provides some mimimal MIME handling.
 * 
 * Author(s) : David Beazley (beazley@cs.uchicago.edu)
 *             Mike Sliczniak (mzsliczn@midway.uchicago.edu)
 *
 * Copyright (C) 1999-2000.  The University of Chicago
 * See the file LICENSE for information on usage and redistribution.	
 * ----------------------------------------------------------------------------- */

static char cvsroot[] = "$Header: /home/pastacvs/cvs-rep/vermicelli/tot/src/SWILL-0.1/Source/SWILL/mime.c,v 1.1 2005/01/27 08:46:25 dillema Exp $";

#include "swillint.h"

typedef struct {
  char *suffix;
  char *mimetype;
} MimeType;

static MimeType  types[] = {
  {"txt",  "text/plain"},
  {"htm",  "text/html"},
  {"html", "text/html"},
  {"gif",  "image/gif"},
  {"jpg",  "image/jpg"},
  {"jpeg", "image/jpg"},
  {"rgb",  "image/rgb"},
  {"png",  "image/png"},
  {"pdf",  "application/pdf"},
  { 0, 0},
};

/* -----------------------------------------------------------------------------
 * swill_guess_mimetype(DOH *fn)
 *
 * Give a filename, guess the mimetype based on its suffix
 * ----------------------------------------------------------------------------- */
 
char *
swill_guess_mimetype(const char *filename)
{
  char *cfilename;
  char *c;
  int i;

  cfilename = (char *) DohMalloc(strlen(filename)+1);
  strcpy(cfilename,filename);
  for (c = cfilename; *c; c++) {
    *c = tolower(*c);
  }
  c = cfilename+strlen(cfilename)-1;
  while (c >= cfilename) {
    if (*c == '.') {
      c++;
      for (i = 0; types[i].suffix; i++) {
	if (strcmp(c,types[i].suffix) == 0) {
	  DohFree(cfilename);
	  return types[i].mimetype;
	}
      }
      DohFree(cfilename);
      return "text/plain";
    }
    c--;
  }
  DohFree(cfilename);
  return "text/plain";
}


syntax highlighted by Code2HTML, v. 0.9.1