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); }
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; }