Beispiel #1
0
void            free_instr_and(s_instr_and      *elmt)
{
  if (elmt)
  {
      free_instr(elmt->instr_l);
      free_instr(elmt->instr_r);
      mfree(elmt);
  }
}
Beispiel #2
0
int main(int argc, char *argv[])
{
    int ret;
    FILE *fp;
    Instruction start = {
        .instruction = I_NOP,
        .next_instruction = NULL,
        .alt_instruction = NULL
    };
    Variables global_vars;

    if (argc != 2 || (fp = fopen(argv[1], "rb")) == NULL)
    {
		debug("Cannot open file.\n");
        return print_error(INTERNAL_ERROR);
	}

    variables_init(&global_vars);

	debug("calling PARSE\n");
    if ((ret = parse(fp, &start, &global_vars)) == SUCCESS)
    {
		debug("PARSE ok\n\n");

#ifdef DEBUG
		debug("\n========================PRINTING GLOBAL VARIABLES==========================\n");
		variables_print(&global_vars);
		fprintf(stderr, "\n===========================================================================\n\n");
		debug("\n===========================PRINTING INSTRUCTION============================\n");
		debug_print_instruction(&start);
		fprintf(stderr, "\n===========================================================================\n\n");
#endif

		debug("calling INTERPRETER\n");
		if ((ret = interpret(&start, &global_vars)) == SUCCESS)
		{
			debug("INTERPRETER OK\n");
		}
		else
		{
			debug("INTERPRETER: NOT success return code\n");
		}
	}
	else
	{
		debug("PARSER: NOT success return code\n");
	}

    fclose(fp);
    variables_free(&global_vars);
    free_instr();
    cstr_gc_free_all();

	debug("MAIN RETURN CODE is: [ %d ]\n", ret);
    return print_error(ret);
}
Beispiel #3
0
/**
** @brief               Frees all shell functions.
** @param funcs         Input functions.
** @return              void
*/
static inline void      free_functions(s_masso          *funcs)
{
    int                   i = 0;
    int                   size = 0;
    s_masso_data          *array = NULL;

    array = funcs->array;
    size = funcs->size;
    for (i = 0; i < size; i++)
        free_instr(array[i].value);

    masso_free(funcs);
}