Exemple #1
0
char		*get_commands(const int fd, t_data *data)
{
  char		*line;

  if (data->exit_prog || (!data->ret_val < 0))
    return (NULL);
  init_cmd_vars(data);
  print_prompt(data);
  if (!(line = get_next_line(fd)))
    {
      my_printf("exit\n");
      return (NULL);
    }
  data->cmdlist = parsing_line(line, data->delim);
  parsing_commands(data);
  data->nbr_cmds++;
  return (line);
}
Exemple #2
0
int parse_config_file(const char * filename, server_configuration * config)
{
    /* Trying to open configuration file */
    FILE *f_cfg = fopen(filename, "r");
    CHECK_VALUE_CONF(f_cfg, "Can't open configuration.", 0);

    /* Start parsing configuratin file */
    char line[MAX_CONFIG_STRLEN + 1];
    bzero(line, sizeof(line));

    int line_num = 0;
    int len;
    char * backsl;
    char * rem_start;	/* Remark start */
    while(fgets(line, MAX_CONFIG_STRLEN, f_cfg))
    {
        ++line_num;
        if( (rem_start = strchr(line, '#')) )
            *rem_start = '\0';

        len = strlen(line);
        if(len && (line[len - 1] == '\n') )
            line[len - 1] = '\0';
        /* If the string contain hyphenation */
        while( (backsl = is_line_hyphen(line)) )
        {
            static char next_line[MAX_CONFIG_STRLEN + 1];
            ++line_num;
            *backsl = '\0';

            if(!fgets(next_line, MAX_CONFIG_STRLEN, f_cfg))
                break;

            if( (rem_start = strchr(next_line, '#')) )
                *rem_start = '\0';

            len = strlen(next_line);
            if(next_line[len - 1] == '\n')
                next_line [len - 1] = '\0';

            if((strlen(next_line) + strlen(line)) > MAX_CONFIG_STRLEN)
            {
                fprintf(stderr, "Too long string in configuration file. Line #%d:\n", line_num);
                fprintf(stderr, LINE_DIV);
                fprintf(stderr, "%s\n", next_line);
                fprintf(stderr, LINE_DIV);
                return FAIL;
            }
            /* Adding next line to current line */
            strncat(line, next_line, MAX_CONFIG_STRLEN);
        }

        if( !parsing_line(line, config))
        {
            fprintf(stderr, "Problem with parsing line #%d:\n", line_num);
            fprintf(stderr, LINE_DIV);
            fprintf(stderr, "%s\n", line);
            fprintf(stderr, LINE_DIV);
            return FAIL;
        }
    }

    /* Trying to close configuration file */
    if(fclose(f_cfg) == EOF)
    {
        perror("Can't close file");
        return FAIL;
    }

    return OK;
}