home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / CONTRIB / HTTPD / HTTPD_SO.TAR / httpd_1.3 / src / http_delete.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-04-10  |  1.3 KB  |  58 lines

  1. /*
  2.  * http_delete.c: Handles DELETE
  3.  * 
  4.  * Rob McCool
  5.  * 
  6.  */
  7.  
  8. #include "httpd.h"
  9.  
  10.  
  11. void handle_delete(char *name, char *args, int in, FILE *out) {
  12.     struct stat finfo;
  13.     char ct_bak[MAX_STRING_LEN];
  14.  
  15.     if(stat(name,&finfo) == -1) {
  16.         if(find_script("DELETE",name,args,in,out))
  17.             return;
  18.         if(errno==ENOENT) {
  19.             log_reason("file does not exist",name);
  20.             unmunge_name(name);
  21.             die(NOT_FOUND,name,out);
  22.         }
  23.         else {
  24.             log_reason("file permissions deny server access",name);
  25.             unmunge_name(name);
  26.             die(FORBIDDEN,name,out);
  27.         }
  28.     }
  29.     probe_content_type(name);
  30.     if(!strcmp(content_type,CGI_MAGIC_TYPE)) {
  31.         strcpy(content_type,ct_bak);
  32.         send_cgi("DELETE",name,"",args,&finfo,in,out);
  33.         return;
  34.     }
  35.     /* Not a script, do group ann thang */
  36.     die(NOT_IMPLEMENTED,"DELETE to non-script",out);
  37. }
  38.  
  39.  
  40. void delete_node(char *name, char *args, int in, FILE *out) {
  41.     struct stat finfo;
  42.     int s;
  43.  
  44.     s=translate_name(name,out);
  45.  
  46.     switch(s) {
  47.       case STD_DOCUMENT:
  48.         handle_delete(name,args,in,out);
  49.         return;
  50.       case REDIRECT_URL:
  51.         die(REDIRECT,name,out);
  52.       case SCRIPT_CGI:
  53.         exec_cgi_script("DELETE",name,args,in,out);
  54.       default:
  55.         die(NOT_IMPLEMENTED,"NCSA script exeuction of delete",out);
  56.     }
  57. }
  58.