HRESULT CZ80Assembler::FinalConstruct() { curr_input_file = strdup("COM Interface"); output_filename = strdup("COM Interface"); init_storage(); m_pStmOutput = NULL; m_spStdOut.CreateInstance(__uuidof(TextStream)); //m_spStdOut->WriteLine("Hello there I'm a text file"); return m_spDictionary.CreateInstance(__uuidof(Dictionary)); }
/* --- */ int init_parser(int argc, char **argv) { print_welcome(); process_cla(argc, argv, 1); print_hs_1(); init_storage(); init_subrs(); init_trace(); init_slibu(); init_ss(); init_ndbm(); init_regex(); init_tar(); return 0; }
/* --- */ int init_parser(int argc, char **argv) { print_welcome(); process_cla(siod_argc, siod_argv, 1); process_cla(argc, argv, 1); print_hs_1(); init_storage(); init_subrs(); init_trace(); init_slibu(); init_ss(); init_ndbm(); init_regex(); init_tar(); init_subr_0("row", get_row); init_subr_0("col", get_col); init_subr_2("exec-expr", lexec_expr); /*XtAppAddActions(app_context, actions, XtNumber(actions));*/ return register_interpreter("SIOD", NULL, execute_siod); }
int main() { int n, m; int i; Employee *set = NULL; scanf("%d", &n); init_storage(&set, n); for ( i = 0 ; i < n ; i++ ) scanf("%d %s %s %d", &(set[i].id), set[i].first_name, set[i].last_name, &(set[i].boss_id)); char first_name_A[32], first_name_B[32]; char last_name_A[32], last_name_B[32]; Employee *A, *B; int type; scanf("%d", &m); for ( i = 0 ; i < m ; i++ ) { scanf("%s %s", first_name_A, last_name_A); A = find_employee_by_name(set, n, first_name_A, last_name_A); scanf("%s %s", first_name_B, last_name_B); B = find_employee_by_name(set, n, first_name_B, last_name_B); type = check_relationship(set, n, A, B); switch(type){ case 1: printf("subordinate\n"); break; case 2: printf("supervisor\n"); break; case 3: printf("colleague\n"); break; default: printf("unrelated\n"); break; } } free_storage(&set); return 0; }
int main (int argc, char **argv) { int quit = 0; #if defined(__GLIBC__) setup_signal_handlers (); #endif /* command line/config options */ verify_global_config (argc, argv); parse_conf_file (&argc, &argv); parse_cmd_line (argc, argv); /* initialize storage */ init_storage (); /* setup to use the current locale */ set_locale (); #ifdef HAVE_LIBGEOIP init_geoip (); #endif /* init logger */ logger = init_log (); set_signal_data (logger); /* init parsing spinner */ parsing_spinner = new_gspinner (); parsing_spinner->process = &logger->process; /* outputting to stdout */ if (conf.output_html) { ui_spinner_create (parsing_spinner); goto out; } /* init curses */ set_input_opts (); if (conf.no_color || has_colors () == FALSE) { conf.color_scheme = NO_COLOR; conf.no_color = 1; } else { start_color (); } init_colors (); init_windows (&header_win, &main_win); set_curses_spinner (parsing_spinner); /* configuration dialog */ if (isatty (STDIN_FILENO) && (conf.log_format == NULL || conf.load_conf_dlg)) { refresh (); quit = render_confdlg (logger, parsing_spinner); } /* straight parsing */ else { ui_spinner_create (parsing_spinner); } out: /* main processing event */ time (&start_proc); if (conf.load_from_disk) set_general_stats (); else if (!quit && parse_log (&logger, NULL, -1)) FATAL ("Error while processing file"); logger->offset = logger->process; /* no valid entries to process from the log */ if (logger->process == 0) FATAL ("Nothing valid to process."); /* init reverse lookup thread */ gdns_init (); parse_initial_sort (); allocate_holder (); end_spinner (); time (&end_proc); /* stdout */ if (conf.output_html) standard_output (); /* curses */ else curses_output (); /* clean */ house_keeping (); return EXIT_SUCCESS; }
int main(int argc, char ** argv) { int r; int driver; char * server; int port; int connection_type; char * user; char * password; int auth_type; char * path; char * cache_directory; char * flags_directory; struct mailstorage * storage; int cached; struct mailfolder * folder; /* get options */ r = parse_options(argc, argv, &driver, &server, &port, &connection_type, &user, &password, &auth_type, &path, &cache_directory, &flags_directory); cached = (cache_directory != NULL); /* build the storage structure */ storage = mailstorage_new(NULL); if (storage == NULL) { printf("error initializing storage\n"); goto free_opt; } r = init_storage(storage, driver, server, port, connection_type, user, password, auth_type, path, cache_directory, flags_directory); if (r != MAIL_NO_ERROR) { printf("error initializing storage\n"); goto free_opt; } /* get the folder structure */ folder = mailfolder_new(storage, path, NULL); if (folder == NULL) { printf("error initializing folder\n"); goto free_storage; } r = mailfolder_connect(folder); if (r != MAIL_NO_ERROR) { printf("error initializing folder\n"); goto free_folder; } while (optind < argc) { mailmessage * msg; uint32_t msg_num; struct mailmime * mime; msg_num = strtoul(argv[optind], NULL, 10); r = mailsession_get_message(folder->fld_session, msg_num, &msg); if (r != MAIL_NO_ERROR) { printf("** message %i not found ** - %s\n", msg_num, maildriver_strerror(r)); optind ++; continue; } r = mailmessage_get_bodystructure(msg, &mime); if (r != MAIL_NO_ERROR) { printf("** message %i not found - %s **\n", msg_num, maildriver_strerror(r)); mailmessage_free(msg); optind ++; continue; } r = etpan_fetch_mime(stdout, msg, mime); mailmessage_free(msg); optind ++; } mailfolder_free(folder); mailstorage_free(storage); if (server != NULL) free(server); if (user != NULL) free(user); if (password != NULL) free(password); if (path != NULL) free(path); if (cache_directory != NULL) free(cache_directory); if (flags_directory != NULL) free(flags_directory); return 0; free_folder: mailfolder_free(folder); free_storage: mailstorage_free(storage); free_opt: if (server != NULL) free(server); if (user != NULL) free(user); if (password != NULL) free(password); if (path != NULL) free(path); if (cache_directory != NULL) free(cache_directory); if (flags_directory != NULL) free(flags_directory); return -1; }
void constructorTest() { // Construct an empty storage thunder::Storage< T > default_storage; EXPECT_EQ(0, default_storage.size()); EXPECT_EQ(nullptr, default_storage.data()); // Construct an empty storage using explicit size thunder::Storage< T > size_empty_storage(0); EXPECT_EQ(0, size_empty_storage.size()); EXPECT_EQ(nullptr, size_empty_storage.data()); // Construct an empty storage from copy constructor thunder::Storage< T > copy_empty_storage(default_storage); EXPECT_EQ(0, copy_empty_storage.size()); EXPECT_EQ(nullptr, copy_empty_storage.data()); // Construct an storage with some size thunder::Storage< T > size_storage(5); int size_storage_val = 0; for (typename thunder::Storage< T >::size_type i = 0; i < 5; ++i) { size_storage[i] = static_cast< T >(size_storage_val++); } EXPECT_EQ(5, size_storage.size()); EXPECT_NE(nullptr, size_storage.data()); // Construct an storage with some size and a default value thunder::Storage< T > size_value_storage(5, (T)3); EXPECT_EQ(5, size_storage.size()); EXPECT_NE(nullptr, size_value_storage.data()); for (int i = 0; i < 5; ++i) { EXPECT_EQ((T)3, size_value_storage.data()[i]); } // Copy construct a storage thunder::Storage< T > copy_storage(size_storage); EXPECT_EQ(5, copy_storage.size()); EXPECT_NE(nullptr, copy_storage.data()); for (int i = 0; i < 5; ++i) { EXPECT_EQ(size_storage.data()[i], copy_storage.data()[i]); } // Initialzation list constructor thunder::Storage< T > init_storage({3, 4, 5, 6, 7}); EXPECT_EQ(5, init_storage.size()); EXPECT_NE(nullptr, init_storage.data()); for (int i = 0; i < 5; ++i) { EXPECT_EQ(static_cast< T >(i + 3), init_storage.data()[i]); } // Construct an storage using external data thunder::Storage< T > data_storage( init_storage.data(), init_storage.size()); EXPECT_EQ(5, data_storage.size()); EXPECT_NE(nullptr, data_storage.data()); EXPECT_EQ(init_storage.data(), data_storage.data()); for (int i = 0; i < 5; ++i) { EXPECT_EQ(static_cast< T >(i + 3), data_storage.data()[i]); } // Construct a storage using external shared data thunder::Storage< T > shared_storage( init_storage.shared(), init_storage.size()); EXPECT_EQ(5, shared_storage.size()); EXPECT_NE(nullptr, shared_storage.data()); EXPECT_EQ(init_storage.data(), shared_storage.data()); for (int i = 0; i < 5; ++i) { EXPECT_EQ(static_cast< T >(i + 3), shared_storage.data()[i]); } }
/** * \brief Main application function. * * Application entry point. * * \return program return value. */ int main(void) { tstrWifiInitParam param; int8_t ret; init_state(); /* Initialize the board. */ sysclk_init(); board_init(); /* Initialize the UART console. */ configure_console(); printf(STRING_HEADER); printf("This example may not work as it requires internet connectivity.\r\n"); /* Initialize the Timer. */ configure_timer(); /* Initialize the HTTP client service. */ configure_http_client(); /* Initialize the BSP. */ nm_bsp_init(); /* Initialize SD/MMC storage. */ init_storage(); /* Initialize Wi-Fi parameters structure. */ memset((uint8_t *)¶m, 0, sizeof(tstrWifiInitParam)); /* Initialize Wi-Fi driver with data and status callbacks. */ param.pfAppWifiCb = wifi_cb; ret = m2m_wifi_init(¶m); if (M2M_SUCCESS != ret) { printf("main: m2m_wifi_init call error!(%d)\r\n", ret); while (1) { } } /* Initialize socket module. */ socketInit(); /* Register socket callback function. */ registerSocketCallback(socket_cb, resolve_cb); /* Connect to router. */ printf("main: Waiting for Wi-Fi connection. AP:%s\r\n", (char *)MAIN_WLAN_SSID); m2m_wifi_connect((char *)MAIN_WLAN_SSID, sizeof(MAIN_WLAN_SSID), MAIN_WLAN_AUTH, (char *)MAIN_WLAN_PSK, M2M_WIFI_CH_ALL); while (!(is_state_set(COMPLETED) || is_state_set(CANCELED))) { /* Handle pending events from network controller. */ m2m_wifi_handle_events(NULL); /* Checks the timer timeout. */ sw_timer_task(&swt_module_inst); } printf("main: Exit program. Please unplug the card.\r\n"); while (1) { } /* Loop forever. */ return 0; }
static void reload_handler(int signo) { init_storage(); }
int main (int argc, char **argv) { int curr_arg = 1; bool case_sensitive = false; bool is_storage_initialized = false; use_colors = true; extern WORD user_attributes; user_attributes = save_console_attributes (); atexit (restore_console_attributes_at_exit); //if there aren't enough args, show info if (argc < 2) { puts ("SPASM-ng Z80 Assembler by Spencer Putt and Don Straney"); printf ("Version %s (built on %s @ %s)\n", SPASM_NG_VERSION, __DATE__, __TIME__); #ifdef SPASM_NG_GITREV printf ("Git revision %s\n", SPASM_NG_GITREV); #endif #ifdef _M_X64 puts ("64-bit Version"); #endif #ifdef NO_APPSIGN printf ("\nApp signing is NOT available in this build of SPASM.\n"); #endif puts ("\nspasm [options] <input file> <output file>\n"); puts ("Options:\n-E = Assemble eZ80 code\n-T = Generate code listing\n-C = Code counter mode\n-L = Symbol table mode\n-S = Stats mode\n-O = Don't write to output file"); puts ("-I [directory] = Add include directory\n-A = Labels are cAse-sensitive\n-D<name>[=value] = Create a define 'name' [with 'value']"); puts ("-N = Don't use colors for messages"); puts ("-V <Expression> = Pipe expression directly into assembly"); #if defined(_DEBUG) && defined(WIN32) if (IsDebuggerPresent()) { system("PAUSE"); } #endif return EXIT_NORMAL; } //init stuff mode = MODE_NORMAL; in_macro = 0; //otherwise, get any options curr_input_file = strdup("Commandline"); char *starting_input_file = curr_input_file; while (curr_arg < argc) { if (argv[curr_arg][0] == '-' #ifdef _WINDOWS || argv[curr_arg][0] == '/' #endif ) { switch (argv[curr_arg][1]) { //args for different modes case 'O': mode = mode & (~MODE_NORMAL); break; case 'T': mode |= MODE_LIST; break; case 'C': mode |= MODE_CODE_COUNTER; break; case 'L': mode |= MODE_SYMTABLE; break; case 'S': mode |= MODE_STATS; break; case 'E': mode |= MODE_EZ80; all_opcodes = opcode_list_ez80; break; //handle no-colors flag case 'N': use_colors = false; break; //handle include files too case 'I': { char *dir, *p; //make sure there's another argument after it for the include path if (strlen(argv[curr_arg]) > 2) { dir = strdup (&argv[curr_arg][2]); } else { if (curr_arg >= argc - 1) { printf ("%s used without include path\n", argv[curr_arg]); break; } dir = strdup (argv[++curr_arg]); } for (p = strtok (dir, ";,"); p; p = strtok (NULL, ";,")) { include_dirs = list_append (include_dirs, strdup(p)); } free(dir); break; } //and the case-sensitive flag case 'A': case_sensitive = true; break; //handle adding defines case 'D': { char name[256]; char *ptr; define_t *define; if (!is_storage_initialized) { init_storage(); is_storage_initialized = true; } if (strlen (argv[curr_arg]) > 2) { ptr = &argv[curr_arg][2]; } else { if (curr_arg >= argc - 1) { printf ("%s used without define name", argv[curr_arg]); break; } ptr = argv[++curr_arg]; } read_expr (&ptr, name, "="); define = add_define (strdup (name), NULL); if (*skip_whitespace (++ptr) != '\0') define->contents = strdup (ptr); else set_define (define, "1", 1, false); break; } case 'V': { char *line; //check for something after -V if (strlen(argv[curr_arg]) > 2) { line = &argv[curr_arg][2]; } else { //if not lets fail if (curr_arg >= argc - 1) { printf ("%s used without a line to assemble\n", argv[curr_arg]); return EXIT_FATAL_ERROR; } line = argv[++curr_arg]; } mode |= MODE_COMMANDLINE; curr_input_file = strdup("-v"); input_contents = (char *) malloc (strlen(line) + 1 + 2); output_filename = change_extension (curr_input_file, "bin"); strcpy(input_contents, line); strcat(input_contents, "\n"); break; } default: { #ifndef _TEST #ifdef _WINDOWS printf ("Unrecognized option %s\n", argv[curr_arg]); #ifdef SPASM_NG_ENABLE_COM FreeConsole(); return _AtlModule.WinMain(SW_HIDE); #endif #endif #else printf ("Unrecognized option %s\n", argv[curr_arg]); #endif } } } else { //if it's not a flag, then it must be a filename if (curr_input_file && (curr_input_file != starting_input_file) && !output_filename) output_filename = strdup(argv[curr_arg]); else if ((!curr_input_file) || (curr_input_file == starting_input_file)) curr_input_file = strdup(argv[curr_arg]); } curr_arg++; } // Update case sensitivity settings set_case_sensitive (case_sensitive); //check on filenames if (!(mode & MODE_COMMANDLINE) && curr_input_file == starting_input_file) { puts ("No input file specified"); free(starting_input_file); return EXIT_FATAL_ERROR; } if (curr_input_file != starting_input_file) { free(starting_input_file); } if (!output_filename) { output_filename = change_extension (curr_input_file, "bin"); } if (!is_storage_initialized) { init_storage(); is_storage_initialized = true; } output_contents = (unsigned char *) malloc(output_buf_size); ClearSPASMErrorSessions(); int error = run_assembly(); free(output_filename); output_filename = NULL; if (curr_input_file) { free(curr_input_file); curr_input_file = NULL; } if (include_dirs) { list_free(include_dirs, true, NULL); } free(output_contents); output_contents = NULL; ClearSPASMErrorSessions(); free_storage(); #ifdef _WINDOWS _CrtDumpMemoryLeaks(); if (IsDebuggerPresent()) { system("PAUSE"); } #endif return error; }
int main(int argc, char ** argv) { int r; int driver; char * server; int port; int connection_type; char * user; char * password; int auth_type; bool xoauth2; char * path; char * cache_directory; char * flags_directory; struct mailstorage * storage; struct mailfolder * folder; /* get options */ r = parse_options(argc, argv, &driver, &server, &port, &connection_type, &user, &password, &auth_type, &xoauth2, &path, &cache_directory, &flags_directory); /* build the storage structure */ storage = mailstorage_new(NULL); if (storage == NULL) { printf("error initializing storage\n"); goto free_opt; } r = init_storage(storage, driver, server, port, connection_type, user, password, auth_type, xoauth2, path, cache_directory, flags_directory); if (r != MAIL_NO_ERROR) { printf("error initializing storage\n"); goto free_opt; } /* get the folder structure */ folder = mailfolder_new(storage, path, NULL); if (folder == NULL) { printf("error initializing folder\n"); goto free_storage; } r = mailfolder_connect(folder); if (r != MAIL_NO_ERROR) { printf("error initializing folder\n"); goto free_folder; } /* get and display the list of messages */ print_message_list(folder->fld_session); mailfolder_free(folder); mailstorage_free(storage); if (server != NULL) free(server); if (user != NULL) free(user); if (password != NULL) free(password); if (path != NULL) free(path); if (cache_directory != NULL) free(cache_directory); if (flags_directory != NULL) free(flags_directory); return 0; free_folder: mailfolder_free(folder); free_storage: mailstorage_free(storage); free_opt: if (server != NULL) free(server); if (user != NULL) free(user); if (password != NULL) free(password); if (path != NULL) free(path); if (cache_directory != NULL) free(cache_directory); if (flags_directory != NULL) free(flags_directory); return -1; }
STDMETHOD(Assemble)(VARIANT varInput, IStream **ppOutput) { mode = m_dwOptions; if (V_VT(&varInput) == VT_BSTR) { mode |= MODE_NORMAL | MODE_COMMANDLINE; mode &= ~MODE_LIST; if (m_fFirstAssembly) { init_storage(); } CW2CT szInput(V_BSTR(&varInput)); input_contents = strdup(szInput); curr_input_file = strdup("COM Interface"); } else { mode &= ~MODE_COMMANDLINE; mode |= MODE_NORMAL; curr_input_file = strdup(m_bstrInputFile); output_filename = strdup(m_bstrOutputFile); if (!m_fFirstAssembly) { free_storage(); } init_storage(); } // Set up the include directories CComPtr<IUnknown> pEnumUnk; HRESULT hr = m_pDirectories->get__NewEnum(&pEnumUnk); CComQIPtr<IEnumVARIANT> pEnum = pEnumUnk; CComVariant varItem; ULONG ulFetched; while (pEnum->Next(1, &varItem, &ulFetched) == S_OK) { include_dirs = list_prepend(include_dirs, (char *) strdup(_bstr_t(V_BSTR(&varItem)))); } AddDefines(); int error = run_assembly(); list_free(include_dirs, true, NULL); include_dirs = NULL; ClearSPASMErrorSessions(); long assembled_size = out_ptr - output_contents; HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, assembled_size); unsigned char *streambuf = (unsigned char *)GlobalLock(hGlobal); memcpy(streambuf, output_contents, assembled_size); GlobalUnlock(hGlobal); CComPtr<IStream> pStream; hr = CreateStreamOnHGlobal(hGlobal, TRUE, &pStream); ULARGE_INTEGER ul; ul.QuadPart = assembled_size; pStream->SetSize(ul); m_fFirstAssembly = FALSE; if (output_filename != NULL) { free(output_filename); output_filename = NULL; } if (curr_input_file) { free(curr_input_file); curr_input_file = NULL; } if (mode & MODE_COMMANDLINE) { free(input_contents); input_contents = NULL; } m_fLabelsAreValid = FALSE; return pStream->QueryInterface(ppOutput); }
int main (int argc, char **argv) { int quit = 0; #if defined(__GLIBC__) setup_signal_handlers (); #endif /* command line/config options */ verify_global_config (argc, argv); parse_conf_file (&argc, &argv); parse_cmd_line (argc, argv); /* initialize storage */ init_storage (); /* setup to use the current locale */ set_locale (); #ifdef HAVE_LIBGEOIP init_geoip (); #endif /* init logger */ logger = init_log (); /* init parsing spinner */ parsing_spinner = new_gspinner (); parsing_spinner->process = &logger->process; /* outputting to stdout */ if (conf.output_html) { ui_spinner_create (parsing_spinner); goto out; } /* init curses */ set_input_opts (); if (conf.no_color || has_colors () == FALSE) { conf.color_scheme = NO_COLOR; conf.no_color = 1; } else { start_color (); } init_colors (); init_windows (&header_win, &main_win); set_curses_spinner (parsing_spinner); /* configuration dialog */ if (isatty (STDIN_FILENO) && (conf.log_format == NULL || conf.load_conf_dlg)) { refresh (); quit = verify_format (logger, parsing_spinner); } /* straight parsing */ else { ui_spinner_create (parsing_spinner); } out: /* main processing event */ time (&start_proc); if (conf.load_from_disk) set_general_stats (); else if (!quit && parse_log (&logger, NULL, -1)) FATAL ("Error while processing file"); logger->offset = logger->process; /* no valid entries to process from the log */ if ((logger->process == 0) || (logger->process == logger->invalid)) FATAL ("Nothing valid to process."); /* init reverse lookup thread */ gdns_init (); parse_initial_sort (); allocate_holder (); end_spinner (); time (&end_proc); /* stdout */ if (conf.output_html) { /* CSV */ if (conf.output_format && strcmp ("csv", conf.output_format) == 0) output_csv (logger, holder); /* JSON */ else if (conf.output_format && strcmp ("json", conf.output_format) == 0) output_json (logger, holder); /* HTML */ else output_html (logger, holder); } /* curses */ else { allocate_data (); if (!conf.skip_term_resolver) gdns_thread_create (); render_screens (); get_keys (); attroff (COLOR_PAIR (COL_WHITE)); /* restore tty modes and reset * terminal into non-visual mode */ endwin (); } /* clean */ house_keeping (); return EXIT_SUCCESS; }
int call_function(ZARRAYP libID, const char *funcname, ZARRAYP argtypes, ZARRAYP args, ZARRAYP retval) { /* Last value in argtypes and ffi_types is the type of "funcname" return value */ int maxargs = argtypes->len - 1, nargs; ffi_cif cif; ffi_type *ffi_types[maxargs + 1]; void *ffi_values[maxargs]; int i, j; size_t fullsize = 0, size = 0; storage mem; init_storage(&mem); for (i = 0, j = 0; i < maxargs + 1; ++j, ++i) { size = get_size(argtypes->data[i]); ffi_types[j] = get_ffi_type(argtypes, &i, &mem); if (!ffi_types[j]) { return ZF_FAILURE; } if (ffi_types[j] == &ffi_type_void && i != maxargs) { logger("CNA_VOID type may be used only for return value\n"); return ZF_FAILURE; } if (size == 0 && ffi_types[j] != &ffi_type_void && i != maxargs) { size = *((size_t *)(args->data + fullsize)); fullsize += sizeof(size_t); } if (i != maxargs) { ffi_values[j] = args->data + fullsize; } fullsize += size; } retval->len = size; nargs = j - 1; if (fullsize != args->len + retval->len) { logger("Wrong size of ZARRAYP\n\tfullsize: %u\tZARRAYP args: %u\tretsize: %u\n", fullsize, args->len, retval->len); return ZF_FAILURE; } void *handle; if (assign_ZARRAYP_to_pointer(&handle, libID)) { return ZF_FAILURE; } if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, nargs, ffi_types[nargs], ffi_types) != FFI_OK) { logger("ffi_prep_cif() failed\n"); return ZF_FAILURE; } if (retval->len == 0 && ffi_types[nargs] != &ffi_type_void) { retval->len = cif.arg_types[nargs]->size; } void *funcpointer = FIND_ENTRY(handle, funcname); if (!funcpointer) { logger("FIND_ENTRY() failed\n\thandle:%d\tfuncname:%s\n", handle, funcname); return ZF_FAILURE; } ffi_call(&cif, funcpointer, retval->data, ffi_values); /* TODO: handle error */ free_storage(&mem); return ZF_SUCCESS; }