process_rq(FILE* fd, char* rq)
{
	char cmd[BUFSIZ], arg[BUFSIZ];

	if( fork() != 0 )
	 return;
	strcpy(arg, "./");
	if( sscanf(rq, "%s%s", cmd, arg+2) != 2 )
	 return;
	if( strcmp(cmd, "HEAD") != 0 )
		cannot_do(fd);
	else
		do_response(fd);
}
示例#2
0
文件: webserv.c 项目: acgtyrant/UULP
extern void process_rq(char *request, int sock_fd) {
  char cmd[BUFSIZ], arg[BUFSIZ];
  strcpy(arg, "./");
  sscanf(request, "%s %s", cmd, arg + 2);

  if (fork() != 0)
    return ;

  if (strcmp(cmd, "GET") != 0) {
    cannot_do(sock_fd);
  } else if (not_exist(arg)) {
    do_404(arg, sock_fd);
  } else if (is_dir(arg)) {
    do_ls(arg, sock_fd);
  } else if (ends_in_cgi(arg)) {
    do_exec(arg, sock_fd);
  } else {
    do_cat(arg, sock_fd);
  }
}
void process_rq(char* rq , int fd)
{
    char cmd[BUFSIZ] , arg[BUFSIZ] ;

    if(fork() != 0)
        return ;

    strcpy(arg , "./");
    if(sscanf(rq , "%s %s" , cmd , arg+2) != 2)
        return ;

    if(strcmp(cmd , "GET") != 0)
    {
        if(strcmp(cmd , "HEAD") != 0)
            cannot_do(fd);
        else if(not_exist(arg))
            do_404(arg , fd);
        else
        {
            if(isadir(arg))
            {
                strcat(arg , "index.html");
                printf("modified arg : %s\n"  ,arg);
                if(not_exist(arg))
                    do_404(arg , fd);
            }

            do_process_head(arg , fd);
        }
    }
    else if(not_exist(arg))
        do_404(arg , fd);
    else if(isadir(arg))
        do_ls(arg , fd);
    else if(ends_in_cgi(arg))
        do_exec(arg ,fd);
    else
        do_cat(arg , fd);
}
示例#4
0
文件: webserv.c 项目: ychmrsk/unixtp
void process_rq(char *rq, int fd)
{
  char cmd[BUFSIZ], arg[BUFSIZ];

  if (fork() != 0)
    return;

  strcpy(arg, "./");
  if (sscanf(rq, "%s%s", cmd, arg+2) != 2)
    return;

  if (strcmp(cmd, "GET") != 0)
    cannot_do(fd);
  else if (not_exist(arg))
    do_404(arg, fd);
  else if (isadir(arg))
    do_ls(arg, fd);
  else if (ends_in_cgi(arg))
    do_exec(arg, fd);
  else
    do_cat(arg, fd);
}
process_rq( char *rq, int fd )
{
    char	cmd[BUFSIZ], arg[BUFSIZ];

    /* create a new process and return if not the child */
    if ( fork() != 0 )
        return;

    strcpy(arg, "./");		/* precede args with ./ */
    if ( sscanf(rq, "%s%s", cmd, arg+2) != 2 )
        return;

    if ( strcmp(cmd,"GET") != 0 )
        cannot_do(fd);
    else if ( not_exist( arg ) )
        do_404(arg, fd );
    else if ( isadir( arg ) )
        do_ls( arg, fd );
    else if ( ends_in_cgi( arg ) )
        do_exec( arg, fd );
    else
        do_cat( arg, fd );
}