G_MODULE_EXPORT gboolean on_menu_quit_activate(void) { gint wx = 0, wy = 0, width = 0, height = 0; gchar buf[16]; int i = 0; gint length = g_list_length(gummi->tabmanager->tabs); motion_pause_compile_thread(gummi->motion); for (i = 0; i < length; i++) { gtk_notebook_set_current_page(gui->tabmanagergui->notebook, i); tabmanager_set_active_tab(i); gint ret = check_for_save(g_active_editor); if (GTK_RESPONSE_YES == ret) { gui_save_file(g_active_tab, FALSE); } else if (GTK_RESPONSE_CANCEL == ret || GTK_RESPONSE_DELETE_EVENT == ret) { motion_resume_compile_thread(gummi->motion); return TRUE; } } /* Stop compile thread */ if (length > 0) motion_stop_compile_thread(gummi->motion); gboolean is_maximized; g_object_get(gui->mainwindow, "is-maximized", &is_maximized, NULL); if (!is_maximized) { gtk_window_get_size(gui->mainwindow, &width, &height); gtk_window_get_position(gui->mainwindow, &wx, &wy); config_begin(); config_set_value("mainwindow_x", g_ascii_dtostr(buf, 16, (double)wx)); config_set_value("mainwindow_y", g_ascii_dtostr(buf, 16, (double)wy)); config_set_value("mainwindow_w", g_ascii_dtostr(buf, 16, (double)width)); config_set_value("mainwindow_h", g_ascii_dtostr(buf, 16, (double)height)); config_commit(); } gtk_main_quit(); for (i = 0; i < length; i++) editor_destroy(GU_TAB_CONTEXT(g_list_nth_data (gummi->tabmanager->tabs, i))->editor); printf(" ___ \n" " {o,o} Thanks for using Gummi!\n" " |)__) I welcome your feedback at:\n" " -\"-\"- http://gummi.midnightcoding.org\n\n"); return FALSE; }
/* This is: php/Zend/configure.in This is going to be different from FLTK, mainly, since we have to be a tard bit different. Noamlly, Zend is configured within php's main configure.in. We are doing this independently, so that we can do a components based build. Files that need to be generated: - php/zend/zend_config.h Notes: - Zend obviously has windows optimized files (.d/.dsp)! - It has some head-breaking checks. All added now, cDetect however might wants to adopt the dlsym check. */ int main(int argc, char** argv) { config_begin(); ac_register(); // We register some options here. // cachefile is very neccessary for our caching... config_option_register_group("cDetect extra"); config_option_register("cache",0,"cache.txt",0,"cDetect cache file to use."); config_option_register("out",0,"php/Zend/_zend_config.h",0,"Output config.h."); // Zend options config_option_register_group("Zend Engine"); config_option_register( "with-zend-vm",0,"CALL",0, "Set virtual machine dispatch method. " "Type is one of \"CALL\", \"SWITCH\" or \"GOTO\"" ); config_option_register("enable-maintainer-zts",0,"no","yes","Enable thread safety - for code maintainers only!!"); config_option_register("disable-inline-optimization",0,"no","yes","If building zend_execute.lo fails, try this switch"); config_option_register("enable-debug",0,"no","yes","If building zend_execute.lo fails, try this switch"); config_option_register("enable-zend-signals",0,"no","yes","Use zend signal handling"); config_option_register("enable-debug",0,"no","yes","If building zend_execute.lo fails, try this switch"); if(config_options(argc, argv)) { // Build stuff config_build_register("util/zend_config.h.in","php/Zend/zend_config.h"); // The main logic happens here, just as always. zend_config_process(); // Zend defines a top part, we define it too. // NOTE: It is obvious, that it wants to define this stuff if we are NOT on microsoft! // This check could be made simpler by FAR... config_tool_define( "ZEND_TOP", "#if defined(__GNUC__) && __GNUC__ >= 4\n" "# define ZEND_API __attribute__ ((visibility(\"default\")))\n" "# define ZEND_DLEXPORT __attribute__ ((visibility(\"default\")))\n" "#else\n" "# define ZEND_API\n" "# define ZEND_DLEXPORT\n" "#endif\n" "\n" "#define ZEND_DLIMPORT\n" "\n" "/* Define if you want to enable memory limit support */\n" "#define MEMORY_LIMIT 0\n" ); // Aaaand of course, a bottom. // Again, this could be simplified. config_tool_define( "ZEND_BOTTOM", "#ifndef ZEND_ACCONFIG_H_NO_C_PROTOS\n" "\n" "#ifdef HAVE_STDLIB_H\n" "# include <stdlib.h>\n" "#endif\n" "\n" "#ifdef HAVE_SYS_TYPES_H\n" "# include <sys/types.h>\n" "#endif\n" "\n" "#ifdef HAVE_SYS_SELECT_H\n" "#include <sys/select.h>\n" "#endif\n" "\n" "#ifdef HAVE_IEEEFP_H\n" "# include <ieeefp.h>\n" "#endif\n" "\n" "#ifdef HAVE_STRING_H\n" "# include <string.h>\n" "#else\n" "# include <strings.h>\n" "#endif\n" "\n" "#if ZEND_BROKEN_SPRINTF\n" "int zend_sprintf(char *buffer, const char *format, ...);\n" "#else\n" "# define zend_sprintf sprintf\n" "#endif\n" "\n" "#include <math.h>\n" "\n" "/* To enable the is_nan, is_infinite and is_finite PHP functions */\n" "#ifdef NETWARE\n" " #define HAVE_ISNAN 1\n" " #define HAVE_ISINF 1\n" " #define HAVE_ISFINITE 1\n" "#endif\n" "\n" "#ifndef zend_isnan\n" "#ifdef HAVE_ISNAN\n" "#define zend_isnan(a) isnan(a)\n" "#elif defined(HAVE_FPCLASS)\n" "#define zend_isnan(a) ((fpclass(a) == FP_SNAN) || (fpclass(a) == FP_QNAN))\n" "#else\n" "#define zend_isnan(a) 0\n" "#endif\n" "#endif\n" "\n" "#ifdef HAVE_ISINF\n" "#define zend_isinf(a) isinf(a)\n" "#elif defined(INFINITY)\n" "/* Might not work, but is required by ISO C99 */\n" "#define zend_isinf(a) (((a)==INFINITY)?1:0)\n" "#elif defined(HAVE_FPCLASS)\n" "#define zend_isinf(a) ((fpclass(a) == FP_PINF) || (fpclass(a) == FP_NINF))\n" "#else\n" "#define zend_isinf(a) 0\n" "#endif\n" "\n" "#ifdef HAVE_FINITE\n" "#define zend_finite(a) finite(a)\n" "#elif defined(HAVE_ISFINITE) || defined(isfinite)\n" "#define zend_finite(a) isfinite(a)\n" "#elif defined(fpclassify)\n" "#define zend_finite(a) ((fpclassify((a))!=FP_INFINITE&&fpclassify((a))!=FP_NAN)?1:0)\n" "#else\n" "#define zend_finite(a) (zend_isnan(a) ? 0 : zend_isinf(a) ? 0 : 1)\n" "#endif\n" "\n" "#endif /* ifndef ZEND_ACCONFIG_H_NO_C_PROTOS */\n" "\n" "#ifdef NETWARE\n" "#ifdef USE_WINSOCK\n" "#/*This detection against winsock is of no use*/ undef HAVE_SOCKLEN_T\n" "#/*This detection against winsock is of no use*/ undef HAVE_SYS_SOCKET_H\n" "#endif\n" "#endif\n" ); // Do some checks ac_header_stdc(); zend_mature_stdc(); ac_type_size_t(); zend_type_checks(); ac_header_mmap_anonymous(); ac_header_dirent(); config_function_check_library("dlopen", "dl"); config_function_check("vprintf"); config_function_check("memcmp"); config_function_check("alloca"); config_function_check("memcpy"); config_function_check("strdup"); config_function_check("getpid"); config_function_check("kill"); config_function_check("strtod"); config_function_check("strtol"); config_function_check("finite"); config_function_check("fpclass"); config_function_check("sigsetjmp"); config_function_check("finite"); config_function_check("isfinite"); config_function_check("isinf"); config_function_check("isnan"); config_function_check("sigaction"); // An OS check. #if __APPLE__ || __DARWIN__ config_macro_define("DARWIN","1"); #endif // Complex checks zend_dlsym_check(); zend_mm_test(); zend_mmap_zero(); } config_end(); }
// Cool. TSRM is uber-easy. Lets take advantage of this ~100 configure.in. // Generate: php/TSRM/tsrm_config.h int main(int argc, char** argv){ config_begin(); ac_register(); config_option_register_group("cDetect extra"); config_option_register("cache",0,"cache.txt",0,"cDetect cache file to use."); config_option_register("out",0,"php/TSRM/_tsrm_config.h",0,"Output config.h."); // TSRM options config_option_register_group("TSRM: ThreadSafe Resource Management"); config_option_register("with-tsrm-pth",0,"no",0,"Use GNU Pth (supply PATH or \"yes\")"); config_option_register("with-tsrm-st",0,"no",0,"Use SGI's State Threads (supply PATH or \"yes\")"); config_option_register("with-tsrm-pthreads",0,"no","yes","Use POSIX pthreads (Default)"); config_option_register("with-tsrm-zts",0,"no","yes","Use POSIX pthreads (Default)"); if(config_options(argc, argv)) { // And encore! config_cache_register( config_option_get("cache") ); config_header_register( config_option_get("out") ); // options. if( // If neither of these are set, use the default. config_equal( config_option_get("with-tsrm-pth"), "no" ) || config_equal( config_option_get("with-tsrm-st"), "no" ) ) { config_option_set("with-tsrm-pthreads","yes"); config_macro_define("PTHREADS","1"); } if(config_equal( config_option_get("with-tsrm-zts"), "yes" )) { config_macro_define("ZTS","1"); } // Header ac_header_stdc(); ac_header_dirent(); config_header_check("utime.h"); config_header_check("dirent.h"); config_header_check("stdarg.h"); config_header_check("alloca.h"); config_header_check("unistd.h"); config_header_check("limits.h"); config_header_check("stdlib.h"); config_header_check("stdarg.h"); config_header_check("string.h"); config_header_check("float.h"); config_header_check("st.h"); // Function config_function_check("sigprocmask"); // Customs config_function_check_library("pthread_create","pthread") || config_macro_define("PTHREADS","1"); // Write a bit of extra chunk... char* tsrm_config_h = "php/TSRM/tsrm_config.h"; config_report("Writing %s\n", tsrm_config_h); cdetect_string_t src = cdetect_string_format( "#include \"_tsrm_config.h\"\n" "#ifdef HAVE_STDLIB_H\n" "#include <stdlib.h>\n" "#endif\n" ); cdetect_bool_t sc = cdetect_file_overwrite(tsrm_config_h, src); if(sc != CDETECT_TRUE) { config_report("!! Error: Could not write php/TSRM/tsrm_config.h!\n"); config_abort(); } cdetect_string_destroy(src); } config_end(); }