std::ifstream создет каталог, а не файл, при использовании совместно с gtk+
Дорогие форумчане!
Пишу программу с использование gtk+. У нее должен быть файл с настройками. Чтобы понять, необходимо ли создавать этот файл есть bool функция, которая его ищет( обычный std::ifstream.is_open()). Сама по себе функция делает все корректно, но при её связке с gtk, происходит что-то непонятное : во-первых создается каталог с именем искомого файла, а во-вторых это каталог, а не файл.
Использую ArchLinux.
Заранее спасибо!
В main вызывается функция app_init
int app_init(int *argc, char ***argv){
gtk_init(argc, argv);
if(!(search_cfg())){
start_setup();
}
return 0;
}
Вот как реализована функция поиска :
bool search_cfg(){
std::ifstream cfg(CFG_PATH);
return cfg.is_open();
}
CFG_PATH = strcat(getenv("HOME"),"/.config/marshmallow_gif.txt")
Функция start_setup :
void start_setup(){
GtkWidget *window = create_window();
g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show(window);
gtk_main();
}
И, наконец, функция create_window :
static GtkWidget * create_window(){
GtkWidget * setup_win;
GtkBuilder * setup_win_builder;
GError * err_msg = NULL;
setup_win_builder = gtk_builder_new();
if(!(gtk_builder_add_from_file(setup_win_builder, START_SETUP_FORM, &err_msg))){
g_critical("Unable to load form file %s", err_msg->message);
g_error_free(err_msg);
exit(10);
}
gtk_builder_connect_signals(setup_win_builder, NULL);
setup_win = GTK_WIDGET(gtk_builder_get_object(setup_win_builder, "setup_win"));
if(!(setup_win)){
g_critical("Unable to load window");
exit(11);
}
g_object_unref(setup_win_builder);
gtk_container_set_border_width(GTK_CONTAINER(setup_win), 7);
return setup_win;
}
Если вызывать функции search_cfg и start_setup по-отдельности, то ничего не происходит(как и должно), но при их связке создается каталог с другими каталогами и файлами.
marshmallow_gif.txt
|
----.cache
| |
| ----event-sound-cache.tdb.a60336117c724b1dbbb14ce6079fc821.x86_64-pc-linux-gnu
----pulse
|
----cookie
Заранее благодарю за решение!