int main(int argc, char **argv) { initializeConfiguratorFromCommandLineParameters(argc, argv); log(LOG_DEBUG, "MasterIndex", "Starting application."); for (int i = 1; i < argc; i++) processParameter(argv[i]); char *workDir = "./"; char dummy[MAX_CONFIG_VALUE_LENGTH]; if (!getConfigurationValue("LOG_FILE", dummy)) { log(LOG_ERROR, "MasterIndex", "Configuration variable \"LOG_FILE\" not found. Make sure Wumpus finds your configuration file."); return 1; } MasterIndex *mi = new MasterIndex(workDir); if (!mi->startupOk) { log(LOG_ERROR, "MasterIndex", "Unable to start MasterIndex. Check whether all directory permissions and have been set correctly and whether an fschange-like notification service is running."); delete mi; return 1; } // set whole process group to low priority pid_t processGroup = getpgrp(); setpriority(PRIO_PGRP, processGroup, +3); char line[1024]; printf("Enter \"QUIT\" to stop the MasterIndex.\n"); while (fgets(line, 1023, stdin) != NULL) { bool emptyLine = true; for (int i = 0; line[i] != 0; i++) if ((line[i] < 0) || (line[i] > ' ')) emptyLine = false; if (emptyLine) continue; if (line[strlen(line) - 1] == '\n') line[strlen(line) - 1] = 0; if (strcasecmp(line, "QUIT") == 0) break; Query *q = new Query(mi, line, geteuid()); if (q->parse()) { char l2[65536]; while (q->getNextLine(l2)) printf("%s\n", l2); } int status; q->getStatus(&status, line); printf("@%d-%s\n", status, line); delete q; } delete mi; printAllocations(); return 0; } // end of main()
ParameterRuleset::ParameterRuleset(Selector* selector): Ruleset(selector) { Selector* newselector = new Selector(); rest = ""; unlimitedArguments = false; while (!selector->empty() && selector->front()->type != Token::PAREN_OPEN) { newselector->push(selector->shift()); } if (selector->empty()) { throw new ParseException(*selector->toString(), "matching parentheses."); } delete selector->shift(); while (newselector->back()->type == Token::WHITESPACE) delete newselector->pop(); setSelector(newselector); while (processParameter(selector)) { } if (selector->size() > 3 && selector->front()->str == "." && selector->at(1)->str == "." && selector->at(2)->str == ".") { unlimitedArguments = true; delete selector->shift(); delete selector->shift(); delete selector->shift(); } if (selector->front()->type != Token::PAREN_CLOSED) { throw new ParseException(*selector->toString(), "matching parentheses."); } delete selector; }
static int main_testtransfer(int argc, char **argv) { /* CBM_FILE fd; */ unsigned char compare_buffer[0x8000]; unsigned char buffer[0x8000]; unsigned int error = 0; int rv; #if DBG DbgFlags = 0x0; #endif printf(" libtransfer sample: " __DATE__ " " __TIME__ "\n"); if (argc > 1) { processParameter(argc, argv); } rv = cbm_driver_open(&fd, 0); if(rv != 0) { DBG_ERROR((DBG_PREFIX "cbm_driver_open() failed!")); return 1; } DBG_PRINT((DBG_PREFIX "before install")); libopencbmtransfer_install(fd, drive); memset(buffer, 0, sizeof(buffer)); if (compare) read_from_file(compare_buffer, sizeof(compare_buffer), "rom.image"); DBG_PRINT((DBG_PREFIX "before read_mem")); #if 0 transferlength = 0x100; printf("write $0300\n"); libopencbmtransfer_write_mem(fd, drive, compare_buffer, 0x300, transferlength); printf("read $0300\n"); libopencbmtransfer_read_mem(fd, drive, buffer, 0x300, transferlength); printf("compare\n"); if (memcmp(buffer, compare_buffer, transferlength) != 0) { printf("differing!\n"); } #else while (count--) { printf("read: %i, error = %u: \n", count+1, error); libopencbmtransfer_read_mem(fd, drive, buffer, 0x8000, transferlength); if (compare) { if (memcmp(buffer, compare_buffer, transferlength) != 0) { char filename[128]; int n; printf("\n\n***** ERROR COMPARING DATA! *****\n\n"); ++error; strcpy(filename, "image.err."); n = strlen(filename); if (error > 9999) filename[n++] = ((error / 10000) % 10) + '0'; if (error > 999) filename[n++] = ((error / 1000) % 10) + '0'; if (error > 99) filename[n++] = ((error / 100) % 10) + '0'; if (error > 9) filename[n++] = ((error / 10) % 10) + '0'; if (error > 0) filename[n++] = ((error / 1) % 10) + '0'; filename[n] = 0; write_to_file(buffer, transferlength, filename); } else { printf(" compare success\n"); } } printf("write: %i, error = %u: \n", count+1, error); libopencbmtransfer_write_mem(fd, drive, compare_buffer, 0x8000, transferlength); } #endif if (outputdump) DBG_MEMDUMP("8000:", buffer, transferlength + 0x10); if (writedumpfile) write_to_file(buffer, transferlength, "image.bin"); DBG_PRINT((DBG_PREFIX "before remove")); libopencbmtransfer_remove(fd, drive); cbm_driver_close(fd); FUNC_LEAVE_INT(0); }