Всем привет!
Какой-то глупый затык, но в голову ничего не лезит, уже 2 дня ничего не могу понять.
Есть код:/************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <syslog.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
char ch_main_error[255]; //Error messages
int i_ini_file; //ID of ini-file
char ch_read_data_[1]; // Temporary variable for reading simbols from ini-file
char ch_read_data[255]; // Variable for buildinf string
int i_read_count; // Count of readed simbols
typedef struct{
char ch_string[255];
int i_type; /*0 - section, 1 - key, 2 - comment, 3 - empty string */
char ch_sec_name[20];
char ch_name[20];
char ch_value[255];
} str_ini_data;
//int y;
str_ini_data s_ini_data;
int iReadIniFile(char* ch_ini_file){
int i_num = 0;
i_read_count = 0;
strcpy(ch_read_data,"");
strcpy(ch_read_data_,"");
if ((i_ini_file = open(ch_ini_file, O_RDONLY)) < 0 ){
strcpy(ch_main_error,"IniParser:iReadIniFile: Can't open file.");
return -1;
}
str_ini_data *ptr_ini_data;
ptr_ini_data = &s_ini_data;
ptr_ini_data = (str_ini_data *) malloc(sizeof(str_ini_data));
while(i_read_count = read(i_ini_file,ch_read_data_,1)){
if (ch_read_data_[0] == '\n'){
ptr_ini_data = (str_ini_data *) reallocf(ptr_ini_data,(sizeof(str_ini_data)));
stpcpy(ptr_ini_data[i_num].ch_string, ch_read_data);
/*****/ printf("");
strcpy(ch_read_data,"");
strcpy(ch_read_data_,"");
i_num++;
}
strncat(ch_read_data,ch_read_data_,1);
}
free (ptr_ini_data);
return 0;
}
int main(){
strcpy(ch_main_error,"");
printf("%i\n%s\n",iReadIniFile("./lib.ini"),ch_main_error);
return 0;
}
/************************************************************/
Со строчкой printf(""); все работает, вопросов не возникает. Но как только каментю ее -- прога вылетает с созданием core-файла. Парни, подскажите, в чем проблема???? Может сама логика увеличения памяти под структуру неверная???
Еще вопрос: подскажите чем на FreeBSD кору разобрать удобно?
Заранее, огромное спасибо.