Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
Archivo: main.c Proyecto: bogde/OpenCBM
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);
}