You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by Alexei Kosut <ak...@hyperreal.com> on 1996/03/21 05:20:54 UTC

cvs commit: apache/src mod_mime.c

akosut      96/03/20 20:20:53

  Modified:    src       mod_mime.c
  Log:
  Rewrote the filename extenstion checking code so the order is irrelevant.
  i.e. foo.html.en.gz and foo.en.gz.html will give the same headers. The old
  code would ignore the en and gz in the latter example.
  
  Another benefit is that you can, for example, do "AddLanguage en html"
  and all HTML files will be tagged as English as well as content-type
  text/html (asuming this is so defined in mime.types or an AddType).
  
  Revision  Changes    Path
  1.3       +14 -25    apache/src/mod_mime.c
  
  Index: mod_mime.c
  ===================================================================
  RCS file: /export/home/cvs/apache/src/mod_mime.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -C3 -r1.2 -r1.3
  *** mod_mime.c	1996/02/22 11:47:11	1.2
  --- mod_mime.c	1996/03/21 04:20:52	1.3
  ***************
  *** 203,239 ****
    	return OK;
        }
        
  !     if((i=rind(fn,'.')) < 0) return DECLINED;
  !     ++i;
    
  !     if ((type = table_get (conf->encoding_types, &fn[i])))
  !     {
  !         r->content_encoding = type;
    
  ! 	/* go back to previous extension to try to use it as a language */
    	
  !         fn[i-1] = '\0';
  ! 	if((i=rind(fn,'.')) < 0) return OK;
  ! 	++i;
  !     }
  ! 
  !     if ((type = table_get (conf->language_types, &fn[i])))
  !     {
  !         r->content_language = type;
    
  ! 	/* go back to previous extension to try to use it as a type */
  ! 	
  !         fn[i-1] = '\0';
  ! 	if((i=rind(fn,'.')) < 0) return OK;
  ! 	++i;
        }
    
  -     if ((type = table_get (conf->forced_types, &fn[i]))
  - 	|| (type = table_get (hash_buckets[hash(fn[i])], &fn[i])))
  -     {
  -         r->content_type = type;
  -     }
  -     
        return OK;
    }
    
  --- 203,228 ----
    	return OK;
        }
        
  !     /* Parse filename extensions, which can be in any order */
  !     while ((i = rind (fn, '.')) >= 0) {
  !       ++i;
    
  !       /* Check for Content-Type */
  !       if ((type = table_get (conf->forced_types, &fn[i]))
  ! 	  || (type = table_get (hash_buckets[hash(fn[i])], &fn[i])))
  !         r->content_type = type;
    
  !       /* Check for Content-Language */
  !       if ((type = table_get (conf->language_types, &fn[i])))
  ! 	  r->content_language = type;
    	
  !       /* Check for Content-Encoding */
  !       if ((type = table_get (conf->encoding_types, &fn[i])))
  !           r->content_encoding = type;
    
  !       fn[i-1] = '\0';
        }
    
        return OK;
    }