static gboolean gimp_option_dump_gimprc (const gchar *option_name, const gchar *value, gpointer data, GError **error) { GimpConfigDumpFormat format = GIMP_CONFIG_DUMP_NONE; gimp_open_console_window (); if (strcmp (option_name, "--dump-gimprc") == 0) format = GIMP_CONFIG_DUMP_GIMPRC; if (strcmp (option_name, "--dump-gimprc-system") == 0) format = GIMP_CONFIG_DUMP_GIMPRC_SYSTEM; else if (strcmp (option_name, "--dump-gimprc-manpage") == 0) format = GIMP_CONFIG_DUMP_GIMPRC_MANPAGE; if (format) { Gimp *gimp; gboolean success; gimp = g_object_new (GIMP_TYPE_GIMP, NULL); units_init (gimp); success = gimp_config_dump (format); g_object_unref (gimp); app_exit (success ? EXIT_SUCCESS : EXIT_FAILURE); } return FALSE; }
/** **************************************************************************************** * @brief Handles GAPC command completion events. * * @param[in] msgid Id of the message received. * @param[in] param Pointer to the parameters of the message. * @param[in] dest_id ID of the receiving task instance (TASK_GAP). * @param[in] src_id ID of the sending task instance. * * @return If the message was consumed or not. **************************************************************************************** */ int gapc_cmp_evt_handler(ke_msg_id_t msgid, struct gapc_cmp_evt *param, ke_task_id_t dest_id, ke_task_id_t src_id) { switch (param->operation) { case GAPC_ENCRYPT: if (param->status != CO_ERROR_NO_ERROR) { app_env.peer_device.bonded = 0; app_disconnect(); } break; case GAPC_DISCONNECT: if (app_env.state == APP_DISCONNECTING) { printf("app_exit() after GAPC_DISCONNECT_CMD completion\n"); app_exit(); } default: break; } return 0; }
// handler for call-state-change-events static void on_call_state(pjsua_call_id call_id, pjsip_event *e) { // get call infos pjsua_call_info ci; pjsua_call_get_info(call_id, &ci); // prevent warning about unused argument e PJ_UNUSED_ARG(e); // check call state if (ci.state == PJSIP_INV_STATE_CONFIRMED) { log_message("Call confirmed.\n"); call_confirmed = 1; // ensure that message is played from start if (play_id != PJSUA_INVALID_ID) { pjmedia_wav_player_port_set_pos(play_port, 0); } } if (ci.state == PJSIP_INV_STATE_DISCONNECTED) { log_message("Call disconnected.\n"); // exit app if call is finished/disconnected app_exit(); } }
static void gimp_show_version_and_exit (void) { gimp_open_console_window (); gimp_version_show (be_verbose); app_exit (EXIT_SUCCESS); }
/** **************************************************************************************** * @brief Handles GAPM command completion events. * * @param[in] msgid Id of the message received. * @param[in] param Pointer to the parameters of the message. * @param[in] dest_id ID of the receiving task instance (TASK_GAP). * @param[in] src_id ID of the sending task instance. * * @return If the message was consumed or not. **************************************************************************************** */ int gap_cmp_evt_handler(ke_msg_id_t msgid, struct gapm_cmp_evt *param, ke_task_id_t dest_id, ke_task_id_t src_id) { if (param->status == CO_ERROR_NO_ERROR) { if(param->operation == GAPM_RESET) { gapm_reset_cmd_completed = TRUE; app_set_mode(); // initialize } else if(param->operation == GAPM_SET_DEV_CONFIG) { // start scanning for target device printf("Scanning... \n"); app_env.state = APP_SCAN; app_inq(); } } else { if(param->operation == GAPM_SCAN_ACTIVE || param->operation == GAPM_SCAN_PASSIVE) { // scan operation has completed app_env.state = APP_IDLE; // check if the target device was found if (app_env.target_idx != -1) { // connect to the target printf("Connecting to target device...\n"); app_connect(app_env.target_idx); } else { if ( app_env.scan_attempts_made < MAX_SCANNING_ATTEMPTS ) { // do next scan attempt printf("Scanning...\n"); app_env.state = APP_SCAN; app_inq(); } else { // no more scan attempts -> exit application printf("Target device was not found. \n"); app_exit(); } } } } return (KE_MSG_CONSUMED); }
int main() { app_init(); app_run(); app_exit(); return 0; }
static void gimp_show_license_and_exit (void) { gimp_open_console_window (); gimp_version_show (be_verbose); g_print ("\n"); g_print (GIMP_LICENSE); g_print ("\n\n"); app_exit (EXIT_SUCCESS); }
static gboolean toolbox_delete (GtkWidget *widget, GdkEvent *event, gpointer data) { gulong handlerid; /** Stop toolbox_destroy from being called */ handlerid = g_signal_handler_find(widget, G_SIGNAL_MATCH_FUNC, 0, 0, NULL, toolbox_destroy, NULL); if (handlerid != 0) g_signal_handler_disconnect (G_OBJECT (widget), handlerid); /** If the app didn't exit, don't close the window */ return (!app_exit()); }
/** **************************************************************************************** * @brief Handles Discconnection completion event. * * @param[in] msgid Id of the message received. * @param[in] param Pointer to the parameters of the message. * @param[in] dest_id ID of the receiving task instance (TASK_GAP). * @param[in] src_id ID of the sending task instance. * * @return If the message was consumed or not. **************************************************************************************** */ int gapc_disconnect_ind_handler(ke_msg_id_t msgid, struct gapc_disconnect_ind *param, ke_task_id_t dest_id, ke_task_id_t src_id) { if (param->conhdl != app_env.peer_device.device.conhdl) { return 0; } if (app_env.state == APP_DISCONNECTING) { printf("Exiting... \n"); app_exit(); } else { // unexpected disconnection printf("Error: unexpected disconnection (reason = 0x%02X).\nProcedure failed\n", param->reason); app_exit(); } return 0; }
void help() { printf( "\n" " -f file.fds [1..8] write to flash (disk slot# 1..8)\n" " -s file.fds [1..8] read from flash\n" " -r file.fds read disk\n" " -R file.raw [file.bin] read disk (raw)\n" " -w file.fds write disk\n" " -l list flash contents\n" " -e [1..8 | all] erase flash\n" " -u file.fw update firmware\n" //" -D file [addr] [size] dump flash\n" //" -W file [addr] write flash\n" ); app_exit(1); }
void app_abort (gboolean no_interface, const gchar *abort_message) { #ifndef GIMP_CONSOLE_COMPILATION if (no_interface) #endif { g_print ("%s\n\n", abort_message); } #ifndef GIMP_CONSOLE_COMPILATION else { gui_abort (abort_message); } #endif app_exit (EXIT_FAILURE); }
static void main(uint8_t view, const app_t *app, svc_main_proc_event_t event) { hal_lcd_clear(); if(event & SVC_MAIN_PROC_EVENT_KEY_UP) { INC_MOD(PRIV(app)->item_current, svc_melodies_n); } else if (event & SVC_MAIN_PROC_EVENT_KEY_DOWN) { DEC_MOD(PRIV(app)->item_current, svc_melodies_n); } else if (event & SVC_MAIN_PROC_EVENT_KEY_ENTER_LONG) { app_exit(); } svc_lcd_puts(8, "pl"); svc_lcd_puts(0, " pla"); svc_lcd_putsn(4, 2, svc_melodies[PRIV(app)->item_current].title); if(event & SVC_MAIN_PROC_EVENT_KEY_ENTER) { svc_melody_play(PRIV(app)->item_current); } }
// handler for media-finished-events static pj_status_t on_media_finished(pjmedia_port *media_port, void *user_data) { PJ_UNUSED_ARG(media_port); PJ_UNUSED_ARG(user_data); if (call_confirmed) { // count repetition media_counter++; // exit app if repetition limit is reached if (app_cfg.repetition_limit <= media_counter) { app_exit(); } } pj_status_t status; return status; }
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::Resistance) { ui->setupUi(this); md = new gamers_model (); connect(this,SIGNAL(app_exit()),SLOT(close())); //qWarning ("%s",) //ui->centralWidget->setStyleSheet("background-image: url(./resistance-02.jpg)"); ui->centralWidget->setObjectName("main"); ui->centralWidget->setStyleSheet( "QWidget#main { " "border-image: url(./resistance-02.jpg) no-repeat;" "}" ); ui->listView ->setStyleSheet ("background-color: rgba(255, 255, 255, 70%); "); ui->pushButton_new_gamer->setStyleSheet ("background-color: rgba(255, 255, 255, 70%);"); ui->pushButton_dlete_gamer->setStyleSheet ("background-color: rgba(255, 255, 255, 70%);"); ui->pushButton_start_game->setStyleSheet("background-color: rgba(255, 255, 255, 70%);"); ui->listView->setModel(md); Actor_Delegate * AD = new Actor_Delegate; ui->listView->setItemDelegate(AD); ui->listView->show(); ui->listView->update(); }
static void main(uint8_t view, const app_t *app, svc_main_proc_event_t event) { hal_lcd_clear(); if(event & SVC_MAIN_PROC_EVENT_KEY_UP) { INC_MOD(PRIV(app)->countdown_current, svc_countdowns_n); } else if (event & SVC_MAIN_PROC_EVENT_KEY_DOWN) { DEC_MOD(PRIV(app)->countdown_current, svc_countdowns_n); } else if(event & SVC_MAIN_PROC_EVENT_KEY_ENTER_LONG) { app_exit(); } else if(event & SVC_MAIN_PROC_EVENT_KEY_DOWN_LONG) { svc_countdown_t cd; svc_countdown_get(PRIV(app_current)->countdown_current, &cd); if(cd.state == SVC_COUNTDOWN_STATE_STOP) { svc_countdown_start(PRIV(app_current)->countdown_current); } else { svc_countdown_stop(PRIV(app_current)->countdown_current); } } svc_countdown_t cd; svc_countdown_get(PRIV(app)->countdown_current, &cd); svc_lcd_puti(0, 2, cd.h); svc_lcd_puti(2, 2, cd.m); svc_lcd_puti(4, 2, cd.s); hal_lcd_seg_set(HAL_LCD_SEG_COLON, 1); hal_lcd_seg_set_blink(HAL_LCD_SEG_COLON, cd.state == SVC_COUNTDOWN_STATE_RUN); if(cd.state == SVC_COUNTDOWN_STATE_RUN) { svc_lcd_puts(8, "ru"); } else { svc_lcd_puts(8, "st"); } svc_lcd_puti(6, 2, PRIV(app)->countdown_current); if(event & SVC_MAIN_PROC_EVENT_KEY_ENTER) { app_set_view(app, 1); } }
static gboolean gimp_option_dump_pdb_procedures_deprecated (const gchar *option_name, const gchar *value, gpointer data, GError **error) { Gimp *gimp; GList *deprecated_procs; GList *iter; babl_init (); gimp = g_object_new (GIMP_TYPE_GIMP, NULL); /* Make sure to turn on compatibility mode so deprecated procedures * are included */ gimp->pdb_compat_mode = GIMP_PDB_COMPAT_ON; /* Initialize the list of procedures */ internal_procs_init (gimp->pdb); /* Get deprecated procedures */ deprecated_procs = gimp_pdb_get_deprecated_procedures (gimp->pdb); for (iter = deprecated_procs; iter; iter = g_list_next (iter)) { GimpProcedure *procedure = GIMP_PROCEDURE (iter->data); g_print ("%s\n", procedure->original_name); } g_list_free (deprecated_procs); g_object_unref (gimp); app_exit (EXIT_SUCCESS); return FALSE; }
int main(int argc, char** argv) { setbuf(stdout, NULL); printf("FDSemu console app (" __DATE__ "), based on code by loopy\n"); if (!dev_open() || argc<2 || argv[1][0] != '-') { help(); } /* if(!firmware_update()) //auto-update old firmware app_exit(1); */ bool success = false; switch (argv[1][1]) { case 'F': //convert file.bin file.fds success = FDS_bintofds(argv[2], argv[3]); break; case 'c': //convert file.fds file.bin success = FDS_convertDisk(argv[2], argv[3]); break; case 'C': //convert file.fds file.bin success = FDS_convertDiskraw03(argv[2], argv[3]); break; case 'f': //flash -f file.fds [slot] if (argc<3) help(); { int slot = 1; if (argc>3) sscanf(argv[3], "%i", &slot); success = FDS_writeFlash(argv[2], slot); } // app_exit(0); break; case 'L': //update the loader if (argc<3) help(); { success = WriteLoader(argv[2]); } // app_exit(0); break; case 'U': //flash -f file.fds [slot] if (argc<3) help(); { success = FW_writeFlash(argv[2]); } // app_exit(0); break; case 's': //save -s file.fds [slot] if (argc<3) help(); { int slot = 1; if (argc>3) sscanf(argv[3], "%i", &slot); //TODO - name should be optional, it's already in flash success = FDS_readFlashToFDS(argv[2], slot); } break; case 'w': if (argc<3) help(); success = FDS_writeDisk(argv[2]); break; case 'l': success = FDS_list(); break; case 'r': //readDisk -r file.fds if (argc<3) help(); success = FDS_readDisk(NULL, NULL, argv[2]); break; case 'R': //readRaw -R file.raw [file.bin] if (argc<3) help(); success = FDS_readDisk(argv[2], argc>3 ? argv[3] : NULL, NULL); break; case 'e': //erase -e [1..N | all] if (argc<3) help(); { if (!strcmp(argv[2], "all")) { success = true; for (int addr = 0; addr<dev_flashSize; addr += SLOTSIZE) success &= spi_erasePage(addr); } else { int slot = 1; sscanf(argv[2], "%i", &slot); printf("erasing slot %d\n", slot); if (slot > 0) { success = spi_erasePage(SLOTSIZE*(slot)); } else if (slot == 0) { printf("cannot erase the loader\n"); } //TODO - erase all slots of a game } } break; case 'D': //dump -D filename addr size if (argc<3) help(); { int addr = 0, size = dev_flashSize; if (argc>3) sscanf(argv[3], "%i", &addr); if (argc>4) sscanf(argv[4], "%i", &size); success = spi_dumpFlash(argv[2], addr, size); break; } case 'W': //write -W file [addr] if (argc<3) help(); { int addr = 0; if (argc>3) sscanf(argv[3], "%i", &addr); success = spi_writeFile(argv[2], addr); break; } /* case 'u': //update -u filename if(argc<3) help(); { if(spi_writeFile(argv[2], 0xff0000)) success=dev_updateFirmware(); break; } */ case 'T': //mfgTest -T ... { dev_selfTest(); success = true; break; } default: help(); } printf(success ? "Ok.\n" : "Failed.\n"); if (!success) dev_printLastError(); app_exit(success ? 0 : 1); }
int main(int argc, char** argv) { setbuf(stdout,NULL); printf("FDSStick console app (" __DATE__ ")\n"); if(!dev_open() || argc<2 || argv[1][0]!='-') { help(); } bool success=false; switch(argv[1][1]) { case 'u': //update -u filename if(argc<3) help(); { if(spi_writeFile(argv[2], 0xff0000)) success=dev_updateFirmware(); break; } case 'f': //flash -f file.fds [slot] if(argc<3) help(); { int slot=1; if(argc>3) sscanf(argv[3],"%i",&slot); success=FDS_writeFlash(argv[2], slot); } break; case 's': //save -s file.fds [slot] if(argc<3) help(); { int slot=1; if(argc>3) sscanf(argv[3],"%i",&slot); //TODO - name should be optional, it's already in flash success=FDS_readFlashToFDS(argv[2], slot); } break; case 'w': if(argc<3) help(); success=FDS_writeDisk(argv[2]); break; case 'l': success=FDS_list(); break; case 'r': //readDisk -r file.fds if(argc<3) help(); success=FDS_readDisk(NULL, NULL, argv[2]); break; case 'R': //readRaw -R file.raw [file.bin] if(argc<3) help(); success=FDS_readDisk(argv[2], argc>3?argv[3]:NULL, NULL); break; case 'e': //erase -e [1..N | all] if(argc<3) help(); { if(!strcmp(argv[2],"all")) { success=true; for(int addr=0; addr<dev_flashSize; addr+=SLOTSIZE) success &= spi_erasePage(addr); } else { int slot=1; sscanf(argv[2],"%i",&slot); success=spi_erasePage(SLOTSIZE*(slot-1)); //TODO - erase all slots of a game } } break; /* case 'D': //dump -D filename addr size if(argc<3) help(); { int addr=0, size=dev_flashSize; if(argc>3) sscanf(argv[3],"%i",&addr); if(argc>4) sscanf(argv[4],"%i",&size); success=spi_dumpFlash(argv[2], addr, size); break; } case 'W': //write -W file [addr] if(argc<3) help(); { int addr=0; if(argc>3) sscanf(argv[3],"%i",&addr); success=spi_writeFile(argv[2], addr); break; } case 't': //test ... if(argc<3) help(); { FDS_rawToBin(argv[2], argc>3? argv[3]: NULL); break; } */ default: help(); } printf(success? "Ok.\n": "Failed.\n"); if(!success) dev_printLastError(); app_exit(success?0:1); }
void MainWindow::on_actionExit_triggered() { emit app_exit(); }
// handler for "break-in-key"-events (e.g. ctrl+c) static void signal_handler(int signal) { // exit app app_exit(); }
static void toolbox_destroy (GtkWidget *widget, gpointer data) { app_exit(); }
void app_app_time_display_main(uint8_t view, const app_t *app, svc_main_proc_event_t event) { hal_lcd_set_mode(HAL_LCD_MODE_IMMEDIATE); hal_rtc_timedate_t td; hal_rtc_get(&td); hal_rtc_timedate_t *td_last = &(PRIV(app)->td_last); if(PRIV(app)->needs_clear) { PRIV(app)->needs_clear = 1; memset(td_last, 0xff, sizeof(hal_rtc_timedate_t)); //force update of all digits } if(event & SVC_MAIN_PROC_EVENT_KEY_ENTER_LONG) { app_set_view(app, 1); } else if(event & SVC_MAIN_PROC_EVENT_KEY_DOWN) { PRIV(app)->display_date = !PRIV(app)->display_date; PRIV(app)->needs_clear = 1; memset(td_last, 0xff, sizeof(hal_rtc_timedate_t)); //force update of all digits } else if(event & SVC_MAIN_PROC_EVENT_KEY_UP) { app_exit(); } if(PRIV(app)->needs_clear) { hal_lcd_clear(); } if(PRIV(app)->display_date) { hal_lcd_seg_set(HAL_LCD_SEG_COLON, 0); svc_lcd_puti(0, 4, td.year); svc_lcd_puti(4, 2, td.month); svc_lcd_puti(6, 2, td.dom); } else { switch(*(PRIV(app)->base)) { case BASE_DEC : hal_lcd_seg_set(HAL_LCD_SEG_COLON, 1); hal_lcd_seg_set_blink(HAL_LCD_SEG_COLON, 1); if(td.h != td_last->h) svc_lcd_puti_fast(0, 2, td.h); if(td.m != td_last->m) svc_lcd_puti_fast(2, 2, td.m); if(td.s != td_last->s) svc_lcd_puti_fast(4, 2, td.s); if(td.dom != td_last->dom) svc_lcd_puti_fast(6, 2, td.dom); break; case BASE_HEX : hal_lcd_seg_set(HAL_LCD_SEG_COLON, 1); hal_lcd_seg_set_blink(HAL_LCD_SEG_COLON, 1); if(td.h != td_last->h) svc_lcd_putix(0, 2, td.h); if(td.m != td_last->m) svc_lcd_putix(2, 2, td.m); if(td.s != td_last->s) svc_lcd_putix(4, 2, td.s); if(td.dom != td_last->dom) svc_lcd_putix(6, 2, td.dom); break; case BASE_BIN : hal_lcd_seg_set(HAL_LCD_SEG(1, 6), 1); hal_lcd_seg_set(HAL_LCD_SEG(2, 6), 1); hal_lcd_seg_set(HAL_LCD_SEG(3, 6), 1); if(td.h != td_last->h) { hal_lcd_seg_set(HAL_LCD_SEG(3, 1), td.h&(1<<0)); hal_lcd_seg_set(HAL_LCD_SEG(3, 5), td.h&(1<<1)); hal_lcd_seg_set(HAL_LCD_SEG(2, 1), td.h&(1<<2)); hal_lcd_seg_set(HAL_LCD_SEG(2, 5), td.h&(1<<3)); hal_lcd_seg_set(HAL_LCD_SEG(1, 1), td.h&(1<<4)); } if(td.m != td_last->m) { hal_lcd_seg_set(HAL_LCD_SEG(3, 2), td.m&(1<<0)); hal_lcd_seg_set(HAL_LCD_SEG(3, 4), td.m&(1<<1)); hal_lcd_seg_set(HAL_LCD_SEG(2, 2), td.m&(1<<2)); hal_lcd_seg_set(HAL_LCD_SEG(2, 4), td.m&(1<<3)); hal_lcd_seg_set(HAL_LCD_SEG(1, 2), td.m&(1<<4)); hal_lcd_seg_set(HAL_LCD_SEG(1, 4), td.m&(1<<5)); } if(td.s != td_last->s) { hal_lcd_seg_set(HAL_LCD_SEG(5, 0), td.s>(60/8)); hal_lcd_seg_set(HAL_LCD_SEG(5, 1), td.s>((60/8)*2)); hal_lcd_seg_set(HAL_LCD_SEG(5, 2), td.s>((60/8)*3)); hal_lcd_seg_set(HAL_LCD_SEG(5, 3), td.s>((60/8)*4)); hal_lcd_seg_set(HAL_LCD_SEG(4, 3), td.s>((60/8)*5)); hal_lcd_seg_set(HAL_LCD_SEG(4, 4), td.s>((60/8)*6)); hal_lcd_seg_set(HAL_LCD_SEG(4, 5), td.s>((60/8)*7)); hal_lcd_seg_set(HAL_LCD_SEG(4, 0), td.s>((60/8)*8)); } if(td.dom != td_last->dom) svc_lcd_puti_fast(6, 2, td.dom); break; } } if(td.dow != td_last->dow) svc_lcd_puts(8, svc_dow_to_string(td.dow, *(PRIV(app)->lang))); *td_last = td; PRIV(app)->needs_clear = 0; }
static gboolean _osx_app_exit (GtkosxApplication *app, gpointer user_data) { return !app_exit (); }
void toolbox_delete (GtkWidget *widget, gpointer data) { app_exit(); }
int main (int argc, char **argv) { GOptionContext *context; GError *error = NULL; const gchar *abort_message; gchar *basename; gint i; #if defined (__GNUC__) && defined (_WIN64) /* mingw-w64, at least the unstable build from late July 2008, * starts subsystem:windows programs in main(), but passes them * bogus argc and argv. __argc and __argv are OK, though, so just * use them. */ argc = __argc; argv = __argv; #endif #ifdef G_OS_WIN32 /* Reduce risks */ { typedef BOOL (WINAPI *t_SetDllDirectoryA) (LPCSTR lpPathName); t_SetDllDirectoryA p_SetDllDirectoryA; p_SetDllDirectoryA = GetProcAddress (GetModuleHandle ("kernel32.dll"), "SetDllDirectoryA"); if (p_SetDllDirectoryA) (*p_SetDllDirectoryA) (""); } #ifndef _WIN64 { typedef BOOL (WINAPI *t_SetProcessDEPPolicy) (DWORD dwFlags); t_SetProcessDEPPolicy p_SetProcessDEPPolicy; p_SetProcessDEPPolicy = GetProcAddress (GetModuleHandle ("kernel32.dll"), "SetProcessDEPPolicy"); if (p_SetProcessDEPPolicy) (*p_SetProcessDEPPolicy) (PROCESS_DEP_ENABLE|PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION); } #endif #endif #ifdef GIMP_UNSTABLE gimp_open_console_window (); #endif gimp_init_malloc (); gimp_env_init (FALSE); gimp_log_init (); gimp_init_i18n (); g_set_application_name (GIMP_NAME); basename = g_path_get_basename (argv[0]); g_set_prgname (basename); g_free (basename); /* Check argv[] for "--verbose" first */ for (i = 1; i < argc; i++) { const gchar *arg = argv[i]; if (arg[0] != '-') continue; if ((strcmp (arg, "--verbose") == 0) || (strcmp (arg, "-v") == 0)) { be_verbose = TRUE; } } /* Check argv[] for "--no-interface" before trying to initialize gtk+. */ for (i = 1; i < argc; i++) { const gchar *arg = argv[i]; if (arg[0] != '-') continue; if ((strcmp (arg, "--no-interface") == 0) || (strcmp (arg, "-i") == 0)) { no_interface = TRUE; } else if ((strcmp (arg, "--version") == 0) || (strcmp (arg, "-v") == 0)) { gimp_show_version_and_exit (); } #if defined (G_OS_WIN32) && !defined (GIMP_CONSOLE_COMPILATION) else if ((strcmp (arg, "--help") == 0) || (strcmp (arg, "-?") == 0) || (strncmp (arg, "--help-", 7) == 0)) { gimp_open_console_window (); } #endif } #ifdef GIMP_CONSOLE_COMPILATION no_interface = TRUE; #endif context = g_option_context_new (_("[FILE|URI...]")); g_option_context_set_summary (context, GIMP_NAME); g_option_context_add_main_entries (context, main_entries, GETTEXT_PACKAGE); app_libs_init (context, no_interface); if (! g_option_context_parse (context, &argc, &argv, &error)) { if (error) { gimp_open_console_window (); g_print ("%s\n", error->message); g_error_free (error); } else { g_print ("%s\n", _("GIMP could not initialize the graphical user interface.\n" "Make sure a proper setup for your display environment " "exists.")); } app_exit (EXIT_FAILURE); } if (no_interface || be_verbose || console_messages || batch_commands != NULL) gimp_open_console_window (); if (no_interface) new_instance = TRUE; #ifndef GIMP_CONSOLE_COMPILATION if (! new_instance && gimp_unique_open (filenames, as_new)) { if (be_verbose) g_print ("%s\n", _("Another GIMP instance is already running.")); gdk_notify_startup_complete (); return EXIT_SUCCESS; } #endif abort_message = sanity_check (); if (abort_message) app_abort (no_interface, abort_message); gimp_init_signal_handlers (stack_trace_mode); app_run (argv[0], filenames, system_gimprc, user_gimprc, session_name, batch_interpreter, batch_commands, as_new, no_interface, no_data, no_fonts, no_splash, be_verbose, use_shm, use_cpu_accel, console_messages, use_debug_handler, stack_trace_mode, pdb_compat_mode); g_option_context_free (context); return EXIT_SUCCESS; }
int main (int argc, char **argv) { GOptionContext *context; GError *error = NULL; const gchar *abort_message; gchar *basename; GFile *system_gimprc_file = NULL; GFile *user_gimprc_file = NULL; gint i; #if defined (__GNUC__) && defined (_WIN64) /* mingw-w64, at least the unstable build from late July 2008, * starts subsystem:windows programs in main(), but passes them * bogus argc and argv. __argc and __argv are OK, though, so just * use them. */ argc = __argc; argv = __argv; #endif #ifdef G_OS_WIN32 /* Reduce risks */ { typedef BOOL (WINAPI *t_SetDllDirectoryA) (LPCSTR lpPathName); t_SetDllDirectoryA p_SetDllDirectoryA; p_SetDllDirectoryA = (t_SetDllDirectoryA) GetProcAddress (GetModuleHandle ("kernel32.dll"), "SetDllDirectoryA"); if (p_SetDllDirectoryA) (*p_SetDllDirectoryA) (""); } /* On Windows, set DLL search path to $INSTALLDIR/bin so that .exe plug-ins in the plug-ins directory can find libgimp and file library DLLs without needing to set external PATH. */ { const gchar *install_dir; gchar *bin_dir; LPWSTR w_bin_dir; int n; w_bin_dir = NULL; install_dir = gimp_installation_directory (); bin_dir = g_build_filename (install_dir, "bin", NULL); n = MultiByteToWideChar (CP_UTF8, MB_ERR_INVALID_CHARS, bin_dir, -1, NULL, 0); if (n == 0) goto out; w_bin_dir = g_malloc_n (n + 1, sizeof (wchar_t)); n = MultiByteToWideChar (CP_UTF8, MB_ERR_INVALID_CHARS, bin_dir, -1, w_bin_dir, (n + 1) * sizeof (wchar_t)); if (n == 0) goto out; SetDllDirectoryW (w_bin_dir); out: if (w_bin_dir) g_free (w_bin_dir); g_free (bin_dir); } #ifdef HAVE_EXCHNDL /* Use Dr. Mingw (dumps backtrace on crash) if it is available. */ { time_t t; gchar *filename; gchar *dir; gchar *path; /* This has to be the non-roaming directory (i.e., the local directory) as backtraces correspond to the binaries on this system. */ dir = g_build_filename (g_get_user_data_dir (), GIMPDIR, GIMP_USER_VERSION, "CrashLog", NULL); /* Ensure the path exists. */ g_mkdir_with_parents (dir, 0700); time (&t); filename = g_strdup_printf ("%s-crash-%" G_GUINT64_FORMAT ".txt", g_get_prgname(), t); path = g_build_filename (dir, filename, NULL); g_free (filename); g_free (dir); ExcHndlInit (); ExcHndlSetLogFileNameA (path); g_free (path); } #endif #ifndef _WIN64 { typedef BOOL (WINAPI *t_SetProcessDEPPolicy) (DWORD dwFlags); t_SetProcessDEPPolicy p_SetProcessDEPPolicy; p_SetProcessDEPPolicy = (t_SetProcessDEPPolicy) GetProcAddress (GetModuleHandle ("kernel32.dll"), "SetProcessDEPPolicy"); if (p_SetProcessDEPPolicy) (*p_SetProcessDEPPolicy) (PROCESS_DEP_ENABLE|PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION); } #endif /* Group all our windows together on the taskbar */ { typedef HRESULT (WINAPI *t_SetCurrentProcessExplicitAppUserModelID) (PCWSTR lpPathName); t_SetCurrentProcessExplicitAppUserModelID p_SetCurrentProcessExplicitAppUserModelID; p_SetCurrentProcessExplicitAppUserModelID = (t_SetCurrentProcessExplicitAppUserModelID) GetProcAddress (GetModuleHandle ("shell32.dll"), "SetCurrentProcessExplicitAppUserModelID"); if (p_SetCurrentProcessExplicitAppUserModelID) (*p_SetCurrentProcessExplicitAppUserModelID) (L"gimp.GimpApplication"); } #endif #ifdef GIMP_UNSTABLE gimp_open_console_window (); #endif gimp_init_malloc (); gimp_env_init (FALSE); gimp_log_init (); gimp_init_i18n (); g_set_application_name (GIMP_NAME); #ifdef G_OS_WIN32 argv = g_win32_get_command_line (); #else argv = g_strdupv (argv); #endif basename = g_path_get_basename (argv[0]); g_set_prgname (basename); g_free (basename); /* Check argv[] for "--verbose" first */ for (i = 1; i < argc; i++) { const gchar *arg = argv[i]; if (arg[0] != '-') continue; if ((strcmp (arg, "--verbose") == 0) || (strcmp (arg, "-v") == 0)) { be_verbose = TRUE; } } /* Check argv[] for "--no-interface" before trying to initialize gtk+. */ for (i = 1; i < argc; i++) { const gchar *arg = argv[i]; if (arg[0] != '-') continue; if ((strcmp (arg, "--no-interface") == 0) || (strcmp (arg, "-i") == 0)) { no_interface = TRUE; } else if ((strcmp (arg, "--version") == 0) || (strcmp (arg, "-v") == 0)) { gimp_show_version_and_exit (); } #if defined (G_OS_WIN32) && !defined (GIMP_CONSOLE_COMPILATION) else if ((strcmp (arg, "--help") == 0) || (strcmp (arg, "-?") == 0) || (strncmp (arg, "--help-", 7) == 0)) { gimp_open_console_window (); } #endif } #ifdef GIMP_CONSOLE_COMPILATION no_interface = TRUE; #endif context = g_option_context_new (_("[FILE|URI...]")); g_option_context_set_summary (context, GIMP_NAME); g_option_context_add_main_entries (context, main_entries, GETTEXT_PACKAGE); app_libs_init (context, no_interface); if (! g_option_context_parse_strv (context, &argv, &error)) { if (error) { gimp_open_console_window (); g_print ("%s\n", error->message); g_error_free (error); } else { g_print ("%s\n", _("GIMP could not initialize the graphical user interface.\n" "Make sure a proper setup for your display environment " "exists.")); } app_exit (EXIT_FAILURE); } if (no_interface || be_verbose || console_messages || batch_commands != NULL) gimp_open_console_window (); if (no_interface) new_instance = TRUE; #ifndef GIMP_CONSOLE_COMPILATION if (! new_instance && gimp_unique_open (filenames, as_new)) { if (be_verbose) g_print ("%s\n", _("Another GIMP instance is already running.")); if (batch_commands) gimp_unique_batch_run (batch_interpreter, batch_commands); gdk_notify_startup_complete (); return EXIT_SUCCESS; } #endif abort_message = sanity_check (); if (abort_message) app_abort (no_interface, abort_message); gimp_init_signal_handlers (stack_trace_mode); if (system_gimprc) system_gimprc_file = g_file_new_for_commandline_arg (system_gimprc); if (user_gimprc) user_gimprc_file = g_file_new_for_commandline_arg (user_gimprc); app_run (argv[0], filenames, system_gimprc_file, user_gimprc_file, session_name, batch_interpreter, batch_commands, as_new, no_interface, no_data, no_fonts, no_splash, be_verbose, use_shm, use_cpu_accel, console_messages, use_debug_handler, show_playground, stack_trace_mode, pdb_compat_mode); if (system_gimprc_file) g_object_unref (system_gimprc_file); if (user_gimprc_file) g_object_unref (user_gimprc_file); g_strfreev (argv); g_option_context_free (context); return EXIT_SUCCESS; }
// main application int main(int argc, char *argv[]) { // first set some default values app_cfg.tts_file = "play.wav"; app_cfg.record_call = 0; app_cfg.repetition_limit = 3; app_cfg.silent_mode = 0; app_cfg.sip_realm = "*"; // parse arguments if (argc > 1) { int arg; for( arg = 1; arg < argc; arg+=2 ) { // check if usage info needs to be displayed if (!strcasecmp(argv[arg], "--help")) { // display usage info and exit app usage(0); exit(0); } // check for sip domain if (try_get_argument(arg, "-sd", &app_cfg.sip_domain, argc, argv) == 1) { continue; } // check for sip realm if (try_get_argument(arg, "-sr", &app_cfg.sip_realm, argc, argv) == 1) { continue; } // check for sip user if (try_get_argument(arg, "-su", &app_cfg.sip_user, argc, argv) == 1) { continue; } // check for sip password if (try_get_argument(arg, "-sp", &app_cfg.sip_password, argc, argv) == 1) { continue; } // check for target phone number if (try_get_argument(arg, "-pn", &app_cfg.phone_number, argc, argv) == 1) { continue; } // check for text to speak if (try_get_argument(arg, "-tts", &app_cfg.tts, argc, argv) == 1) { continue; } // check for wave file to play (no tts) if (try_get_argument(arg, "-wav", &app_cfg.wav_file, argc, argv) == 1) { continue; } // check for record call option if (try_get_argument(arg, "-ttsf", &app_cfg.tts_file, argc, argv) == 1) { continue; } // check for record call option if (try_get_argument(arg, "-rcf", &app_cfg.record_file, argc, argv) == 1) { app_cfg.record_call = 1; continue; } // check for message repetition option char *mr; if (try_get_argument(arg, "-mr", &mr, argc, argv) == 1) { app_cfg.repetition_limit = atoi(mr); continue; } // check for silent mode option char *s; try_get_argument(arg, "-s", &s, argc, argv); if (!strcasecmp(s, "1")) { app_cfg.silent_mode = 1; continue; } } } else { // no arguments specified - display usage info and exit app usage(1); exit(1); } if (!app_cfg.sip_domain || !app_cfg.sip_user || !app_cfg.sip_password || !app_cfg.phone_number || !(app_cfg.tts || app_cfg.wav_file)) { // too few arguments specified - display usage info and exit app usage(1); exit(1); } // print infos log_message("SIP Call - Simple TTS-based Automated Calls\n"); log_message("===========================================\n"); // register signal handler for break-in-keys (e.g. ctrl+c) signal(SIGINT, signal_handler); signal(SIGKILL, signal_handler); if (!app_cfg.wav_file) { // synthesize speech synthesize_speech(app_cfg.tts_file); } // setup up sip library pjsua setup_sip(); // create account and register to sip server register_sip(); // Short delay beetween registering and calling pj_thread_sleep(500); // initiate call make_sip_call(); // app loop for (;;) { pj_thread_sleep(100); } // exit app app_exit(); return 0; }