Beispiel #1
0
void ext_init(char *mode, struct db_main *db)
{
	if (db!= NULL && db->format != NULL) {
		ext_cipher_limit = maxlen = db->format->params.plaintext_length;
		return;
	}
	else {
		ext_cipher_limit = options.length;
	}

	if (!(ext_source = cfg_get_list(SECTION_EXT, mode))) {
#ifdef HAVE_MPI
		if (mpi_id == 0)
#endif
		fprintf(stderr, "Unknown external mode: %s\n", mode);
		error();
	}

	if (c_compile(ext_getchar, ext_rewind, &ext_globals)) {
		if (!ext_line) ext_line = ext_source->tail;

#ifdef HAVE_MPI
		if (mpi_id == 0)
#endif
		fprintf(stderr, "Compiler error in %s at line %d: %s\n",
			ext_line->cfg_name, ext_line->number,
			c_errors[c_errno]);
		error();
	}

	ext_word[0] = 0;
	c_execute(c_lookup("init"));

	f_generate = c_lookup("generate");
	f_filter = c_lookup("filter");

	if ((ext_flags & EXT_REQ_GENERATE) && !f_generate) {
#ifdef HAVE_MPI
		if (mpi_id == 0)
#endif
		fprintf(stderr, "No generate() for external mode: %s\n", mode);
		error();
	}
	if ((ext_flags & EXT_REQ_FILTER) && !f_filter) {
#ifdef HAVE_MPI
		if (mpi_id == 0)
#endif
		fprintf(stderr, "No filter() for external mode: %s\n", mode);
		error();
	}
	if ((ext_flags & (EXT_USES_GENERATE | EXT_USES_FILTER)) ==
	    EXT_USES_FILTER && f_generate)
#ifdef HAVE_MPI
	if (mpi_id == 0)
#endif
		fprintf(stderr, "Warning: external mode defines generate(), "
		    "but is only used for filter()\n");

	ext_mode = mode;
}
Beispiel #2
0
/*
 * NAME:	kfun->old_compile_object()
 * DESCRIPTION:	compile an object
 */
int kf_old_compile_object(frame *f)
{
    char file[STRINGSZ];
    object *obj;

    if (path_string(file, f->sp->u.string->text,
		    f->sp->u.string->len) == (char *) NULL) {
	return 1;
    }
    obj = o_find(file, OACC_MODIFY);
    if (obj != (object *) NULL) {
	if (!(obj->flags & O_MASTER)) {
	    error("Cannot recompile cloned object");
	}
	if (O_UPGRADING(obj)) {
	    error("Object is already being upgraded");
	}
	if (O_INHERITED(obj)) {
	    error("Cannot recompile inherited object");
	}
    }
    obj = c_compile(f, file, obj, (string **) NULL, 0,
		    (OBJR(f->oindex)->flags & O_DRIVER) &&
		    strcmp(d_get_strconst(f->p_ctrl, f->func->inherit,
					  f->func->index)->text,
			   "inherit_program") == 0);
    str_del(f->sp->u.string);
    PUT_OBJVAL(f->sp, obj);

    return 0;
}
Beispiel #3
0
int ext_has_function(char *mode, char *function)
{
	if (!(ext_source = cfg_get_list(SECTION_EXT, mode))) {
		fprintf(stderr, "Unknown external mode: %s\n", mode);
		error();
	}
	if (c_compile(ext_getchar, ext_rewind, &ext_globals)) {
		if (!ext_line) ext_line = ext_source->tail;

		fprintf(stderr, "Compiler error in %s at line %d: %s\n",
			ext_line->cfg_name, ext_line->number,
			c_errors[c_errno]);
		error();
	}
	return (c_lookup(function) != NULL);
}
Beispiel #4
0
void ext_init(char *mode)
{
	if (!(ext_source = cfg_get_list(SECTION_EXT, mode))) {
		fprintf(stderr, "Unknown external mode: %s\n", mode);
		error();
	}

	if (c_compile(ext_getchar, ext_rewind, &ext_globals)) {
		if (!ext_line) ext_line = ext_source->tail;

		fprintf(stderr, "Compiler error in %s at line %d: %s\n",
			cfg_name, ext_line->number,
			c_errors[c_errno]);
		error();
	}

	ext_word[0] = 0;
	c_execute(c_lookup("init"));

	f_generate = c_lookup("generate");
	f_filter = c_lookup("filter");

	ext_mode = mode;
}
Beispiel #5
0
void ext_init(char *mode, struct db_main *db)
{
	if (db != NULL && db->format != NULL) {
		/* This is second time we are called, just update max length */
		ext_cipher_limit = maxlen =
			db->format->params.plaintext_length - mask_add_len;
		if (mask_num_qw > 1) {
			ext_cipher_limit /= mask_num_qw;
			maxlen /= mask_num_qw;
		}
		return;
	} else
		ext_cipher_limit = options.length;

	ext_time = (int) time(NULL);

	ext_maxlen = options.force_maxlength;
	if (options.force_minlength > 0)
		ext_minlen = options.force_minlength;
	else
		ext_minlen = 0;

	if (!(ext_source = cfg_get_list(SECTION_EXT, mode))) {
		if (john_main_process)
			fprintf(stderr, "Unknown external mode: %s\n", mode);
		error();
	}

	if (c_compile(ext_getchar, ext_rewind, &ext_globals)) {
		if (!ext_line) ext_line = ext_source->tail;

		if (john_main_process)
			fprintf(stderr,
			    "Compiler error in %s at line %d: %s\n",
			    cfg_name, ext_line->number,
			    c_errors[c_errno]);
		error();
	}

	ext_word[0] = 0;
	c_execute(c_lookup("init"));

	f_generate = c_lookup("generate");
	f_filter = c_lookup("filter");

	if ((ext_flags & EXT_REQ_GENERATE) && !f_generate) {
		if (john_main_process)
			fprintf(stderr,
			    "No generate() for external mode: %s\n", mode);
		error();
	}
	if ((ext_flags & EXT_REQ_GENERATE) && !c_lookup("restore")) {
		if (ext_flags & EXT_REQ_RESTORE) {
			if (john_main_process)
				fprintf(stderr,
				        "No restore() for external mode: %s\n",
				        mode);
			error();
		} else if (john_main_process)
				fprintf(stderr,
				        "Warning: external mode '%s' can't be"
				        " resumed if aborted\n", mode);
	}
	if ((ext_flags & EXT_REQ_FILTER) && !f_filter) {
		if (john_main_process)
			fprintf(stderr,
			    "No filter() for external mode: %s\n", mode);
		error();
	}
	if (john_main_process &&
	    (ext_flags & (EXT_USES_GENERATE | EXT_USES_FILTER)) ==
	    EXT_USES_FILTER && f_generate)
	if (john_main_process)
		fprintf(stderr, "Warning: external mode defines generate(), "
		    "but is only used for filter()\n");

	ext_mode = mode;
}
Beispiel #6
0
void ext_init(char *mode, struct db_main *db)
{
        if (!strncmp(mode, "gijohn", 5)) gijohnmodule = 1;
	if (db) {
		maxlen = db->format->params.plaintext_length;
		return;
	}

         if (!gijohnmodule) {
        if (!(ext_source = cfg_get_list(SECTION_EXT, mode))) {
#ifdef HAVE_MPI
            if (mpi_id == 0)
#endif
                fprintf(stderr, "Unknown external mode: %s\n", mode);
            error();
        }

        if (c_compile(ext_getchar, ext_rewind, &ext_globals)) {
            if (!ext_line) ext_line = ext_source->tail;

#ifdef HAVE_MPI
            if (mpi_id == 0)
#endif
                fprintf(stderr, "Compiler error in %s at line %d: %s\n",
                    ext_line->cfg_name, ext_line->number,
                    c_errors[c_errno]);
            error();
        }
        }
	ext_word[0] = 0;
	c_execute(c_lookup("init"));
        if (gijohnmodule)
	{
		sig_done();
		getthenewpiece();
		init_external(xmlxml.keymap.charset, strlen(xmlxml.keymap.charset), 
			xmlxml.keymap.firstword, xmlxml.keymap.lastword);
		sig_init();
        }

	f_generate = c_lookup("generate");
	f_filter = c_lookup("filter");
        
        if (gijohnmodule)
	{
            ext_mode = mode;
            return;
        }

	if ((ext_flags & EXT_REQ_GENERATE) && !f_generate) {
#ifdef HAVE_MPI
		if (mpi_id == 0)
#endif
		fprintf(stderr, "No generate() for external mode: %s\n", mode);
		error();
	}
	if ((ext_flags & EXT_REQ_FILTER) && !f_filter) {
#ifdef HAVE_MPI
		if (mpi_id == 0)
#endif
		fprintf(stderr, "No filter() for external mode: %s\n", mode);
		error();
	}
	if ((ext_flags & (EXT_USES_GENERATE | EXT_USES_FILTER)) ==
	    EXT_USES_FILTER && f_generate)
#ifdef HAVE_MPI
	if (mpi_id == 0)
#endif
		fprintf(stderr, "Warning: external mode defines generate(), "
		    "but is only used for filter()\n");

	ext_mode = mode;
}