bool cw__test_helpers_check_primitive_list(DjinniRecordHandle * pl) { djinni::Handle<DjinniRecordHandle> _pl(pl, primitive_list___delete); try { return ::testsuite::TestHelpers::check_primitive_list(DjinniPrimitiveList::toCpp(std::move(_pl))); } CW_TRANSLATE_EXCEPTIONS_RETURN(0); }
/*=============================================== * report_results -- Print out error & fix counts * Created: 2001/01/13, Perry Rapp *=============================================*/ static void report_results (void) { INT i, ct=0; for (i=0; i<ARRSIZE(errs); i++) { if (errs[i].err_count || errs[i].fix_count) { char buffer[64]; printf("%s: ", _(errs[i].desc)); snprintf(buffer, sizeof(buffer) , _pl("%d error", "%d errors", errs[i].err_count) , errs[i].err_count); printf("%s, ", buffer); snprintf(buffer, sizeof(buffer) , _pl("%d fixed", "%d fixed", errs[i].fix_count) , errs[i].fix_count); printf("%s\n", buffer); ct++; } } if (!ct) { printf("%s\n", _("No errors found")); } }
static void import_validating (void) { char msg[100]; STRING numstr=0; INT count=0; INT row=0; llwprintf(_("Checking GEDCOM file for errors.\n")); clear_rec_counts(0); numstr = _pl("Error", "Errors", count); row = 6; snprintf(msg, sizeof(msg), "%6ld %s", count, numstr); clear_stdout_hseg(row, 1, 70); wfield(row, 1, msg); numstr = _pl("Warning", "Warnings", count); row = 7; snprintf(msg, sizeof(msg), "%6ld %s", count, numstr); clear_stdout_hseg(row, 1, 70); wfield(row, 1, msg); }
/*================================ * Functions to display record counts *==============================*/ static void update_rec_count (INT pass, char ctype, STRING tag, INT count) { INT offset = 9*pass; char msg[100]; STRING numstr=0; INT row=0; switch(ctype) { case 'I': numstr = _pl("Person", "Persons", count); row = 1; break; case 'F': numstr = _pl("Family", "Families", count); row = 2; break; case 'S': numstr = _pl("Source", "Sources", count); row = 3; break; case 'E': numstr = _pl("Event", "Events", count); row = 4; break; default: numstr = _pl("Other", "Others", count); row = 5; break; } snprintf(msg, sizeof(msg), "%6ld %s", count, numstr); if (row == 5 && tag && tag[0]) llstrappf(msg, sizeof(msg), uu8, " (%s)", tag); row += offset; clear_stdout_hseg(row, 1, 70); /* TODO: how wide should this be ? */ wfield(row, 1, msg); }
void do_main(const char *s) { // TYPEDEFS typedef typename CK::Circular_arc_2 C2; typedef typename CK::Line_arc_2 L2; typedef typename CGAL::Arrangement_2<Traits> Pmwx; typedef typename CGAL::Arr_naive_point_location<Pmwx> Point_location; // LOADING CURVES ArcContainer ac; std::ifstream fin; fin.open (s); CGAL::variant_load<CK, C2, L2>( fin, std::back_inserter(ac)); fin.close(); std::cout << "Size:" << ac.size() << std::endl; // BENCHMARKING Pmwx _pm; Point_location _pl(_pm); struct rusage before, after; struct timeval utime, stime; getrusage(RUSAGE_SELF,&before); insert(_pm,ac.begin(),ac.end(),boost::false_type()); getrusage(RUSAGE_SELF,&after); timersub(&(after.ru_utime),&(before.ru_utime),&utime); timersub(&(after.ru_stime),&(before.ru_stime),&stime); std::cout<<"Time="<< utime.tv_sec<<"."<< std::setw(6) << std::setfill('0')<< utime.tv_usec <<std::endl; std::cerr << utime.tv_sec << "." << std::setw(6) << std::setfill('0')<< utime.tv_usec << std::endl; std::cout << "The arrangement size:" << std::endl << " V = " << _pm.number_of_vertices() << ", E = " << _pm.number_of_edges() << ", F = " << _pm.number_of_faces() << std::endl; }
/*=============================================+ * prog_var_error_zstr -- Report a run time program error * node: [IN] current parse node * stab: [IN] current symbol table (lexical scope) * arg: [IN] if non-null, parse node of troublesome argument * val: [IN] if non-null, PVALUE of troublesome argument * zstr: [IN] message * * Inline debugger is implemented here * See vprog_error * Created: 2002/02/17, Perry Rapp *============================================*/ static void prog_var_error_zstr (PNODE node, SYMTAB stab, PNODE arg, PVALUE val, ZSTR zstr) { STRING choices[5]; INT rtn=0; SYMTAB curstab = stab; /* currently displayed symbol table */ INT nlevels=0; /* number frames on callstack */ INT curlevel=0; /* 0 is lowest */ ASSERT(zstr); if (val) { ZSTR zval = describe_pvalue(val); zs_appf(zstr, " (value: %s)", zs_str(zval)); } else if (arg) { INT max=40 + zs_len(zstr); /* not too much argument description */ /* arg isn't evaluated, but describe will at least give its type */ zs_apps(zstr, " (arg: "); describe_pnode(arg, zstr, max); zs_apps(zstr, ")"); } prog_error(node, zs_str(zstr)); zs_free(&zstr); if (dbg_mode != -99 && dbg_mode != 3) { INT ch = 0; while (!(ch=='d' || ch=='q')) ch = rptui_prompt_stdout(_("Enter d for debugger, q to quit")); if (ch == 'q') dbg_mode = -99; } /* call stack size & location */ nlevels = count_symtab_ancestors(stab) + 1; curlevel = 0; /* report debugger loop */ while (dbg_mode != -99) { ZSTR zstr=zs_new(); INT n=0; /* 0: display local variable(s) */ n = (curstab->tab ? get_table_count(curstab->tab) : 0); zs_setf(zstr, _pl("Display local (%d var)", "Display locals (%d vars)", n), n); zs_appf(zstr, " [%s]", curstab->title); choices[0] = strsave(zs_str(zstr)); /* 1: display global variables */ n = (globtab->tab ? get_table_count(globtab->tab) : 0); zs_setf(zstr, _pl("Display global (%d var)", "Display globals (%d vars)", n), n); choices[1] = strsave(zs_str(zstr)); /* 2: up call stack */ n = nlevels - curlevel - 1; zs_setf(zstr, _pl("Call stack has %d higher level", "Call stack has %d higher levels", n), n); zs_apps(zstr, ". "); if (n > 0) { zs_apps(zstr, _(" Go up one level")); zs_appf(zstr, "(%s)", curstab->parent->title); } choices[2] = strsave(zs_str(zstr)); /* 3: down call stack */ n = curlevel; zs_setf(zstr, _pl("Call stack has %d lower level", "Call stack has %d lower levels", n), n); zs_apps(zstr, ". "); if (n > 0) { CNSTRING title = get_symtab_ancestor(stab, n-1)->title; zs_apps(zstr, _(" Go down one level")); zs_appf(zstr, "(%s)", title); } choices[3] = strsave(zs_str(zstr)); /* quit */ choices[4] = strsave(_("Quit debugger")); dbgloop: rtn = rptui_choose_from_array(_("Report debugger"), ARRSIZE(choices), choices); if (rtn == 4 || rtn == -1) { dbg_mode = -99; } else if (rtn == 0) { disp_symtab(_("Local variables"), curstab); goto dbgloop; } else if (rtn == 1) { disp_symtab(_("Global variables"), globtab); goto dbgloop; } else if (rtn == 2) { if (curlevel+1 < nlevels) { curstab = curstab->parent; ++curlevel; ASSERT(curstab); } } else if (rtn == 3) { if (curlevel > 0) { curstab = get_symtab_ancestor(stab, curlevel-1); --curlevel; ASSERT(curstab); } } zs_free(&zstr); free_array_strings(ARRSIZE(choices), choices); } }
/*=================================================== * describe_dberror -- Describe database opening error * dberr: [in] error whose description is sought * buffer: [out] buffer for description * buflen: [in] size of buffer *=================================================*/ void describe_dberror (INT dberr, STRING buffer, INT buflen) { STRING b=buffer; INT n=buflen, u8=uu8; buffer[0]=0; if (dberr != BTERR_WRITER) llstrncpy(buffer, _("Database error: -- "), buflen, 0); switch (dberr) { case BTERR_NODB: llstrapps(b, n, u8, _("requested database does not exist.")); break; case BTERR_DBBLOCKEDBYFILE: llstrapps(b, n, u8, _("db directory is file, not directory.")); break; case BTERR_DBCREATEFAILED: llstrapps(b, n, u8, _("creation of new database failed.")); break; case BTERR_DBACCESS: llstrapps(b, n, u8, _("error accessing database directory.")); break; case BTERR_NOKEY: llstrapps(b, n, u8, _("no keyfile (directory does not appear to be a database).")); break; case BTERR_INDEX: llstrapps(b, n, u8, _("could not open, read or write an index file.")); break; case BTERR_KFILE: llstrapps(b, n, u8, _("could not open, read or write the key file.")); break; case BTERR_KFILE_ALTERDB: llstrapps(b, n, u8, _("could not open, read or write the key file (to alter database).")); break; case BTERR_BLOCK: llstrapps(b, n, u8, _("could not open, read or write a block file.")); break; case BTERR_LNGDIR: llstrapps(b, n, u8, _("name of database is too long.")); break; case BTERR_WRITER: llstrapps(b, n, u8, _("The database is already open for writing.")); break; case BTERR_LOCKED: llstrapps(b, n, u8, _("The database is locked (no readwrite access).")); break; case BTERR_UNLOCKED: llstrapps(b, n, u8, _("The database is unlocked.")); break; case BTERR_ILLEGKF: llstrapps(b, n, u8, _("keyfile is corrupt.")); break; case BTERR_ALIGNKF: llstrapps(b, n, u8, _("keyfile is wrong alignment.")); break; case BTERR_VERKF: llstrapps(b, n, u8, _("keyfile is wrong version.")); break; case BTERR_EXISTS: llstrapps(b, n, u8, _("Existing database found.")); break; case BTERR_READERS: llstrappf(b, n, u8 , _pl("The database is already opened for read access by %d user." , "The database is already opened for read access by %d users." , rdr_count) , rdr_count); break; case BTERR_BADPROPS: llstrapps(b, n, u8, _("Invalid properties set for new database")); break; default: llstrapps(b, n, u8, _("Undefined database error -- fix program.")); break; } }
/*========================================================== * get_unresolved_ref_error -- get string for unresolved reference(s) * xgettext doesn't support special keywords for plural forms, AFAIK * so we can't put these in static variables *========================================================*/ STRING get_unresolved_ref_error_string (INT count) { return _pl("There was %d unresolved reference." , "There were %d unresolved references.", count); }
void do_main(int k) { // TYPEDEFS typedef typename CK::Circular_arc_2 C2; typedef typename CK::Point_2 Point_2; typedef typename CK::FT FT; typedef typename CGAL::Arrangement_2<Traits> Pmwx; typedef typename CGAL::Arr_naive_point_location<Pmwx> Point_location; // LOADING CURVES ArcContainer ac; double cx, cy; const FT rft(1.0); // DENSE if(k == 0) { for(cx = 0.0; cx <= 10.0; cx += 0.5) { for(cy = 0.0; cy <= 10.0; cy += 0.5) { ac.push_back(typename CK::Circular_arc_2 ( typename CK::Circle_2(Point_2(cx,cy),rft) ) ); } } } // VERY DENSE if(k == 1) { for(cx = 0.0; cx <= 0.2; cx += 0.01) { for(cy = 0.0; cy <= 0.2; cy += 0.01) { ac.push_back(typename CK::Circular_arc_2 ( typename CK::Circle_2(Point_2(cx,cy),rft) )); } } } // ONE CIRCLE if(k == 2) { ac.push_back(typename CK::Circular_arc_2 ( typename CK::Circle_2(Point_2(0,0),5) )); } // RANDOM CASE if(k == 3) { CGAL::Random generatorOfgenerator; int random_seed = generatorOfgenerator.get_int(0, 123456); CGAL::Random theRandom(random_seed); for(int i=0; i<100; i++) { double x = theRandom.get_double(0.0,1.0); double y = theRandom.get_double(0.0,1.0); double r = theRandom.get_double(0.00001,1.0); ac.push_back(typename CK::Circular_arc_2 ( typename CK::Circle_2(Point_2(x,y),FT(r)) )); } } // SPARSE if(k == 4) { double h = (std::sqrt(3.0)+0.01); for(cx = 0.0; cx <= 40.4; cx += 2.01) { for(cy = h; cy <= h*20; cy += h*2) { ac.push_back(typename CK::Circular_arc_2 ( typename CK::Circle_2(Point_2(cx+1.0,cy),rft) )); } for(cy = 0.0; cy <= h*20.0; cy += h*2) { ac.push_back(typename CK::Circular_arc_2 ( typename CK::Circle_2(Point_2(cx,cy),rft))); } } } std::cout << "Size:" << ac.size() << std::endl; // BENCHMARKING Pmwx _pm; Point_location _pl(_pm); struct rusage before, after; struct timeval utime, stime; getrusage(RUSAGE_SELF,&before); insert(_pm,ac.begin(),ac.end(),boost::false_type()); getrusage(RUSAGE_SELF,&after); timersub(&(after.ru_utime),&(before.ru_utime),&utime); timersub(&(after.ru_stime),&(before.ru_stime),&stime); std::cout<<"Time="<< utime.tv_sec<<"."<< std::setw(6) << std::setfill('0')<< utime.tv_usec << std::endl; std::cerr << utime.tv_sec << "." << std::setw(6) << std::setfill('0')<< utime.tv_usec << std::endl; std::cout << "The arrangement size:" << std::endl << " V = " << _pm.number_of_vertices() << ", E = " << _pm.number_of_edges() << ", F = " << _pm.number_of_faces() << std::endl; }
int WINAPI WKInitRecording(HWND hParent) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); if(!pInter){ AfxMessageBox("Container not found!!!"); return 0; } if(hMacroRecControlWindow!=0){ AfxMessageBox(_pl("To record new macro, You have to stop\nrecording previous macro")); return 0; } static long lMacroCounter=1; plgOptions.sLastMacroName=""; COleDateTime dt=COleDateTime::GetCurrentTime(); plgOptions.sLastMacroName.Format("%s (%02lu.%02lu.%04lu)",GetRandomName(),dt.GetDay(),dt.GetMonth(),dt.GetYear()); lMacroCounter++; char szPrefFolder[MAX_PATH]=""; pInter->GetPreferencesFolder(szPrefFolder,sizeof(szPrefFolder)); CString sTargetFile=szPrefFolder; sTargetFile+="RecorderMacro\\"; if(int(GetFileAttributes(sTargetFile))==-1){ ::CreateDirectory(sTargetFile,NULL); } plgOptions.sLastMacroContent=""; DWORD dwStart=GetTickCount(); ATOM at=GlobalAddAtom("WK_RECORDING"); DWORD dwRes=DialogBox(WKGetPluginContainer()->GetPluginDllInstance(),MAKEINTRESOURCE(IDD_OPTIONS),hParent,OptionsDialogProc); if(!WKUtils::isWKUpAndRunning()){ return 0; } GlobalDeleteAtom(at); if(dwRes!=0){ // Пользователь отказался... return 0; } if(pInter){ pInter->PushMyOptions(0); } if(plgOptions.sLastMacroContent==""){ return 0; } CString sMacroFileNm=plgOptions.sLastMacroName; MakeSafeFileName(sMacroFileNm); sTargetFile+=sMacroFileNm; sTargetFile+=".wkm"; // Добавлять иконку на время записи макроса // Префикс макроса... CString sMacroTemplate= "// Language: %s\r\n"\ "// Title: %s\r\n"\ "// Description: Recorded macro\r\n"\ "// ParamType: String\r\n"\ "// Hint: wait_for_key_release;\r\n\r\n"\ "%s"\ "%s"\ "\r\n"\ "// <wkMain>: Action\r\n"\ "function wkMain()\r\n"\ "{// wkMain description: Replay keystrokes\r\n"\ "%s"\ "};\r\n"\ "// </wkMain>: End of Action\r\n"\ "\r\n"; CString sDopFunc= (plgOptions.lMFormat==0 || plgOptions.lMFormat==1 || plgOptions.lMFormat==3)?"":"// System object that will be used to replay recorded keystrokes\r\nvar WshShell = new ActiveXObject('WScript.Shell');\r\n"; sDopFunc+= "// Playback Speed ratio ('1' means as recorded)\r\n"; sDopFunc+= "var iMacroSpeed = 1.0;"; sDopFunc+= "\r\n"; CString sWaitFunc= (plgOptions.lMFormat==0 || plgOptions.lMFormat==1 || plgOptions.lMFormat==3)?"":"function Wait(time)\r\n"\ "{\r\n"\ " var d = new Date();\r\n"\ " var timeCounter = 0;\r\n"\ " while((new Date()).getSeconds()-d.getSeconds()<(time*iMacroSpeed)){\r\n"\ " timeCounter++;\r\n"\ " };\r\n"\ "}\r\n"; plgOptions.sLastMacroContent=Format(sMacroTemplate,(plgOptions.lMFormat==0 || plgOptions.lMFormat==1 || plgOptions.lMFormat==3)?"JScript":"JScript",plgOptions.sLastMacroName,sDopFunc,(plgOptions.bRecPauses?sWaitFunc:""),plgOptions.sLastMacroContent); DWORD dwStop=GetTickCount(); CString sTime; sTime.Format("%.2f",double(dwStop-dwStart)/1000); int iRes=::MessageBox(NULL,_pl("Macro recorded")+"!\n"+_pl("Duration")+": "+sTime+_pl("sec")+". "+_pl("Continue")+"?",_pl("Macro successfully recorded")+"!",IDOK); if(iRes==IDOK){ SaveFile(sTargetFile,plgOptions.sLastMacroContent); if(plgOptions.bAP_Add2WK && pInter){ pInter->AddQrunFromFile(sTargetFile); } if(plgOptions.bAP_OpenInEd && pInter){ int iRes=(int)::ShellExecute(NULL,"open","notepad.exe",CString("\"")+sTargetFile+CString("\""),NULL,SW_SHOWNORMAL); } } return 1; }
int WINAPI WKPluginOptionsManager(int iAction, WKOptionsCallbackInterface* pOptionsCallback, DWORD dwParameter) { if(iAction==OM_STARTUP_ADD){ pOptionsCallback->AddListOption("ActWnds","Recording: How to replay switches between applications during macro recording","Here you can define how to record application switches, for example you can define to record keystrokes separately",_pl("Ignore switches")+"\t"+_pl("Switch active application during macro replay as recorded")+"\t"+_pl("Replay keystrokes for active application only"),0,0); pOptionsCallback->AddBoolOption("RecordPauses","Recording: record pauses between keystrokes too","",0,0); pOptionsCallback->AddListOption("MFormat","Record format","Internal format is more powerful - can record all keys and mouse actions, JScript-SendKeys format can record keystrokes only but recorded macro can be used without WireKeys at all",_pl("Internal format")+"\t"+_pl("JScript-SendKeys"),0,0); pOptionsCallback->AddNumberOption("PauseLevel","Recording: record pauses between keystrokes that are bigger than (seconds)","",3,0,100,0); pOptionsCallback->AddBoolOption("OpenInEditor","After recording: open macro in text editor","",0,0); pOptionsCallback->AddBoolOption("Add2WK","After recording: add macro to WireKeys","",TRUE,0); } if(iAction==OM_STARTUP_ADD || iAction==OM_OPTIONS_SET){ plgOptions.bRecPauses=pOptionsCallback->GetBoolOption("RecordPauses"); plgOptions.lPauseLevel=pOptionsCallback->GetNumberOption("PauseLevel"); plgOptions.bAppSwitchesRTyp=pOptionsCallback->GetListOption("ActWnds"); plgOptions.bAP_OpenInEd=pOptionsCallback->GetBoolOption("OpenInEditor"); plgOptions.bAP_Add2WK=pOptionsCallback->GetBoolOption("Add2WK"); plgOptions.lMFormat=pOptionsCallback->GetListOption("MFormat"); } if(iAction==OM_OPTIONS_GET){ pOptionsCallback->SetBoolOption("RecordPauses",plgOptions.bRecPauses); pOptionsCallback->SetNumberOption("PauseLevel",plgOptions.lPauseLevel); pOptionsCallback->SetListOption("ActWnds",plgOptions.bAppSwitchesRTyp); pOptionsCallback->SetBoolOption("OpenInEditor",plgOptions.bAP_OpenInEd); pOptionsCallback->SetBoolOption("Add2WK",plgOptions.bAP_Add2WK); pOptionsCallback->SetListOption("MFormat",plgOptions.lMFormat); } return 1; }
/*================================================= * do_import -- Read GEDCOM file to database * ifeed: [IN] output methods * fp: [I/O] GEDCOM file whence to load data *===============================================*/ static BOOLEAN do_import (IMPORT_FEEDBACK ifeed, FILE *fp) { NODE node, conv; XLAT ttm = 0; STRING msg; BOOLEAN emp; INT nindi = 0, nfam = 0, neven = 0; INT nsour = 0, nothr = 0, type, num = 0; INT totkeys = 0, totused = 0; char msgbuf[80]; BOOLEAN succeeded=FALSE; STRING str,unistr=0; ZSTR zerr=0; TABLE metadatatab = create_table_str(); STRING gdcodeset=0; INT warnings=0; /* start by assuming default */ strupdate(&gdcodeset, gedcom_codeset_in); /* rptui_init(); *//* clear ui time counter */ /* Open and validate GEDCOM file */ if ((unistr=check_file_for_unicode(fp)) && !eqstr(unistr, "UTF-8")) { msg_error(_(qSunsupuniv), unistr); goto end_import; } if (eqstr_ex(unistr, "UTF-8")) { strupdate(&gdcodeset, "UTF-8"); } if (!scan_header(fp, metadatatab, &zerr)) { msg_error(zs_str(zerr)); goto end_import; } if ((str = valueof_str(metadatatab, "GEDC.FORM"))!= NULL) { if (!eqstr(str, "LINEAGE-LINKED")) { if (!ask_yes_or_no_msg( _("This is not a lineage linked GEDCOM file.") , _("Proceed anyway?") )) goto end_import; } } if (!unistr && (str = valueof_str(metadatatab, "CHAR"))!= NULL) { /* if no BOM, use file's declared encoding if present */ strupdate(&gdcodeset, str); } /* TODO: Push this codeset question down to after the validation, where we can know if the incoming file happened to really be all ASCII */ if (!int_codeset[0]) { /* TODO: ask if user would like to adopt codeset of incoming file, if we found it */ if (!ask_yes_or_no_msg( _("No current internal codeset, so no codeset conversion can be done") , _("Proceed without codeset conversion?") )) goto end_import; } /* Warn if lossy code conversion likely */ if (gdcodeset[0] && int_codeset[0]) { if (is_lossy_conversion(gdcodeset, int_codeset)) { ZSTR zstr=zs_new(); zs_setf(zstr, _("Lossy codeset conversion (from <%s> to <%s>) likely") , gdcodeset, int_codeset); if (!ask_yes_or_no_msg( zs_str(zstr) , _("Proceed anyway?") )) goto end_import; } } /* validate */ if (ifeed && ifeed->validating_fnc) (*ifeed->validating_fnc)(); if (!validate_gedcom(ifeed, fp)) { if (ifeed && ifeed->error_invalid_fnc) (*ifeed->error_invalid_fnc)(_(qSgdnadd)); goto end_import; } warnings = validate_get_warning_count(); if (warnings) { ZSTR zstr=zs_new(); zs_setf(zstr, _pl("%d warning during import", "%d warnings during import", warnings), warnings); if (!ask_yes_or_no_msg(zs_str(zstr), _(qSproceed))) { goto end_import; } } if (gdcodeset[0] && int_codeset[0]) { retry_input_codeset: ttm = transl_get_xlat(gdcodeset, int_codeset); if (!transl_is_xlat_valid(ttm)) { ZSTR zstr=zs_new(); char csname[64]; BOOLEAN b; transl_release_xlat(ttm); ttm = 0; zs_setf(zstr, _("Cannot convert codeset (from <%s> to <%s>)") , gdcodeset, int_codeset); b = ask_for_string(zs_str(zstr) , _("Enter codeset to assume (* for none)") , csname, sizeof(csname)) && csname[0]; zs_free(&zstr); if (!b) goto end_import; if (!eqstr(csname, "*")) { strupdate(&gdcodeset, csname); goto retry_input_codeset; } } } if((num_indis() > 0) || (num_fams() > 0) || (num_sours() > 0) || (num_evens() > 0) || (num_othrs() > 0)) gd_reuse = FALSE; else if((gd_reuse = check_stdkeys())) { totused = gd_itot + gd_ftot + gd_stot + gd_etot + gd_xtot; totkeys = gd_imax + gd_fmax + gd_smax + gd_emax + gd_xmax; if((totkeys-totused) > 0) { INT delkeys = totkeys-totused; snprintf(msgbuf, sizeof(msgbuf) , _pl("Using original keys, %d deleted record will be in the database." , "Using original keys, %d deleted records will be in the database." , delkeys) , delkeys ); } else strcpy(msgbuf, " "); gd_reuse = ask_yes_or_no_msg(msgbuf, _(qScfoldk)); /* TODO: why were these here ? touchwin(uiw_win(stdout_win)); wrefresh(uiw_win(stdout_win)); */ } /* start loading the file */ rewind(fp); /* test for read-only database here */ if(readonly) { if (ifeed && ifeed->error_readonly_fnc) (*ifeed->error_readonly_fnc)(); goto end_import; } /* tell user we are beginning real part of import */ if (ifeed && ifeed->beginning_import_fnc) { if(gd_reuse) (*ifeed->beginning_import_fnc)(_(qSdboldk)); else (*ifeed->beginning_import_fnc)(_(qSdbnewk)); } /* Add records to database */ node = convert_first_fp_to_node(fp, FALSE, ttm, &msg, &emp); while (node) { if (!(conv = node_to_node(node, &type))) { free_nodes(node); node = next_fp_to_node(fp, FALSE, ttm, &msg, &emp); continue; } switch (type) { case INDI_REC: num = ++nindi; break; case FAM_REC: num = ++nfam; break; case EVEN_REC: num = ++neven; break; case SOUR_REC: num = ++nsour; break; case OTHR_REC: num = ++nothr; break; default: FATAL(); } restore_record(conv, type, num); if (ifeed && ifeed->added_rec_fnc) ifeed->added_rec_fnc(nxref(conv)[1], ntag(conv), num); free_nodes(node); node = next_fp_to_node(fp, FALSE, ttm, &msg, &emp); } if (msg) { msg_error(msg); } if(gd_reuse && ((totkeys - totused) > 0)) { if (ifeed && ifeed->adding_unused_keys_fnc) (*ifeed->adding_unused_keys_fnc)(); addmissingkeys(INDI_REC); addmissingkeys(FAM_REC); addmissingkeys(EVEN_REC); addmissingkeys(SOUR_REC); addmissingkeys(OTHR_REC); } succeeded = TRUE; end_import: validate_end_import(); zs_free(&zerr); destroy_table(metadatatab); strfree(&gdcodeset); return succeeded; }