void Error(uint32_t errorNumber, std::string errorString) { if ((errorNumber != 0) && (errorNumber < (static_cast<uint32_t>(ErrorNumber::ErrorCount)))) { Ui::ErrorWindow & errorWindow(Ui::ErrorWindow::Instance()); errorWindow.SetError(true); errorWindow.SetLine("E%d: %s", errorNumber, errorString.c_str()); } }
void Save::run() { std::ofstream objetfichier; std::string name; ObjectType t; int iter = 1; int i = 1; name = "../maps/"; name = name + this->_name + ".map"; if (isExisting(this->_name) == false) { if (this->_list.size() != 0) { objetfichier.open(name.data(), std::ios::app); for (std::map<int, Object *>::iterator it = this->_list.begin(); it != this->_list.end(); ++it) { t = (*it).second->getType(); if (t == BONUS) t = BONUSRANDOM; else if (t == BONUSCLAYMORE) t = BONUSRANDOM; std::string s = intToString(t); objetfichier.write(reinterpret_cast<const char *>(s.data()), s.size()); if (iter == this->_size) { i++; iter = 0; objetfichier.write(reinterpret_cast<const char *>("\n"), 1); } else objetfichier.write(reinterpret_cast<const char *>(" "), 1); iter++; } objetfichier.close(); errorWindow("Your map is now saved", "information"); } else errorWindow("Your map is not generated", "Save error"); } }
Intervall parse(string input){ Intervall result = Intervall(NAN); //string term((inputIntervall->text()).toStdString()); string term=clearString(input);//Leerzeichen in term löschen if(term!=""){ if(validChars(term)==false){//Überprüfung, ob term ungültige Zeichen enthält errorWindow("Nonvalid character!"); return Intervall(NAN); }else if(brackets(term)==false){//Überprüfung, ob die Anzahl von "(" mit ")" in term übereinstimmt errorWindow("Can't match delimiters!"); return Intervall(NAN); }else if(intervalBrackets(term)==false){//Überprüfung, ob die Anzahl von "[" mit "]" in term übereinstimmt errorWindow("Can't match interval delimiters!"); return Intervall(NAN); }else { result=parseTermOfIntervals(term);//term parsen -> result } } return result; }
/******************************************************************************* * Presenta una ventana con un mensaje de error protegiendo con semaforos * * * * Parámetros: * * -msg: Mensaje a presentar * -mainthread: hilo principal * * Retorno: * * -void * * * *******************************************************************************/ void interfaceErrorWindow(char *msg, int main_thread){ if(!main_thread){ gdk_threads_enter(); } errorWindow(msg); if(!main_thread){ gdk_threads_leave(); } }
bool Save::isExisting(std::string &name) { std::string error; DIR *d; struct dirent *dr; if ((d = opendir("../maps")) == NULL) return (true); while ((dr = readdir(d)) != NULL) if (dr->d_name == (name + ".map")) { error = "file "; error += name; error += " already exists"; errorWindow(error, "error"); return (true); } closedir(d); return (false); }
int chooseKeyboard(struct loaderData_s * loaderData, char ** kbdtypep) { int num = -1; int rc; gzFile f; struct kmapHeader hdr; struct kmapInfo * infoTable; struct langInfo * languages; int numLanguages; char ** kbds; char buf[16384]; /* I hope this is big enough */ int i; char * defkbd = loaderData->kbd ? loaderData->kbd : NULL; char *lang; #if defined(__s390__) || defined(__s390x__) return LOADER_NOOP; #endif if (FL_SERIAL (flags) || FL_VIRTPCONSOLE(flags)) return LOADER_NOOP; numLanguages = getLangInfo(&languages); lang = getenv("LANG"); if (!lang) lang = loaderData->lang; if (!defkbd && lang) { for (i = 0; i < numLanguages; i++) { if (!strncmp(languages[i].lc_all, lang, 2)) { defkbd = languages[i].keyboard; break; } } } if (!defkbd) defkbd = "us"; f = gzopen("/etc/keymaps.gz", "r"); if (!f) { errorWindow("cannot open /etc/keymaps.gz: %s"); return LOADER_ERROR; } if (gzread(f, &hdr, sizeof(hdr)) != sizeof(hdr)) { errorWindow("failed to read keymaps header: %s"); gzclose(f); return LOADER_ERROR; } logMessage(INFO, "%d keymaps are available", hdr.numEntries); i = hdr.numEntries * sizeof(*infoTable); infoTable = alloca(i); if (gzread(f, infoTable, i) != i) { errorWindow("failed to read keymap information: %s"); gzclose(f); return LOADER_ERROR; } if (num == -1 ) { kbds = alloca(sizeof(*kbds) * (hdr.numEntries + 1)); for (i = 0; i < hdr.numEntries; i++) { kbds[i] = infoTable[i].name; } kbds[i] = NULL; qsort(kbds, i, sizeof(*kbds), simpleStringCmp); for (i = 0; i < hdr.numEntries; i++) if (!strcmp(kbds[i], defkbd)) num = i; rc = newtWinMenu(_("Keyboard Type"), _("What type of keyboard do you have?"), 40, 5, 5, 8, kbds, &num, _("OK"), _("Back"), NULL); if (rc == 2) return LOADER_BACK; /* num needs to index the right keyboard infoTable */ for (i = 0; i < hdr.numEntries; i++) if (!strcmp(kbds[num], infoTable[i].name)) break; num = i; } rc = 0; for (i = 0; i < num; i++) { if (gzread(f, buf, infoTable[i].size) != infoTable[i].size) { logMessage(ERROR, "error reading %d bytes from file: %m", infoTable[i].size); gzclose(f); rc = LOADER_ERROR; } } if (!rc) rc = loadKeymap(f); /* normalize the error condition */ /* MSWFIXME - do we want to warn the user that setting the keyboard didn't work? */ if (rc != 0) rc = LOADER_ERROR; else gzclose(f); loaderData->kbd = strdup(infoTable[num].name); return rc; }
double parseNumbers(string input){ string::iterator it; it = input.begin(); double result=0; while(*it>='0' && *it<='9'){ switch(*it){ case '0': result *= 10; break; case '1': result *= 10; result += 1; break; case '2': result *= 10; result += 2; break; case '3': result *= 10; result += 3; break; case '4': result *= 10; result += 4; break; case '5': result *= 10; result += 5; break; case '6': result *= 10; result += 6; break; case '7': result *= 10; result += 7; break; case '8': result *= 10; result += 8; break; case '9': result *= 10; result += 9; break; } it++; } if(*it=='.'){ it++; int stelle = -1; while(*it>='0' && *it<='9'){ switch(*it){ case '0': break; case '1': result += 1*pow(10,stelle); break; case '2': result += 2*pow(10,stelle); break; case '3': result += 3*pow(10,stelle); break; case '4': result += 4*pow(10,stelle); break; case '5': result += 5*pow(10,stelle); break; case '6': result += 6*pow(10,stelle); break; case '7': result += 7*pow(10,stelle); break; case '8': result += 8*pow(10,stelle); break; case '9': result += 9*pow(10,stelle); break; } it++; stelle--; } } if(it!=input.end()){ errorWindow("Couldn't read Number"); return NAN; } return result; }
Intervall parseTermOfIntervals(string input){ string::iterator it; int brackets = 0; int closedBrackets = 0; if(input=="") return 0; for(it=input.end();it>=input.begin();it--){ if(*it=='(') brackets++; if(*it==')') brackets--; if(*it=='[') closedBrackets++; if(*it==']') closedBrackets--; if(*it=='|' && brackets==0 && closedBrackets==0){ if(it==input.begin()){ //Bin‰rem Operator fehlt Operand errorWindow("Operand missing!"); return Intervall(NAN); } if(it+1==input.end()){ //Bin‰rem Operator fehlt Operand errorWindow("Operand missing!"); return Intervall(NAN); } string input1(input.begin(),it); string input2(it+1,input.end()); Intervall result = parseTermOfIntervals(input1)||parseTermOfIntervals(input2); if(result.getInf()!=result.getInf()){ errorWindow("Vereinigung disjunkter Intervalle!"); } return result; } } for(it=input.end();it>=input.begin();it--){ if(*it=='(') brackets++; if(*it==')') brackets--; if(*it=='[') closedBrackets++; if(*it==']') closedBrackets--; if(*it=='&' && brackets==0 && closedBrackets==0){ if(it==input.begin()){ //Bin‰rem Operator fehlt Operand errorWindow("Operand missing!"); return Intervall(NAN); } if(it+1==input.end()){ //Bin‰rem Operator fehlt Operand errorWindow("Operand missing!"); return Intervall(NAN); } string input1(input.begin(),it); string input2(it+1,input.end()); Intervall result = parseTermOfIntervals(input1)&&parseTermOfIntervals(input2); if(result.getInf()!=result.getInf()){ errorWindow("Schnitt disjunkter Intervalle!"); } return result; } } for(it=input.end();it>=input.begin();it--){ if(*it=='(') brackets++; if(*it==')') brackets--; if(*it=='[') closedBrackets++; if(*it==']') closedBrackets--; if(*it=='+' && brackets==0 && closedBrackets==0 && *(it-1)!='/' && *(it-1)!='*' && *(it-1)!='-' && *(it-1)!='+'){ if(it==input.begin()){ string input2(it+1,input.end()); return parseTermOfIntervals(input2); } if(it+1==input.end()){ //Bin‰rem Operator fehlt Operand// errorWindow("Operand missing!"); return Intervall(NAN); } string input1(input.begin(),it); string input2(it+1,input.end()); return parseTermOfIntervals(input1)+parseTermOfIntervals(input2); } if(*it=='-' && brackets==0 && closedBrackets==0 && *(it-1)!='/' && *(it-1)!='*' && *(it-1)!='-' && *(it-1)!='+'){ if(it==input.begin()){ string input2(it+1,input.end()); return Intervall(0)-parseTermOfIntervals(input2); } if(it+1==input.end()){ //Bin‰rem Operator fehlt Operand// errorWindow("Operand missing!"); return Intervall(NAN); } string input1(input.begin(),it); string input2(it+1,input.end()); return parseTermOfIntervals(input1)-parseTermOfIntervals(input2); } } it=input.begin(); if(*it=='('){ brackets++; while(brackets>0){ it++; if(*it=='(') brackets++; if(*it==')') brackets--; } it++; if(it==input.end()){ string input1(input.begin()+1,input.end()-1); return parseTermOfIntervals(input1); } if(*it=='*'){ string input1(input.begin()+1,it-1); if(it+1==input.end()){ //Bin‰rem Operator fehlt Operand// errorWindow("Operand missing!"); return Intervall(NAN); } string input2(it+1,input.end()); return parseTermOfIntervals(input1)*parseTermOfIntervals(input2); } if(*it=='/'){ string input1(input.begin()+1,it-1); if(it+1==input.end()){ //Bin‰rem Operator fehlt Operand// errorWindow("Operand missing!"); return Intervall(NAN); } string input2(it+1,input.end()); Intervall result2 = parseTermOfIntervals(input2); if(result2.getInf()<=0 && result2.getSup()>=0){ //Teilen durch 0! errorWindow("Division by zero!"); return Intervall(NAN); } return parseTermOfIntervals(input1)/result2; } } if(*it=='*' || *it=='/'){ //Bin‰rem Operator fehlt Operand// errorWindow("Operand missing!"); return Intervall(NAN); } closedBrackets = 0; if(*it=='['){ for(;it<input.end();it++){ if(*it=='[') closedBrackets++; if(*it==']') closedBrackets--; if(*it=='*' && closedBrackets==0){ string input1(input.begin(),it); string input2(it+1,input.end()); return parseIntervals(input1)*parseTermOfIntervals(input2); } if(*it=='/' && closedBrackets==0){ string input1(input.begin(),it); string input2(it+1,input.end()); Intervall result2 = parseTermOfIntervals(input2); if(result2.getInf()<=0 && result2.getSup()>=0){ //Teilen durch 0! errorWindow("Division by zero!"); return Intervall(NAN); } return parseIntervals(input1)/result2; } } return parseIntervals(input); } size_t found1 = input.find_first_of("*"); if(found1!=string::npos){ string input1 = input.substr(0,found1); string input2 = input.substr(found1+1); return parseNumbers(input1)*parseTermOfIntervals(input2); } size_t found2 = input.find_first_of("/"); if(found2!=string::npos){ string input1 = input.substr(0,found2); string input2 = input.substr(found2+1); Intervall result2 = parseTermOfIntervals(input2); if(result2.getInf()<=0 && result2.getSup()>=0){ //Teilen durch 0! errorWindow("Division by zero!"); return Intervall(NAN); } return parseNumbers(input1)/result2; } if(found1==string::npos && found2==string::npos){ return parseNumbers(input); } errorWindow("42: "+input); return Intervall(NAN); }
double parseTermOfNumbers(string input){ string::iterator it; int brackets = 0; if(input=="") return 0; for(it=input.end();it>=input.begin();it--){ if(*it=='(') brackets++; if(*it==')') brackets--; if(*it=='+' && brackets==0 && *(it-1)!='/' && *(it-1)!='*' && *(it-1)!='-' && *(it-1)!='+' && *(it-1)!='|' && *(it-1)!='&'){ if(it==input.begin()){ string input2(it+1,input.end()); return parseTermOfNumbers(input2); } if(it+1==input.end()){ //Bin‰rem Operator fehlt Operand// errorWindow("Operand missing!"); return double(NAN); } string input1(input.begin(),it); string input2(it+1,input.end()); return parseTermOfNumbers(input1)+parseTermOfNumbers(input2); } if(*it=='-' && brackets==0 && *(it-1)!='/' && *(it-1)!='*' && *(it-1)!='-' && *(it-1)!='+' && *(it-1)!='|' && *(it-1)!='&'){ if(it==input.begin()){ string input2(it+1,input.end()); return -parseTermOfNumbers(input2); } if(it+1==input.end()){ //Bin‰rem Operator fehlt Operand// errorWindow("Operand missing!"); return double(NAN); } string input1(input.begin(),it); string input2(it+1,input.end()); return parseTermOfNumbers(input1)-parseTermOfNumbers(input2); } } it=input.begin(); if(*it=='('){ brackets++; while(brackets>0){ it++; if(*it=='(') brackets++; if(*it==')') brackets--; } it++; if(it==input.end()){ string input1(input.begin()+1,input.end()-1); return parseTermOfNumbers(input1); } if(*it=='*'){ string input1(input.begin()+1,it-1); if(it+1==input.end()){ //Bin‰rem Operator fehlt Operand// errorWindow("Operand missing!"); return double(NAN); } string input2(it+1,input.end()); return parseTermOfNumbers(input1)*parseTermOfNumbers(input2); } if(*it=='/'){ string input1(input.begin()+1,it-1); if(it+1==input.end()){ //Bin‰rem Operator fehlt Operand// errorWindow("Operand missing!"); return double(NAN); } string input2(it+1,input.end()); double result2 = parseTermOfNumbers(input2); if(result2==0){ //Teilen durch 0! errorWindow("Division by zero!"); return double(NAN); } return parseTermOfNumbers(input1)/result2; } } if(*it=='*' || *it=='/'){ //Bin‰rem Operator fehlt Operand// errorWindow("Operand missing!"); return double(NAN); } size_t found1 = input.find_first_of("*"); if(found1!=string::npos){ string input1 = input.substr(0,found1); string input2 = input.substr(found1+1); return parseNumbers(input1)*parseTermOfNumbers(input2); } size_t found2 = input.find_first_of("/"); if(found2!=string::npos){ string input1 = input.substr(0,found2); string input2 = input.substr(found2+1); double result2 = parseTermOfNumbers(input2); if(result2==0){ //Teilen durch 0! errorWindow("Division by zero!"); return double(NAN); } return parseNumbers(input1)/result2; } if(found1==string::npos && found2==string::npos){ return parseNumbers(input); } errorWindow("42!"); return double(NAN); }
void connectToServer(const char *server, const char* port) { char *nick = getApodo(); char *user = getNombre(); char *name = getNombreReal(); int sock; const char *err; char addr_str[100]; int retval; struct serv_info serv; if (!server || strlen(server) == 0) { errorText("Error: servidor inválido."); return; } if (!port || strlen(port) == 0) { errorText("Error: puerto inválido."); return; } if (!nick || !user || !name || strlen(nick) == 0 || strlen(user) == 0 || strlen(name) == 0) { errorWindow("Rellene los datos de nombre/usuario/apodo"); return; } if(client->connected) disconnectClient(NULL); messageText("Conectando con %s...", server); retval = client_connect_to(server, port, addr_str, 100); if (retval == ERR_SYS) err = strerror(errno); else if (retval == ERR_AIR) err = "no se ha podido resolver la dirección"; else if (retval == ERR_NOTFOUND) err = "no se ha podido conectar."; else err = "error desconocido."; if (retval <= 0) { errorText("Error resolviendo %s: %s", server, err); return; } sock = retval; if (send_message(rcv_sockcomm, &sock, sizeof(int)) == ERR_SOCK) { errorText("Error al configurar la nueva conexión: %s", strerror(errno)); close(sock); return; } irc_send_message(snd_qid, sock, "NICK %s", getApodo()); irc_send_message(snd_qid, sock, "USER %s %s %s :%s", getNombre(), "0", "*", getNombreReal()); client->connected = 1; strncpy(client->nick, nick, MAX_NICK_LEN); client->serv_sock = sock; setUserConnectionState(TRUE); strncpy(serv.servname, server, SERV_NAMELEN); strncpy(serv.port, port, MAX_PORT_LEN); serv_save_connection(&serv); client->connected = 1; messageText("Conectado a %s", addr_str); saveUserSettings(nick, user, name); }
inline void fatalErrorWindow(const char* msg) { errorWindow(msg); exit(1); }